码迷,mamicode.com
首页 > 其他好文 > 详细

用户态与内核态的理解

时间:2019-11-16 17:52:14      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:关心   区别   结果   内存   访问   用户空间   cpu   调用   内核空间   

1. 系统调用

  为了安全应用程序无法直接调用的硬件的功能,而是将这些功能封装成特定的函数。当应用程序需要硬件功能时(例如读写文件),就需要进行系统调用。当进程进行系统调用后就从用户态装换为内核态。

2. 用户态与内核态

  我们可以想象cpu只是一个无情的执行代码的工具,并不关心是谁的代码。

  (1)用户态:cpu正在执行用户编写的代码。

  (2)内核态:由于用户无法操作硬件,必须进行系统调用。系统调用时cpu执行内核代码,那么此时进程处于内核态。

3. 用户态与内核态的区别

  在内核创建一个进程时,除了我们所知的在用户内存空间中的(堆,栈)以外,在内核空间中也分配了一个空间(内核栈)。因此,在cpu执行用户代码时使用的是用户栈,而在进行系统调用时(执行内核代码)使用的是内核栈。由于用户空间进程没办法访问到内核空间的数据,在内核栈执行系统调用函数时的过程也不会泄露到用户空间,内核只会在执行完毕后返回结果。

用户态与内核态的理解

标签:关心   区别   结果   内存   访问   用户空间   cpu   调用   内核空间   

原文地址:https://www.cnblogs.com/liwangcai/p/11872404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!