操作系统在硬件之上,其他软件之下,直接与硬件打交道。操作系统的运行环境这部分内容,涉及《计算机体系结构》和《微机原理》等课程知识:
- 计算机层次结构
- 中央处理器(CPU)
- 存储系统
- 缓冲技术
- 中断机制
- I/O技术
- 时钟
本文以中断为核心内容,只介绍 CPU 及中断:
Roadmap:(加粗部分为重点知识)
- CPU
- 特权指令 vs 非特权指令
- CPU状态
- 用户态 vs 核心态
- 状态转换
- 中断
- 定义
- 特点
- 类型
- 中断处理机制
- 中断系统
- 中断响应、中断处理、保存现场、恢复现场
- 中断优先级
- 中断屏蔽
- 中断&系统调用&CPU状态
CPU
1. 指令系统分类
在多道程序系统中,为保证安全,把指令系统分为两类:特权指令、非特权指令
特权指令 | 非特权指令 |
---|---|
只允许操作系统 | 一般用户均可使用 |
特权指令 eg:修改程序状态字、设置中断屏蔽、启动I/O设备、清内存、设置时钟、停机等
2. CPU状态
(1)管态 vs 目态
在**程序状态字(PSW)**中专门设置一位,根据运行程序使用指令的不同权限而设置。
管态 | 目态 | |
---|---|---|
别称 | 特态、特权态,核心态,系统态 | 普态、用户态 |
执行指令权限 | 能执行指令全集,具有改变CPU状态的能力 | 只能执行非特权指令 |
运行程序 | 操作系统在管态下运行 | 用户程序在目态下运行 |
转换 | 目态到管态:唯一途径是通过中断。管态到目态:设置PSW指令(修改程序状态字) |
注:如果在目态下用户执行了特权指令,则产生中断,由操作系统得到控制权,而特权指令被停止执行。
中断
协调系统对各种外部事件的响应和处理。中断是实现多道程序的必要条件。
-
中断定义
CPU在执行一个程序时,对系统发生的某个事件作出的一种反应:CPU暂停正在执行的程序,保留现场后自动转去处理相应的事件,处理完该事件后再返回断点,继续完成被打断的程序。(如有必要,被中断的程序可以在后来某时间恢复,继续执行。) -
特点:
(1)随机
(2)可恢复
(3)自动处理 -
中断系统
中断由软件、硬件协同完成——中断系统
中断装置(硬件):发现中断,响应中断
中断处理程序(软件)中断的其他要素:
中断源:引起中断发生的事件
中断寄存器:硬件为每个中断源设置寄存器,中断发生时信息被记录在寄存器中,以便分析处理(记录中断)
中断字:中断寄存器中的内容
系统堆栈:在内存开辟的一块区域用来临时保存进程运行现场
中断向量表:使中断装置找到恰当的中断处理程序,中断程序入口地址映射表
中断向量:表中的每一项,由程序状态字PSW和指令计数器PC的值组成 -
中断类型
- 强迫性中断 vs 自愿性中断
- 强迫性中断
正在运行程序所不期望的,不知何时何地发生。- 输入/输出(I/O)中断:主要来自外部设备、通道
eg:设备出错,传输结束等 - 程序性中断:运行程序中本身的中断
eg:溢出、缺页、缺段、地址越界、除数为0等 - 时钟中断:
时间片到时 - 控制台中断:
由控制台发出控制信息,产生中断 - 硬件故障中断:
eg:电源故障,内存出错等
- 输入/输出(I/O)中断:主要来自外部设备、通道
- 自愿性中断
用户在程序中有意识安排的中断:用户在编制程序时因为要求操作系统提供服务,有意使用 “访管”指令或系统调用,使其发生中断。
- 强迫性中断
- 硬中断 vs 软中断
- 硬中断:通过硬件来产生中断请求
外中断 | 内中断 |
---|---|
处理器和主存储器之外 | 来自处理器和主存内部的中断 |
与正执行指令无关 | 与正执行指令有关 |
可屏蔽 | 多为异常(不可屏蔽) |
电源故障中断、时钟中断、控制台中断、I/O中断等 | 主存奇偶错、地址越界、调试指令、访管中断、算术操作溢出等 |
- 软中断:通常是通信进程之间用来模拟硬中断的一种信号通信方式
- 中断响应(由中断装置完成)
发现中断接收中断的过程
(1)发现中断源
优先级
(2)保存现场,将中断向量推入系统堆栈
(3)引出中断处理程序
方法:CPU在执行每条指令后扫描中断寄存器,查看有无中断请求,如果没有,则执行下一指令;如果有中断请求,则通过交换中断向量引出中断处理程序。(交换程序状态字进入中断处理程序:保留PSW内容,将它送入内存单元中相应的中断源的旧的状态字内存单元;将内存中相应新的状态字单元送入PSW内,形成新的现行程序状态字。) - 中断处理(由中断处理程序完成)
(1)保存现场:保存未被硬件保存的现场
(2)识别中断具体原因
(3)根据中断原因处理中断事件
(4)中断返回
①从程序中断处继续执行
②启动一个新的程序
③重新启动OS - 中断优先级
- 由硬件规定的
- 对同级中断按硬件规定次序响应
- 由硬件划分的,不可改变,但可调整
- 中断屏蔽
定义:暂时禁止一个或多个中断源向CPU发中断请求。
中断发生时,CPU不予响应的状态,常用于必须连续运行的程序,防止任务被中断干扰;或执行处理某一类中断时,防止其它中断干扰。
实现:在PSW中设置一个中断屏蔽位,通过设置中断屏蔽指令完成开中断与关中断来进行中断屏蔽。
中断&系统调用&CPU状态
- 用户态到核心态:唯一途径是通过中断
用户程序(用户态)
-> 中断处理程序(核心态)->系统服务程序(核心态)
->恢复到用户程序 - 系统调用:
用户程序通过访管指令或陷阱指令(Trap 指令),
来请求操作系统为其提供某种功能的服务。
系统调用的过程:
当CPU执行访管指令或陷阱指令时,即引起访管中断或陷阱中断;
处理器保存中断点的程序执行上下文环境(PSW, PC和其他的一些寄存器),CPU切换到管态。
中断处理程序开始工作,调用相应的系统服务;
中断处理结束后,恢复被中断程序的上下文环境,CPU恢复为目态,回到中断点继续执行。