内核态与用户态的区别是什么_linux用户态和内核态

内核态与用户态的区别是什么_linux用户态和内核态原文链接:https://www.cnblogs.com/gizing/p/10925286.html1.操作系统需要两种CPU状态内核态(KernelMode):运行操作系统程序,操作硬件用户态(UserMode):运行用户程序2.指令划分特权指令:只能由操作系统使用、用户程序不能使用的指令。举例:启动I/O内存清零修改程序状态字设置时钟允许/禁止终端停机非特权指令:用户程序可以使用的指令。举例:控制转移算数运算取数指令访管指令(使用户程序从用户态陷入内核态.


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原文链接:https://www.cnblogs.com/gizing/p/10925286.html

1.操作系统需要两种CPU状态

内核态(Kernel Mode):运行操作系统程序,操作硬件

用户态(User Mode):运行用户程序

2.指令划分

特权指令:只能由操作系统使用、用户程序不能使用的指令。 举例:启动I/O 内存清零 修改程序状态字 设置时钟 允许/禁止终端 停机

非特权指令:用户程序可以使用的指令。 举例:控制转移 算数运算 取数指令 访管指令(使用户程序从用户态陷入内核态)

3.特权级别

特权环:R0、R1、R2和R3

R0相当于内核态,R3相当于用户态;

不同级别能够运行不同的指令集合;

4.CPU状态之间的转换

用户态—>内核态:唯一途径是通过中断、异常、陷入机制(访管指令)

内核态—>用户态:设置程序状态字PSW

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

  • 内核态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时,就可以称之为运行在用户态。因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;

  • 当程序运行在0级特权级上时,就可以称之为运行在内核态。

  • 运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态(比如操作硬件)。

  • 这两种状态的主要差别是

    • 处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理器是可被抢占的
    • 处于内核态执行时,则能访问所有的内存空间和对象,且所占有的处理器是不允许被抢占的。

6. 通常来说,以下三种情况会导致用户态到内核态的切换

  • 系统调用

这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。比如前例中fork()实际上就是执行了一个创建新进程的系统调用。

而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。

用户程序通常调用库函数,由库函数再调用系统调用,因此有的库函数会使用户程序进入内核态(只要库函数中某处调用了系统调用),有的则不会。

  • 异常

当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。

  • 外围设备的中断

当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,

如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192426.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用什么软件来编写PHP

    用什么软件来编写PHP2019独角兽企业重金招聘Python工程师标准>>>…

    2022年5月10日
  • vector二维数组初始化赋值_vector实现二维数组的赋值

    vector二维数组初始化赋值_vector实现二维数组的赋值一。二维vector初始化1.采用构造函数vector<vector<int>>vec(10,vector<int>(8));//10行8列,全部初始化为零2.添加元素(每次添加一行)inta[]={1,2,3,4};vector<int>ivec(a,a+4);//数组初始化vector,见最下面(…

    2022年9月18日
  • word涂改涂掉图片_【最新】干部档案涂改检讨书-word范文 (20页)[通俗易懂]

    word涂改涂掉图片_【最新】干部档案涂改检讨书-word范文 (20页)[通俗易懂]本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!==本文为word格式,下载后可方便编辑和修改!==干部档案涂改检讨书篇一:干部人事档案检查自查报告关于开展干部人事档案审核工作的自查报告******:根据省局《关于开展干部人事档案审核工作检查的通知》(*****号)要求,我局对开展好干部人事档案审核自查工作高度重视,精心组织,周密安排,明确工作职责,认真制…

    2022年9月7日
  • name ‘reload‘ is not defined解决方法

    name ‘reload‘ is not defined解决方法一段python2.7的代码,里面有如下代码:reload(sys)sys.setdefaultencoding("utf-8")重新加载sys模块,并设置默认编码utf-8在Python3.x中运行提示:name‘reload’isnotdefinedpython3.x下应该改为如下方式:importimportlibimportlib.reload(sys)最后一句sys.set…

    2022年10月22日
  • intel酷睿游戏计算机,Intel酷睿九代i3-9100F配RX590游戏电脑配置单,预算3500元不到…「建议收藏」

    intel酷睿游戏计算机,Intel酷睿九代i3-9100F配RX590游戏电脑配置单,预算3500元不到…「建议收藏」想要组装一套游戏电脑主机,主要是玩绝地求生,想要1080P高画质,不过预算有限,想要一套3000-3500元的电脑主机,所以追求性价比。而下面装机之家晓龙分享一套电脑配置清单,采用了i3-9100F和性价比十足的RX5908G独显,显卡性能超GTX10606G,也就是说,能够在1080P高画质下畅玩绝地求生,来看看,有主机差不多预算完全可以参考。九代i3-9100F配RTX590电脑组装机配置…

    2022年7月16日
  • Lenovo windows 解决win键失灵

    Lenovo windows 解决win键失灵电脑突然win键就不能用了,实在太影响使用了!!!上网查了查,估计是把win键锁住了要解锁的话,好像不同的电脑不太一样我的电脑是lenovo的F9+Fn就能开关win键如果不可以的话,建议按住Fn键其他的组合键挨个试一下。…

    2022年5月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号