知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Linux环境下的内核态与用户态简析

发布时间:2014-09-05 16:12:28作者:知识屋

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

 
作者 Tommy_wxie
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜