32位的处理器因为寻址空间是 (2**32) 只有4G, 所以32位操作系统, 内存再高也么得啥用。
再说内存空间, 内存空间是一个整体的 没有办法说, 这1G给你 这3G给他。那么是怎么做的呢?
其实就是这么玩的:
CPU有自己寄存器, 进程切换 线程切换有一个状态保持, 有一种寄存器就是专门用来保存这种状态信息的。(这也只是寄存器的一种)
还有一种寄存器叫 PSW的, 有一个状态位 非0既1 两种状态。
内存其实就是一个整体, 是没有办法分开的. 无法分开 怎么做到分给内核态1G 用户态3G的呢?
就是靠这个状态位, 状态位是0的就是内核态, 状态位是1的就是用户态。
(真正有限制能力的还是CPU的指令集,
状态位是0的时候 CPU的指令集可以处理所有的硬件和软件, 4个G的内存空间你都能用。都是你的。
如果是另外一个状态位,CPU的指令集会告诉你,我的这个权限直到 用户态,
他没有控制硬件的指令, 没有指令就没有权限,没有权限就无法操作他们, 也就只能操控用户态的3个G)
所以自己的程序扔到内存去跑的时候, 状态位就是1. 他没有指令可以去操控硬件一类的东西。 所以处于用户态。