结论:
• 操作系统⽆论怎么切换进程,都能找到同⼀个操作系统!换句话说操作系统系统调⽤⽅法的执⾏,是在进程的地址空间中执⾏的!
-
内核态: 0-4G 范围的虚拟空间地址都可以操作,尤其是对 3-4G 范围的⾼位虚拟空间地址必须由内核态去操作。
-
3G - 4G 部分⼤家是共享的(指所有进程的内核态逻辑地址是共享同⼀块内存地址),是内核态的地址空间,这⾥存放在整个内核的代码和所有的内核模块,以及内核所维护的数据。
-
关于特权级别,涉及到段,段描述符,段选择⼦,DPL,CPL,RPL等概念, ⽽现在芯⽚为了保证兼容性,已经⾮常复杂了,进⽽导致OS也必须得照顾它的复杂性,这块我们不做深究了。
-
⽤⼾态就是执⾏⽤⼾ [0,3] GB 时所处的状态
-
内核态就是执⾏内核 [3,4] GB 时所处的状态
-
区分就是按照CPU内的CPL决定,CPL的全称是Current Privilege Level,即当前特权级别。
-
⼀般执⾏ int 0x80 或者 syscall 软中断,CPL会在校验之后⾃动变更
-
这样会不会不安全??