内核空间用户空间, 怎么搞的呢?

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

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


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

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


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

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

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

转载于:https://www.cnblogs.com/chengege/p/11510492.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值