1)操作系统运行环境(物理机器界面):
a.CPU状态(模式)
处理器由运算器,控制器,一系列的寄存器(用户可见寄存器,控制和状态寄存器)以及高速缓存构成
常见的控制和状态寄存器:
程序计数器(PC:Program Counter),记录将要取出的指令地址
指令寄存器(IR:Instruction Register),记录最近取出的指令
程序状态字(PSW:Program Status Word),记录处理的运行状态如条件码、模式、控制位等信息
操作系统的需求——保护
需要硬件提供基本运行机制:
处理器具有特权级别,能在不同的特权级运行不同的指令集合
硬件机制可将OS与用户程序隔离
处理器的状态(模式MODE)
在PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态
操作系统的两种状态
内核态:运行操作系统
用户态:运行用户程序
特权指令:只能由操作系统使用(启动I/O,内存清零,修改程序状态字,设置时钟,允许/禁止中断,停机)
非特权指令:用户程序可以使用的命令(控制转移,算术运算,
访管指令(又称陷入指令,提供给用户程序的接口,用于调用操作系统的功能(服务)),取数指令)
CPU状态之间的转换
用户态-->内核态(唯一途径:中断/异常/陷入机制)
内核态-->用户态 设置PSW
b.中断/异常机制
中断/异常的概念:CPU对系统发生的某个事件做出的一种反应
事件的发生改变了处理器控制流
中断(外中断如I/O中断,时钟中断,硬件故障),如为了支持CPU和设备之间的并行操作;
异常(内中断如系统调用,页故障,保护性异常,断点指令,其他程序异常)表示CPU执行指令本身出现的问题。
特点:随机发生的,自动处理的,可恢复的
中断/异常机制工作原理
硬件:(发现中断、接受中断)捕获中断源发出的中断/异常请求,以一定的方式响应,将处理器控制权交给特定的处理程序
软件:(中断异常处理程序)识别中断/异常类型并完成相应的处理
中断响应过程:
设备发中断信号,硬件保存现场,根据中断码查表,把中断处理程序入口地址等推送到相应的寄存器,执行中断程序
中断处理程序:
设计操作系统时,为每一类中断/异常事件编好相应的处理程序,并设置好中断向量表
系统运行时若响应中断,中断硬件部件将CPU控制权转给中断处理程序:
保存相关寄存器信息,分析中断/异常的具体原因,执行对应的处理功能,恢复现场,返回被事件大段的程序
2)操作系统运行机制(虚拟机界面):
a.系统调用(操作系统功能调用)
定义:用户在编程时可以调用的操作系统功能
作用:是操作系统提供给编程人员的唯一接口;使CPU状态从用户态陷入内核态
系统调用机制的设计:
中断/异常机制:支持系统调用服务的实现
选择一条特殊指令:陷入指令(访管指令):引发异常,完成用户态到内核态的切换
系统调用号和参数:每个系统调用都事先给定一个编号(功能号)
系统调用表:存放系统调用服务例程的入口地址
用户程序的参数传递给内核:
方法1:由陷入指令自带参数:陷入指令的长度有限,且还要携带系统调用功能号,只能自带有限参数
方法2:通过通用寄存器传递参数:这些寄存器是操作系统和用户程序都能访问的,但寄存器的个数会限制传递参数的数量
方法3:在内存中开辟专用堆栈区来传递参数
系统调用的执行过程
当CPU执行到特殊的陷入指令时:
中断/异常机制:硬件保护现场;通过中断向量表把控制权转给系统调用总入口程序
系统调用总入口程序:保存现场;将参数保存在堆栈里;通过查系统调用表把控制权转给相应的系统调用处理例程或内核函数
执行系统调用例程
恢复现场,返回用户程序