操作系统【OS】系统调用处理机的运行模式【两种指令、两种处理器状态、如何变态】

两种指令

特权指令

指不允许用户直接使用的指令

  • 输入/输出指令(对I/O设备操作指令)
  • 存取特殊寄存器的指令【存取用于内存保护的寄存器、送程序状态字到PSW寄存器】
  • 有关访问程序状态的指令
  • 置中断指令
  • 关中断指令
  • 清内存指令
  • 置时钟指令
  • 广义指令的执行
  • 切换到用户态的指令

非特权指令

允许用户直接使用的指令
不能直接访问系统中的软硬件资源
只限于访问用户的地址空间

 

  • 取数指令
  • 存数指令
  • 读时钟指令
  • 加减乘除等算数运算指令
  • 寄存器清零
  • 指令压栈/弹栈指令(push/pop)
  • 跳转指令(转移指令)
  • 将运算结果装入内存
  • 访管/trap指令

两种处理器状态

核心态

【管态、内核态】

  • 操作系统内核:
    • 时钟管理相关的指令【置时钟指令】
    • 中断机制相关的指令【时钟中断程序】
    • 原语相关的指令系统控制的数据结构与处理【进程调度程序】【进程切换】【缺页处理程序】【系统调用命令】

用户态【目态】

  • 只能执行非特权指令
  • 在用户态执行的指令和程序/发生的事件:可以在用户态执行,只是可能会使CPU从用户态切换到内核态。
    • 命令解释程序【属于命令接口,面向用户】
    • 访管/Trap指令,跳转指令,压栈指令
    • 广义指令(系统调用)的调用
    • 外部中断,缺页
    • 数据传送指令
    • 设置断点指令

如何变态

内核态-- >用户态

发生在中断返回用户程序时,需要一条修改PSW(程序状态字)的特权命令【执行一条特权指令】

用户态-->内核态

  • 发生在中断时,通过硬件完成
    • eg:用一个特殊的寄存器的一位来表示CPU所处的状态,要进入核心态,将该位置0即可。
  • 不仅状态需要切换,所用的堆栈可能也要由用户堆栈切换为系统堆栈【此系统堆栈属于该进程】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FOUR_A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值