內核空間用戶空間, 怎麼搞的呢?

32位的處理器由於尋址空間是 (2**32) 只有4G, 因此32位操做系統, 內存再高也麼得啥用。操作系統

再說內存空間, 內存空間是一個總體的  沒有辦法說, 這1G給你  這3G給他。那麼是怎麼作的呢?線程


其實就是這麼玩的:
CPU有本身寄存器, 進程切換 線程切換有一個狀態保持, 有一種寄存器就是專門用來保存這種狀態信息的。(這也只是寄存器的一種)
還有一種寄存器叫 PSW的, 有一個狀態位 非0既1 兩種狀態。

內存其實就是一個總體, 是沒有辦法分開的. 沒法分開 怎麼作到分給內核態1G 用戶態3G的呢?
就是靠這個狀態位, 狀態位是0的就是內核態, 狀態位是1的就是用戶態。


(真正有限制能力的仍是CPU的指令集,
狀態位是0的時候 CPU的指令集能夠處理全部的硬件和軟件, 4個G的內存空間你都能用。都是你的。

若是是另一個狀態位,CPU的指令集會告訴你,個人這個權限直到 用戶態,
他沒有控制硬件的指令, 沒有指令就沒有權限,沒有權限就沒法操做他們, 也就只能操控用戶態的3個G)

因此本身的程序扔到內存去跑的時候, 狀態位就是1. 他沒有指令能夠去操控硬件一類的東西。 因此處於用戶態。進程

相關文章
相關標籤/搜索