32位的處理器由於尋址空間是 (2**32) 只有4G, 因此32位操做系統, 內存再高也麼得啥用。操作系統
再說內存空間, 內存空間是一個總體的 沒有辦法說, 這1G給你 這3G給他。那麼是怎麼作的呢?線程
其實就是這麼玩的:
CPU有本身寄存器, 進程切換 線程切換有一個狀態保持, 有一種寄存器就是專門用來保存這種狀態信息的。(這也只是寄存器的一種)
還有一種寄存器叫 PSW的, 有一個狀態位 非0既1 兩種狀態。
內存其實就是一個總體, 是沒有辦法分開的. 沒法分開 怎麼作到分給內核態1G 用戶態3G的呢?
就是靠這個狀態位, 狀態位是0的就是內核態, 狀態位是1的就是用戶態。
(真正有限制能力的仍是CPU的指令集,
狀態位是0的時候 CPU的指令集能夠處理全部的硬件和軟件, 4個G的內存空間你都能用。都是你的。
若是是另一個狀態位,CPU的指令集會告訴你,個人這個權限直到 用戶態,
他沒有控制硬件的指令, 沒有指令就沒有權限,沒有權限就沒法操做他們, 也就只能操控用戶態的3個G)
因此本身的程序扔到內存去跑的時候, 狀態位就是1. 他沒有指令能夠去操控硬件一類的東西。 因此處於用戶態。進程