发新话题
打印

什么是内核态、用户态?

什么是内核态、用户态?

什么是内核态,什么是用户态,谢谢      

TOP

个人理解,intel的CPU在保护模式下设计的权限有4个等级,linux用到了2个等级,0和3,那么在特权级0级运行的代码就是内核态,在3级下运行的就是用户态。
不知道这样理解对不对,请高手指点      

TOP

谢谢

谢谢你的指点      

TOP

我也学习了,谢谢。      
:p

TOP

这是Intel cpu特有的工作方式,在保护模式下, 用到了寄存起的两位(至于是什么,我忘了,你可以查查),可以表示4种优先级别,0,3级别被linux所有,其他的两种另有用途. 在0级别上就是内核工作模式,操作是元子的,不可以被打断,3级别就是用户态,可以被打断      

TOP

内核态与用户态是操作系统的两种运行级别,跟intel cpu没有必然的联系, intel cpu提供Ring0-Ring3三种级别的运行模式,Ring0级别最高,Ring3最低。Linux使用了Ring3级别运行用户态,Ring0作为内核态,没有使用Ring1和Ring2。Ring3状态不能访问Ring0的地址空间,包括代码和数据。Linux进程的4GB地址空间,3G-4G部分大家是共享的,是内核态的地址空间,这里存放在整个内核的代码和所有的内核模块,以及内核所维护的数据。用户运行一个程序,该程序所创建的进程开始是运行在用户态的,如果要执行文件操作,网络数据发送等操作,必须通过write,send等系统调用,这些系统调用会调用内核中的代码来完成操作,这时,必须切换到Ring0,然后进入3GB-4GB中的内核地址空间去执行这些代码完成操作,完成后,切换回Ring3,回到用户态。这样,用户态的程序就不能随意操作内核地址空间,具有一定的安全保护作用。
    至于说保护模式,是说通过内存页表操作等机制,保证进程间的地址空间不会互相冲突,一个进程的操作不会修改另一个进程的地址空间中的数据。      

TOP

不错, 谢谢      

TOP

棒极了!!

谢谢!
高手阿 !      

TOP

呵呵,大家多多交流,现在版面的帖子点击率挺高的,就是没有多少人愿意发言.      

TOP

发新话题