32位的处理器因为寻址空间是 (2**32) 只有4G, 所以32位操作系统, 内存再高也么得啥用。

再说内存空间, 内存空间是一个整体的  没有办法说, 这1G给你  这3G给他。那么是怎么做的呢?


其实就是这么玩的:
CPU有自己寄存器, 进程切换 线程切换有一个状态保持, 有一种寄存器就是专门用来保存这种状态信息的。(这也只是寄存器的一种)
还有一种寄存器叫 PSW的, 有一个状态位 非0既1 两种状态。

内存其实就是一个整体, 是没有办法分开的. 无法分开 怎么做到分给内核态1G 用户态3G的呢?
就是靠这个状态位, 状态位是0的就是内核态, 状态位是1的就是用户态。


(真正有限制能力的还是CPU的指令集,
状态位是0的时候 CPU的指令集可以处理所有的硬件和软件, 4个G的内存空间你都能用。都是你的。

如果是另外一个状态位,CPU的指令集会告诉你,我的这个权限直到 用户态,
他没有控制硬件的指令, 没有指令就没有权限,没有权限就无法操作他们, 也就只能操控用户态的3个G)

所以自己的程序扔到内存去跑的时候, 状态位就是1. 他没有指令可以去操控硬件一类的东西。 所以处于用户态。

posted on 2019-09-12 10:24  rookiehbboy  阅读(192)  评论(0编辑  收藏  举报