操作系统运行环境的详细归纳总结
本文最后更新于 46 天前,其中的信息可能已经有所发展或是发生改变。

程序状态字PSW和程序计数器PC

PSW

程序状态字是一个寄存器或一组标志位的集合,用于反映 CPU 当前操作的状态控制 CPU 的某些操作模式。主要包含了一些标志位信息,常见的如 进位标志 (C)零标志 (Z)符号标志 (S/N)溢出标志 (O/V);以及一些控制信息,常见的如 中断允许标志 (I)(是全局性的控制,与中断屏蔽字不同。中断屏蔽字用于控制对具体的不同中断源的响应,且不保存在PSW中)CPU运行模式

PC

PC的作用比较简单,就是存放下一条将要被执行指令的内存地址,因此PC的值需要经常刷新。在部分操作系统中,PC负责的部分可以保存在PSW中,这也是为什么维基百科说“它经常包含一个指向下一条需要被执行指令的指针。”但实际上这个描述我认为不准确,因为PC需要频繁刷新,放在PSW中就不那么灵活了,现代大部分操作系统也是独立保存PC。

CPU运行模式的切换

操作系统不允许用户程序实现内核态的功能,用户程序需要使用内核态的功能时,只能通过中断或者异常切换CPU的运行模式。系统调用也可能从用户态切换到内核态,但实际上是产生了自陷(Trap)异常

中断

中断是来自CPU外部的、异步事件产生的来自硬件设备的信号,用于请求CPU处理。是硬件产生的中断。

异常

异常是来自CPU内部的、同步的错误或者特殊事件。可以分为故障(Fault):如缺页异常、自陷(Trap):如系统调用、终止(Abort),其中 终止(Abort)是由于硬件故障导致的,前两者是由软件导致的中断。

注:访管指令是专门用于系统调用的指令,执行之后产生一个Trap异常。

外中断是随机的,内部中断(异常)是条件满足执行到当前指令必然发生的。

CPU运行模式的切换(假设从用户态到内核态)

  1. (系统调用传递系统调用参数,然后执行trap指令产生异常)
  2. 产生异常或中断;
  3. 硬件打断用户程序;(中断隐指令)
  4. 硬件保护现场,主要是PC和PSW和栈指针;(中断隐指令)
  5. 硬件找到中断信号对应的中断向量,指明中断服务的入口地址;(中断隐指令)
  6. 硬件清除PSW中的中断允许标志,并将CPU模式改为内核态;(中断隐指令)
  7. 执行操作系统内核的系统调用入口程序,保存通用寄存器的内容;(内核态)
  8. 可能打开中断执行服务,与硬件交互;(内核态)
  9. 执行中断信号对应的中断服务;(内核态)
  10. 恢复通用寄存器,执行特权返回指令;(内核态)
  11. 硬件恢复现场,打开中断;
  12. 返回用户态,回复用户栈指针;

注:中断和异常发生时,CPU既可能处于内核态,也可能处于用户态,取决于CPU正在处理的任务。

当系统添加新类型的设备时,需要注册相应的中断服务例程。

Gemini基于以上内容更详细的总结:

1.准备与触发(用户态)

  • (特定于系统调用)应用程序传递系统调用参数到约定寄存器,然后执行trap指令产生异常。
  • 或,执行指令时产生错误(异常),或被外部设备信号(中断)打断。

2.硬件强制切换(中断隐指令)

  • a. 打断:硬件打断用户程序执行。
  • b. 保护现场:硬件将用户态的PCPSW栈指针等核心上下文压入内核栈。
  • c. 定位与切换:硬件通过中断向量找到服务入口地址,加载到PC;同时,清除PSW中的中断允许标志(关中断),并将CPU模式改为内核态

3.内核处理(内核态)

  • a. 保存附加现场:内核入口程序手动保存通用寄存器
  • b. 执行服务:内核可能重新打开中断以提高响应性,然后与硬件交互,执行具体的中断/异常/系统调用服务。
  • c. 准备返回:服务完毕,内核手动恢复通用寄存器,然后执行特权返回指令(如IRET)。

4.硬件强制返回(中断隐指令)

  • a. 恢复现场:硬件响应IRET指令,从内核栈中弹出并恢复用户的PCPSW用户栈指针
  • b. 恢复中断状态:恢复PSW的同时,自动恢复了用户态的中断允许状态(通常是打开中断)。

5.返回用户程序(用户态)

  • CPU返回用户态,程序从中断处继续无缝执行。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇