現代操作系統(tǒng)采用虛擬地址空間,一般的32位操作系統(tǒng),虛擬地址空間為4G(2的32次方)。操作系統(tǒng)的核心是內核,獨立于應用程序,可以訪問受保護的內存空間和底層硬件設備。 為了保證用戶不能操作內核,保證內核的安全,操作系統(tǒng)將虛擬地址空間劃分為兩部分。 一部分為內核空間,一部分為用戶空間。 針對linux系統(tǒng)而言,將最高的1G字節(jié)劃分供內核使用,稱為內核空間。將較低的3G字節(jié),供各個進程使用,稱為用戶空間。 每個進程可以通過系統(tǒng)調用進入內核。因此,Linux內核供系統(tǒng)所有進程共享。每個進程理論上可以擁有4G字節(jié)的虛擬內存。 需要注意的細節(jié)問題: (1) 內核空間中存放的是內核代碼和數據,而進程的用戶空間中存放的是用戶程序的代碼和數據。不管是內核空間還是用戶空間,它們都處于虛擬空間中。 (2) Linux使用兩級保護機制:0級供內核使用,3級供用戶程序使用。 內核態(tài)與用戶態(tài): (1)當一個任務(進程)執(zhí)行系統(tǒng)調用而陷入內核代碼中執(zhí)行時,稱進程處于內核運行態(tài)(內核態(tài))。此時處理器處于特權級最高的(0級)內核代碼中執(zhí)行。當進程處于內核態(tài)時,執(zhí)行的內核代碼會使用當前進程的內核棧。每個進程都有自己的內核棧。 (2)當進程在執(zhí)行用戶自己的代碼時,則稱其處于用戶運行態(tài)(用戶態(tài))。此時處理器在特權級最低的(3級)用戶代碼中運行。當正在執(zhí)行用戶程序而突然被中斷程序中斷時,此時用戶程序也可以象征性地稱為處于進程的內核態(tài)。因為中斷處理程序將使用當前進程的內核棧。
新聞熱點
疑難解答