用户模式和内核模式

什么是用户模式?

当执行应用程序代码的时候是用户模式,且每个程序有自己的独立空间,其他程序一般无法访问。

 

什么是内核模式?

当调用系统api函数时(系统调用),会暂停执行应用程序代码,转而执行内核代码(内核也是程序),进行内核空间的访问,这就是内核模式。

 

内核模式与用户模式之间的访问

内核有权限访问用户空间,用户空间被禁止直接访问内核空间,因为内核空间的数据和代码是所有程序共享的,如果一个程序修改了内核空间中的数据,不仅会影响操作系统内核的稳定性,还会影响到其他程序,这是很具破坏性的。

 

为什么要区分两种模式?

因为用户程序不安全,所以在用户程序调用内核接口时(调用相关函数,即进行输出输入,分配内存,响应鼠标等等关于硬件的操作),需要内核模式来进行各种校验,防止出错。

 

为什么内核和用户程序要共用地址空间

因为如果内核和用户程序是分别的独立地址空间,那么在用户程序进行系统调用时,要切换到另一个地址空间,这相当于切换了一个进程,寄存器需要进栈出栈,而cpu的缓存以及mmu页表缓存也会失效,这会使得内存的访问相当低效(因为缓存本来就是为了提升效率而出现的),而采用共享地址空间的方案时,用户模式和内核模式之间的切换仅仅是模式切换,只需要寄存器进栈出栈,cpu的缓存不会消失,大大提升了效率。

posted @   codemelo  阅读(635)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示