在计算机系统中为什么要区分系统态和用户态?在什么情况下进行两种方式的转换?

 我来答
八哥说科技
高粉答主

2019-09-28 · 分享科技资讯,共享科技生活
八哥说科技
采纳数:113 获赞数:78623

向TA提问 私信TA
展开全部

计算机系统中区分系统态和用户态的原因是:避免代码进行潜在危险的操作,以防止给操作系统带来安全隐患。系统调用与返回的情况下进行两种方式的转换。

用户态状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。内核禁止此状态下的代码进行潜在危险的操作,比如写入系统配置文件、杀掉其他用户的进程、重启系统等。

当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0 级)内核代码中执行。

扩展资料:

用户态切换到内核态的3种方式:

1、系统调用这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。

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

3、外围设备的中断当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。

参考资料来源:百度百科-用户态

参考资料来源:百度百科-核心态

力控科技
2024-12-03 广告
在工业自动化领域,SCADA是一个重要软件系统(即数据采集与监控系统),是助力智能工厂建设的统一监控平台。其设计涵盖从现场监控站到调度中心,为企业提供从下到上的完整的生产信息采集与集成服务,从而为企业综合自动化、工厂数字化及完整的“管控一体... 点击进入详情页
本回答由力控科技提供
随园影曳
推荐于2017-11-25
知道答主
回答量:10
采纳率:0%
帮助的人:4.3万
展开全部
在CPU中运行的操作系统程序和用户程序对应的机器指令集是不同的。操作系统程序使用所有指令,但用户程序只能使用部分指令。从资源管理和程序控制执行的角度出发,将指令系统分为两大部分:特权指令和非特权指令。在程序执行时,根据执行程序对资源和机器指令的使用权限,把机器设置为两个状态:核心态和用户态。
  也就是说,当系统处于核心态时,就可以使用所有指令、资源,并具备改变CPU状态的能力;而当CPU在用户态时,只能使用非特权指令。
  如果CPU执行用户程序时(用户态)出现了中断,系统将自行转到中断处理程序,CPU就由用户态转换到核心态;中断处理结束后,返回继续执行用户程序,此时CPU又由核心态转到用户态。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-11
展开全部
内核态,是系统正运行于操作系统的内核代码内。用户态,系统正运行于用户的应用程序下。总的来说,系统运行在内核态时比运行在用户态时的要求都要严格些,比如,安全,速率,等等。
对操作系统内核有兴趣可以加qq群一起讨论:124114558(转)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式