操作系统运行环境
操作系统运行环境
通用操作系统使用时间片轮转调度算法,必须从起始地址开始执行
输入输出指令需要中断操作,中断必须在核心态下运行
I/O通道实际上是一种特殊的处理器,它具有执行 I/O指令的能力,并通过执行通道程序来控制I/O操作。
- 是一种硬件技术
中断相关操作中,由操作系统完成的有
- 初始化中断向量表
- 执行中断服务程序,终端服务程序属于OS内核
- 保存中断屏蔽字
- 保存各通用寄存器的值
- 提供与中断信号对应的中断服务
中断是操作系统必须提供的功能
- 计算机的各种错误都需要中断处理,核心态与用户态切换也需要中断处理。
内核可以执行处理器能执行的任何指令,即特权指令只能由内核即操作系统使用。
执行系统调用的过程如下
- 正在运行的进程先传递系统调用参数
- 然后由陷入(trap)指令负责将用户态转换为内核态,并将返回地址压入堆栈以备后用
- 接下来 CPU 执行相应的内核态服务程序
- 最后返回用户态。
操作系统管理内存时,管理的是内存中的数据放在哪里、哪里可以放数据、哪里不可以放数据(内存保护)、哪里空闲等问题
- 内存中的数据是什么、怎么读和写,都不是核心态关心的。
用户程序只能执行除特权指令外的指令。
中断处理流程的前三个步骤是由硬件直接实现(隐指令)的。
- 地址映射中需要基地址(或页表)寄存器和地址加法器的支持。
- 在时钟管理中,需要硬件计数器保持时钟的运行。
- 进程调度由调度算法决定 CPU使用权,由操作系统实现。不需要硬件的支持。
中断程序本身可能是用户程序,但是进入中断的处理程序一定是 OS程序。
当中断或异常发生时,通过硬件实现将运行在用户态的 CPU立即转入核心态。中断发生时,若被中断的是用户程序,则系统将从目态转入管态,在管态下进行中断的处理;若被中断的是低级中断,则仍然保持在管态,而用户程序只能在目态下运行,因此进入中断处理的程序只能是OS程序。中断程序本身可能是用户程序,但是进入中断的处理程序一定是OS程序。
计算机通过硬件完成操作系统由用户态到核心态的转换,这是通过中断机制来实现的。发生
- 中断事件时(有可能是用户程序发出的系统调用),触发中断,硬件中断机制将计算机状态置为核心态。
大多数计算机操作系统的内核包括四个方面的内容,即时钟管理、中断机制、原语和系统控制的数据结构及处理
其中第4部分实际上是系统调用类的指令(广义指令)
广义指令即系统调用命令,它必然工作在核心态
- 要注意区分”调用”和”执行”
- 广义指令的调用可能发生在用户态,调用广义指令的那条指令不一定是特权指令,
- 广义指令存在于核心态中,所以执行一定在核心态。
在核心态下,CPU可以执行指令系统除了访管指令外的全部指令
关于内部异常的处理后
- 返回点因
异常类型
不同而不同- 如
除数为零
和自行中断(INT)
都会跳过中断指令 - 所以他们不会返回到发生异常的指令继续执行
- 如
- 返回点因
在操作系统中,关中断指令是权限非常大的指令,因为中断是现代操作系统正常运行的核心保障之一,能把它关掉,说明执行这条指令的一定是权限非常大的机构(管态)
- 发生中断时,在关中断之前系统由用户态转为内核态,而关中断是由硬件实现的,所以CPU由用户态变为内核态是由硬件实现的
- 检测到中断后,CPU负责保存断点PC和程序状态字PSW,然后变为内核态
- 发生中断时,在关中断之前系统由用户态转为内核态,而关中断是由硬件实现的,所以CPU由用户态变为内核态是由硬件实现的
子程序调用只需保存程序断点,即该指令的下一条指令的地址
中断处理不仅要保存断点(PC 的内容),还要保存程序状态字寄存器(PSW)的内容。
- 在中断处理中,最重要的两个寄存器是 PC和 PSWR。
- 外部中断处理过程,PC 值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。
中断是指来自 CPU 执行指令以外事件的发生
- 如设备发出的 I/O结束中断,表示设备输入/ 输出处理已经完成。希望处理机能够向设备发出下—个输入/输出请求,同时让完成输入/输出后的程序继续运行。
- 时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。
- 这一类中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。
异常也称内中断,指源自 CPU 执行指令内部的事件
- 如程序的非法操作码、地址越界、算术溢出、 虚存系统的缺页及专门的陷入指令等引起的事件。