永发信息网

核心态用户态切换到内核态的方式有哪些

答案:1  悬赏:70  手机版
解决时间 2021-11-10 22:45
核心态用户态切换到内核态的方式有哪些
最佳答案
内核态和用户态的区别
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核状态。此时处理器处于特权级
最高的(0级)内核代码。当进程处于内核态时,执行的内核代码会使用当前的内核栈。每个进程都有自己的内核
栈。当进程在执行用户自己的代码时,则称其处于用户态。即此时处理器在特权级最低的用户代码中运行。当正
在执行用户程序而突然中断时,此时用户程序也可以象征性地处于进程的内核态。因为中断处理程序将使用当前
进程的内核态。

内核态与用户态是操作系统的两种运行级别,跟intel cpu没有必然联系,intel cpu提供Ring0-Ring3三种级别
运行模式,Ring0级别最高,Ring3级别最低。Linux使用了Ring3级别运行用户态。Ring0作为内核态,没有使用
Ring1和Ring2.Ring3不能访问Ring0的地址空间,包括代码和数量。Linux进程的4GB空间,3G-4G部分大家是共享
的,是内核态的地址空间,这里存放在整个内核代码和所有的内核模块,以及内核所维护的数据。用户运行一程

序,该程序所创建的进程开始是运行在用户态的,如果要执行文件操作,网络数据发送等操作,必须通过write,
send等系统调用,这些系统会调用内核中的代码来完成操作,这时,必须切换到Ring0,然后进入3GB-4GB中的
内核地址空间去执行这些代码完成操作,完成后,切换Ring3,回到用户态。这样,用户态的程序就不能随意操
作1内核地址空间,具有一定的安全保护作用。

用户态和内核态的转换
(1)用户态切换到内核态的3种方式
a.系统调用

这是用户进程主动要求切换到内核态的一种方式,用户进程通过系统调用申请操作系统提供的服务程序完成工作。
而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的ine 80h中断。
b.异常
当CPU在执行运行在用户态的程序时,发现了某些事件不可知的异常,这是会触发由当前运行进程切换到处理此
异常的内核相关程序中,也就到了内核态,比如缺页异常。
c.外围设备的中断
当外围设备完成用户请求的操作之后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条将要执行的指令
转而去执行中断信号的处理程序,如果先执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了有
用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

具体的切换操作

从出发方式看,可以在认为存在前述3种不同的类型,但是从最终实际完成由用户态到内核态的切换操作上来说,
涉及的关键步骤是完全一样的,没有任何区别,都相当于执行了一个中断响应的过程,因为系统调用实际上最
终是中断机制实现的,而异常和中断处理机制基本上是一样的,用户态切换到内核态的步骤主要包括:
(1)从当前进程的描述符中提取其内核栈的ss0及esp0信息。
(2)使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个过程也完成了由用
户栈找到内核栈的切换过程,同时保存了被暂停执行的程序的下一条指令。
(3)将先前由中断向量检索得到的中断处理程序的cs,eip信息装入相应的寄存器,开始执行中断处理程序,这
时就转到了内核态的程序执行了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
(1/2)求《电锯惊魂1》的片尾曲的名字(就
垫鼻子疼吗?有谁垫过的?告诉一下吧
散光具体怎么验
呼和浩特汽车违章在什么地方交罚款
新学期计划30字
报童的阅读答案
我的世界生存模式怎么飞翔,不是创造模式的那
广发城西小学地址好找么,我有些事要过去,
怎么把自己的照片和明星合在一起
女生跟男朋友之间不能谈论工作吗
在京东上,看好一个笔记本。华硕e203na3350
汽车雾灯和防雾灯的作用和区别是什么?
请问想买个1500左右的平板,推荐什么
桃江到常德是到什么汽车站
瑕积分的瑕点怎么看出来的
推荐资讯
抚市镇中心小学地址有知道的么?有点事想过去
银杏仁和槐花可以在一起吃吗
把4、7、8、9凑成24
手竿能用水怪钓鲢鳙吗
高新区分局地址在哪,我要去那里办事,
锌合金材料的小东西 如何焊上锡铅焊丝
软件到底是怎么让计算机硬件运行的?
耐克女鞋跑步鞋2015新款网面透气奥利奥专柜运
杨幂星座是什么?多少岁?几月几日出生?
K411 4车厢20号在什么位置
梅西单赛季西甲最多进球是多少个
北京开车到吉林多少公里,开车来回的过路费和
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?