操作系统的主要工作包括程序的执行、完成与体系结构相关的工作、完成应用程序所需的共性任务。
操作系统的运行环境 1.CPU状态2.中断/异常机制
操作系统运行机制: 系统调用
常见的控制、状态寄存器:
1)程序计数器(PC:Program Counter),记录将要取出的指令的地址
2)指令寄存器(IR:Instruction Register),记录最近取出的指令
3)程序状态字(PSW:Program Status Word),记录处理器的运行状态,如,条件码、模式、控制位等信息。
处理器状态分类:
现代处理器通常将CPU状态设计划分为两种、三种或四种。在程序状态字寄存器PSW中专门设置一位(或两位),根据运行程序对资源和指令的使用权限而设置不同的CPU状态。
操作系统需要两种CPU状态:内核态(Kernel Mode)和用户态(User Mode),内核态用于运行操作系统程序,用户态用于运行用户程序。
CPU的两个状态可以执行不同的指令集合,所以可以指令集合划分为两类:特权(privilege)指令和非特权指令,特权指令是指只能有操作系统程序使用,用户程序不能使用的指令,非特权指令是指操作系统程序和用户程序都可以使用的指令。
用户态–>内核态 唯一途径:中断/异常/陷入机制
内核态–>用户态
1)设置程序状态字PSW
2)一条特殊的指令:陷入指令(又称访管指令,它不是特权指令),提供给用户程序的接口,用于调用操作系统的功能(服务)。例如:int,trap,syscall,systenter/sysexit
中断/异常机制是现代计算机系统的核心机制之一,主要是硬件和软件互相配合完成的。在这个机制工作过程中,硬件用来捕获中断源发出的中断/异常请求,以一定方式响应,将处理器控制权交个特定的处理程序,这个过程叫做中断/异常响应。软件用于识别中断/异常类型并完成相应的处理,这个过程叫做中断/异常处理程序。
中断/异常的概念:CPU对系统发生的某个事件做出的一种反应
事件的发生改变了处理器控制流
中断(外中断如I/O中断,时钟中断,硬件故障),如为了支持CPU和设备之间的并行操作;
异常(内中断如系统调用,页故障,保护性异常,断点指令,其他程序异常)表示CPU执行指令本身出现的问题。
特点:随机发生的,自动处理的,可恢复的
中断/异常机制工作原理
硬件:(发现中断、接受中断)捕获中断源发出的中断/异常请求,以一定的方式响应,将处理器控制权交给特定的处理程序
软件:(中断异常处理程序)识别中断/异常类型并完成相应的处理
中断响应过程:
设备发中断信号,硬件保存现场,根据中断码查表,把中断处理程序入口地址等推送到相应的寄存器,执行中断程序
中断处理程序:
设计操作系统时,为每一类中断/异常事件编好相应的处理程序,并设置好中断向量表
系统运行时若响应中断,中断硬件部件将CPU控制权转给中断处理程序:
保存相关寄存器信息,分析中断/异常的具体原因,执行对应的处理功能,恢复现场,返回被事件大段的程序
操作系统运行机制: 系统调用(操作系统功能调用)
定义:用户在编程时可以调用的操作系统功能
作用:是操作系统提供给编程人员的唯一接口;使CPU状态从用户态陷入内核态
系统调用机制的设计:
中断/异常机制:支持系统调用服务的实现
选择一条特殊指令:陷入指令(访管指令):引发异常,完成用户态到内核态的切换
系统调用号和参数:每个系统调用都事先给定一个编号(功能号)
系统调用表:存放系统调用服务例程的入口地址
用户程序的参数传递给内核:
方法1:由陷入指令自带参数:陷入指令的长度有限,且还要携带系统调用功能号,只能自带有限参数
方法2:通过通用寄存器传递参数:这些寄存器是操作系统和用户程序都能访问的,但寄存器的个数会限制传递参数的数量
方法3:在内存中开辟专用堆栈区来传递参数
系统调用的执行过程:
当CPU执行到特殊的陷入指令时:
中断/异常机制:硬件保护现场;通过中断向量表把控制权转给系统调用总入口程序
系统调用总入口程序:保存现场;将参数保存在堆栈里;通过查系统调用表把控制权转给相应的系统调用处理例程或内核函数
执行系统调用例程
恢复现场,返回用户程序
参考:
http://blog.csdn.net/wyi06/article/details/54808145
https://www.cnblogs.com/zengyiwen/p/4967297.html
http://blog.csdn.net/xw_classmate/article/details/50446331