特权指令 访管指令 与 用户态和核心态 系统调用

核心态和用户态

特权指令

  • 从指令系统角度,在指令系统中存在用于管理硬件和整个系统安全的指令,让程序随意使用具有极高危险性。不得在用户态(目态)执行,只能在核心态(管态)执行,用户态程序如果运行特权指令则会被中断出错。所以用户程序中不得含有特权指令,需要执行特权指令需要使用防管指令,进入核心态。

访管指令

  • 同样从指令集的角度,或者说从硬件角度(cpu状态)。防管指令,是用户程序自愿进管的指令,该指令本身属于非特权指令,可在用户态执行,执行后进入核心态,cpu置相应标志表明当前处于核心态。cpu进入核心态可以执行特权指令和非特权指令。

陷入指令

  • 原则上等同于访管指令,但是从操作系统的角度叫的。访管强调的是cpu切换到了核心态,可以执行指令集中的所有指令。而陷入(自陷、陷阱)指令强调程序从用户程序切换到了操作系统,陷入指令即汇编中的中断指令,执行陷入指令程序中断,跳转到中断服务程序(操作系统的代码)。所有访管强调可以执行特权指令,陷入强调“跳转”到操作系统。核心态和操作系统是不可分割的:其实道理很显然,进入核心态(管态),必然需要“跳转”到操作系统,不然区分用户态和核心态就没有了意义,如果程序执行完访管指令后,只是进入了管态,之后仍然执行自身的代码,那用户程序将可以为所欲为,显然不能允许。另一方面,如果cpu跳转到了操作系统,没有进入管态,那操作系统也无法执行特权指令,管理整个机器,显然也不行。所有管态就是运行操作,访管指令本质上就是一条陷入(中断)指令。

广义指令(系统调用)

  • 系统调用,源于操作系统的角度。指用户程序需要借助操作系统来完成特定操作,通过陷入指令可以进行系统调用。因为用户程序不能执行特权指令,所以当需要完成特定操作,则通过系统调用由操作系统完成。但系统调用一词不是从不能使用特权指令这一角度来考虑的。仅仅强调想让操作系统服务,表达的含义不是不能而是不需要,即目标操作用户程序不需要做,直接调用操作系统即可完成,进行系统调用时也并非一定为了执行特权指令,也可能相关操作过于复杂,或者用户程序自身难以实现,而操作系统给出了响应的接口供直接使用。

库函数

  • 操作系统提供的函数,供用户程序直接使用,简化程序的编写,直接使用操作系统已经实现的功能即可。与系统调用有些相似,不过库函数可以在用户态执行,和普通的函数调用相同。无需用户态切换到核心态,执行中断服务程序等操作。是对系统调用“不需要做”这一概念的推广,有些功能操作系统自带,需要就拿去用,别在自己写了,直接用大佬的效率多高。
  • 26
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值