1、幾乎所有的程序都要切換到內核態運行再返回用戶態,用中斷完成的,因為在內核下封裝了一些東西,用戶態下只是傳入某些參數后調用內核態下的函數罷了,
2、進程有三態(執行態,就緒態,阻塞態),cpu任何時刻都只有一個進程在執行,so從用戶態切換到內核態時,用戶態下的進程就處于阻塞或就緒態了,至于從用戶態切換到內核態執行哪個函數那就看你在用戶態下執行的是什么函數了,比如在用戶態下的lseek在內核下就是llseek了,不一樣的。
3、這問題就是linux的內存管理了,這里就得提到三種地址(邏輯地址、線性地址、物理地址),這里我們提到的4G地址是邏輯地址,不是我們實際的物理地址,linux中一個進程用戶占0-3G對應的內核占3G-4G部分
說得不是很清楚,這是比較復雜的內容,需要從頭看起,單就這幾個問題是不能搞懂linux的,最好還是系統的學習,不斷的重復
2、進程有三態(執行態,就緒態,阻塞態),cpu任何時刻都只有一個進程在執行,so從用戶態切換到內核態時,用戶態下的進程就處于阻塞或就緒態了,至于從用戶態切換到內核態執行哪個函數那就看你在用戶態下執行的是什么函數了,比如在用戶態下的lseek在內核下就是llseek了,不一樣的。
3、這問題就是linux的內存管理了,這里就得提到三種地址(邏輯地址、線性地址、物理地址),這里我們提到的4G地址是邏輯地址,不是我們實際的物理地址,linux中一個進程用戶占0-3G對應的內核占3G-4G部分
說得不是很清楚,這是比較復雜的內容,需要從頭看起,單就這幾個問題是不能搞懂linux的,最好還是系統的學習,不斷的重復