2.1处理器状态
中央处理器(CPU):由运算器、控制器、一系列的寄存器和高速缓存构成。
两类寄存器:
常见的控制和状态寄存器:
操作系统对硬件的需求——保护:需要硬件提供基本运行机制:
因此,现代处理器通常将CPU状态设计划分为两种、三种或四种。在程序状态字寄存器PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态。
操作系统需要两种CPU状态:
CPU状态之间的转换:
2.2中断与异常机制
操作系统是由“中断驱动 ”或者“事件驱动”的。
中断/异常机制主要作用:
中断/异常的概念:CPU对系统发生的事件作出的一种反应。
中断的引入是为了支持CPU和设备之间的并行操作,设备完成输入/输出后,通过向CPU发送中断报告此次结果。
异常的引入是表示CPU执行命令时本身出现的问题。如算术溢出、除零、取数时的纠错,这时硬件改变了CPU的执行流程,转到相应的错误处理程序或异常处理程序或执行系统调用。
事件:
1、中断(外中断)
2、异常(内中断)
2.3中断/异常机制工作原理
中断/异常机制:硬件和软件相互配合而使计算机系统得以充分发挥能力。
硬件——中断/异常响应:捕获中断源发出的中断/异常请求,以一定方式响应,将处理器的控制权交给特定的处理程序。
软件——中断/异常处理程序:识别中断/异常类型并完成相应的处理。
中断响应:发现中断、接受中断的过程,由中断硬件部件完成。
处理器控制部件中设有中断寄存器。
中断响应过程:开始——>取下一条指令——>执行指令
中断向量表:由若干中断向量组成,即若干内存单元,存放中断处理程序入口地址和程序运行时所需的处理机状态字。
中断处理程序:设计操作系统时,为每一类中断/异常事件编号相应的处理程序,并设置好中断向量表。
系统运行时若响应中断,终端硬件部件将CPU控制权转给中断处理程序:
2.4 X86处理器的中断/异常机制
中断:由硬件信号引发,分为可屏蔽中断和不可屏蔽中断。
异常:由指令执行引发的,比如除零异常,80X86处理器发布了大约20种不同的异常,对于某些异常,CPU会在执行异常处理程序之前产生硬件出错码,并压入内核态堆栈。
系统调用:特殊异常,从用户态到内核态的唯一入口
中断控制器(PIC或APIC):负责将硬件的中断信号转换为中断向量,并引发CPU中断。
实模式:中断向量表,存放中断服务程序的入口地址。入口地址=段地址左移4位+偏移地址;不支持CPU运行状态切换;中断处理与一般的过程调用相似。
保护模式:中断向量表改为中断描述符表,采用门描述符数据结构表示中断向量。
中断向量表/中断描述符表:
中断/异常的硬件处理过程:
2.5系统调用机制——操作系统向用户程序提供的接口
系统调用:用户在编程时可以调用的操作系统功能。
系统调用的作用:
典型系统调用举例:每个操作系统都提供几百种系统调用(进程控制、进程通信、文件使用、目录操作、设备管理、信息维护等)
系统调用机制的设计:
参数传递过程问题:常用以下三种方法实现用户程序的参数传递给内核 :
系统调用的执行过程:当CPU执行到特殊的陷入指令时: