计算机操作系统(第三版)_第二章_ppt_第1页
计算机操作系统(第三版)_第二章_ppt_第2页
计算机操作系统(第三版)_第二章_ppt_第3页
计算机操作系统(第三版)_第二章_ppt_第4页
计算机操作系统(第三版)_第二章_ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京大学软件与微电子学院北京大学软件与微电子学院20092009春季春季操作系统高级操作系统高级Operating Systems Advanced Class 第第二二讲讲 系统机制系统机制讨论讨论讨论讨论操作系统设计者操作系统设计者考虑的硬件问题考虑的硬件问题 讨论讨论操作系统设计者操作系统设计者考虑的其他问题考虑的其他问题 中央处理器(中央处理器(CPUCPU) 中断机制中断机制 系统调用系统调用一、中央处理器(一、中央处理器(CPUCPU)专门设计了一系列基本机制:专门设计了一系列基本机制:- - 具有特权级别的处理器状态,能在不具有特权级别的处理器状态,能在不同特权级运行的各种特权指

2、令同特权级运行的各种特权指令- - 硬件机制使得硬件机制使得OSOS可以和普通程序隔离可以和普通程序隔离 实现实现保护和控制保护和控制1.CPU1.CPU的构成与基本工作方式的构成与基本工作方式 处理器由运算器、控制器、一系列的寄存器以处理器由运算器、控制器、一系列的寄存器以及高速缓存构成及高速缓存构成 运算器实现指令中的算术和逻辑运算,是计算运算器实现指令中的算术和逻辑运算,是计算机计算的核心机计算的核心 控制器负责控制程序运行的流程,包括取指令、控制器负责控制程序运行的流程,包括取指令、维护维护CPUCPU状态、状态、CPUCPU与内存的交互等等与内存的交互等等处理器中的寄存器处理器中的寄

3、存器 寄存器提供了一定的存储能力寄存器提供了一定的存储能力 速度比主存快得多速度比主存快得多 造价高,容量一般都很小造价高,容量一般都很小两类寄存器:两类寄存器: 用户可见寄存器,高级语言编译器通过算法分用户可见寄存器,高级语言编译器通过算法分配并使用之,以减少程序访问内存次数配并使用之,以减少程序访问内存次数 控制和状态寄存器,用于控制处理器的操作控制和状态寄存器,用于控制处理器的操作 由由OSOS的的特权代码使用特权代码使用, , 以控制其他程序的执行以控制其他程序的执行用户可见寄存器用户可见寄存器机器语言直接引用机器语言直接引用 包括包括数据寄存器数据寄存器、地址寄存器地址寄存器以及以及

4、条件码寄存器条件码寄存器 数据寄存器数据寄存器(data registerdata register)又称通用寄存器又称通用寄存器 主要用于各种算术逻辑指令和访存指令主要用于各种算术逻辑指令和访存指令 地址寄存器地址寄存器(address registeraddress register)用于存储数据用于存储数据及指令的物理地址、线性地址或者有效地址,用及指令的物理地址、线性地址或者有效地址,用于某种特定方式的寻址。如于某种特定方式的寻址。如index registerindex register、segment pointersegment pointer、stack pointerstac

5、k pointer 条件码寄存器条件码寄存器保存保存CPUCPU操作结果的各种标记位操作结果的各种标记位 如算术运算产生的溢出、符号等等如算术运算产生的溢出、符号等等控制和状态寄存器控制和状态寄存器 用于控制处理器的操作用于控制处理器的操作 大部分对于用户是不可见的大部分对于用户是不可见的 一部分可以在某种特权模式(由一部分可以在某种特权模式(由OSOS使用)下访问使用)下访问常见的控制和状态寄存器常见的控制和状态寄存器: : 程序计数器程序计数器(PCPC:Program CounterProgram Counter),记录将要取出的指,记录将要取出的指令的地址令的地址 指令寄存器指令寄存器

6、(IRIR:Instruction RegisterInstruction Register),包含最近取,包含最近取出的指令出的指令 程序状态字程序状态字(PSWPSW:Program Status WordProgram Status Word),记录处理器,记录处理器的运行模式信息等等的运行模式信息等等2.2.特权指令和非特权指令特权指令和非特权指令特权指令:只能由操作系统使用的指令特权指令:只能由操作系统使用的指令 使用多道程序设计技术的计算机指令系统必须要区使用多道程序设计技术的计算机指令系统必须要区分为特权指令和非特权指令分为特权指令和非特权指令 特权指令一般引起处理器状态的切换特

7、权指令一般引起处理器状态的切换 处理器通过特殊的机制将处理器状态切换到操作系统运行的特权状处理器通过特殊的机制将处理器状态切换到操作系统运行的特权状态(管态)态(管态) 然后将处理权移交给操作系统中的一段特殊代码,这一个过程称为然后将处理权移交给操作系统中的一段特殊代码,这一个过程称为陷入陷入 CPUCPU如何知道当前运行的是操作系统还是一般应用如何知道当前运行的是操作系统还是一般应用软件?有赖于处理器状态的标识软件?有赖于处理器状态的标识3.3.处理器的状态处理器的状态 根据运行程序对资源和机器指令的使用权限将根据运行程序对资源和机器指令的使用权限将处理器设置为不同状态处理器设置为不同状态程

8、序状态字程序状态字PSWPSW多数系统将处理器工作状态划分为管态和目态多数系统将处理器工作状态划分为管态和目态管态:管态:操作系统管理程序运行的状态,较高的特权操作系统管理程序运行的状态,较高的特权级别,又称为级别,又称为特权态(特态)、核心态、系统态特权态(特态)、核心态、系统态目态:目态:用户程序运行时的状态,较低的特权级别,用户程序运行时的状态,较低的特权级别,又称为又称为普通态(普态)、用户态普通态(普态)、用户态具体处理器将具体处理器将CPUCPU状态划分为两种、三种或四种状态划分为两种、三种或四种实例:实例:x86x86系列处理器系列处理器 386386、486486、Pentiu

9、mPentium系列都支持系列都支持4 4个处理器特权级别个处理器特权级别 特权环:特权环:R0R0、R1R1、R2R2和和R3R3 从从R0R0到到R3R3特权能力依次降低:特权能力依次降低:R0R0相当于双状态系统的管相当于双状态系统的管态,态,R3R3相当于目态相当于目态四个级别运行不同类别的程序:四个级别运行不同类别的程序: R0R0- -运行操作系统核心代码运行操作系统核心代码 R1R1- -运行关键设备驱动程序和运行关键设备驱动程序和I/OI/O处理例程处理例程 R2R2- -运行其他受保护共享代码,如语言系统运行环境运行其他受保护共享代码,如语言系统运行环境 R3R3- -运行各

10、种用户程序运行各种用户程序 现有基于现有基于x86x86处理器的操作系统大都只用了处理器的操作系统大都只用了R0R0和和R3R3两个特权级别两个特权级别( (UNIXUNIX、LinuxLinux以及以及WindowsWindows系列系列) )4.4.程序状态字程序状态字PSW PSW (Program Status Word )(Program Status Word ) 在在PSWPSW中专门设置一位,根据运行程序使用指令中专门设置一位,根据运行程序使用指令的权限而设置的权限而设置CPUCPU状态状态 CPUCPU的工作状态码的工作状态码指明管态还是目态,用来指明管态还是目态,用来说明当

11、前在说明当前在CPUCPU上执行的是操作系统还是一般用上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其户,从而决定其是否可以使用特权指令或拥有其他的特殊权力他的特殊权力 条件码条件码反映指令执行后的结果特征反映指令执行后的结果特征 中断屏蔽码中断屏蔽码指出是否允许中断指出是否允许中断例例: :微处理器微处理器M68000M68000的程序状态字的程序状态字1514131211109 8 7 6 5 4 3 2 1 0TSI2I1I0X N Z V C条件位:条件位:C: 进位标志位进位标志位 V: 溢出标志位溢出标志位Z: 结果为零标志位结果为零标志位N: 结果为负标志位

12、结果为负标志位I0 I2:三位中断屏蔽位:三位中断屏蔽位S:CPU状态标志位,为状态标志位,为1处于管态,为处于管态,为0处于目态处于目态T:陷阱陷阱(Trap)中断指示位为中断指示位为1, 在下一条指令执行后引起自陷中断在下一条指令执行后引起自陷中断CF: 进位标志位进位标志位 ZF: 结果为零标志位结果为零标志位 SF: 符号标志位符号标志位OF: 溢出标志位溢出标志位标准条件位:标准条件位: TF:陷阱标志位:陷阱标志位IF:中断允许(中断屏蔽)标志位:中断允许(中断屏蔽)标志位VIF:虚拟中断标志位:虚拟中断标志位VIP:虚拟中断待决标志位:虚拟中断待决标志位IOPL:IO特权级别特权

13、级别 例例: :微处理器微处理器PentiumPentium的的FLAGSFLAGS和描述符和描述符CPUCPU状态的转换状态的转换目态目态管态管态 唯一途径唯一途径 是是 中断(广义)中断(广义)管态管态目态目态 设置设置PSW(PSW(修改程序状态字修改程序状态字) ) 可可实现实现一条特殊的指令:访管指令一条特殊的指令:访管指令 供用户调用操作系统的功能(服务)供用户调用操作系统的功能(服务)INT,TRAP,SYSCALL二、二、中断技术中断技术中断对于操作系统的重要性中断对于操作系统的重要性 就像机器中的驱动齿轮一样就像机器中的驱动齿轮一样可以认为操作系统可以认为操作系统 是由是由“

14、中断驱动中断驱动”或者或者 “ “(中断)事件驱(中断)事件驱动动” 及时处理设备的中断请求及时处理设备的中断请求 它使得它使得OSOS可以捕获用户程序发出的系统功能调用可以捕获用户程序发出的系统功能调用 防止用户程序中破坏性的活动防止用户程序中破坏性的活动 等等等等事件:事件:异步异步/ /同步事件同步事件1.1.中断的概念中断的概念 CPUCPU对系统发生的某个事件作出的一种反应对系统发生的某个事件作出的一种反应 CPUCPU暂停正在执行的程序,保留现场后暂停正在执行的程序,保留现场后自动自动转转去去执行相应事件的处理程序执行相应事件的处理程序,处理完成后返回,处理完成后返回断点,继续执行

15、被打断的程序断点,继续执行被打断的程序特点:特点: 1) 1) 中断是随机发生的中断是随机发生的 2) 2) 中断是可恢复的中断是可恢复的 3) 3) 中断是自动处理的中断是自动处理的中断的引入中断的引入:为了开发:为了开发CPUCPU和通道和通道( (或设备或设备) )之间的并行之间的并行操作,当操作,当CPUCPU启动通道启动通道( (或设备或设备) )进行输入进行输入/ /输出后,通输出后,通道道 ( (或设备或设备) )便可以独立工作,便可以独立工作,CPUCPU转去处理与此次输转去处理与此次输入入/ /输出不相关的事情。当通道输出不相关的事情。当通道( (或设备或设备) )完成输入完

16、成输入/ /输输出后,通过向出后,通过向CPUCPU发中断告诉发中断告诉CPUCPU此次输入此次输入/ /输出结束,输出结束,使使CPUCPU继续处理输入继续处理输入/ /输出以后的事情输出以后的事情中断的概念中断的概念(2/3)中断与异常中断与异常异常的引入异常的引入:用于表示:用于表示CPUCPU执行指令时本身出现算术溢执行指令时本身出现算术溢出、零做除数、取数时的奇偶错,访存指令越界或就出、零做除数、取数时的奇偶错,访存指令越界或就是执行了一条所谓是执行了一条所谓“异常指令异常指令”(用于实现系统调用)(用于实现系统调用)等情况,这时中断当前的执行流程,转到相应的错误等情况,这时中断当前

17、的执行流程,转到相应的错误处理程序或异常处理程序处理程序或异常处理程序中断中断( (外中断外中断) )异常异常( (内中断内中断) )例外例外I/OI/O中断中断时钟中断时钟中断系统调用系统调用缺页异常缺页异常断点指令断点指令其他程序性异常其他程序性异常( (如算术溢出等如算术溢出等) )中断中断( (狭义狭义) )与异常的区别与异常的区别: :中断中断: : 与正执行指令无关,可以屏蔽与正执行指令无关,可以屏蔽异常异常: : 与正执行指令有关,不可屏蔽与正执行指令有关,不可屏蔽广义中断广义中断中断的概念(中断的概念(3/3)硬件故障硬件故障2.2.中断系统中断系统中断系统是现代计算机系统的核

18、心机制之一中断系统是现代计算机系统的核心机制之一 硬件和软件相互配合、相互渗透而使得计算机系硬件和软件相互配合、相互渗透而使得计算机系统得以充分发挥能力统得以充分发挥能力中断系统中断系统的两大组成部分:的两大组成部分: 硬件中断装置和软件中断处理程序硬件中断装置和软件中断处理程序 中断系统的硬件中断装置中断系统的硬件中断装置- -中断系统的机制部分中断系统的机制部分 负责捕获中断源发出的中断请求,以一定方式响负责捕获中断源发出的中断请求,以一定方式响应中断源,然后将处理器控制权交给特定的中断应中断源,然后将处理器控制权交给特定的中断处理程序处理程序 软件中断处理程序软件中断处理程序- -中断系

19、统的策略部分中断系统的策略部分 负责辨别中断类型并做出相应的操作负责辨别中断类型并做出相应的操作 中断源:引起中断发生的事件中断源:引起中断发生的事件 中断寄存器:记录中断中断寄存器:记录中断 中断字:中断寄存器的内容中断字:中断寄存器的内容系统堆栈系统堆栈: : 在内存开辟的一块区域,用于临时保存在内存开辟的一块区域,用于临时保存现场现场中断系统中的相关概念中断系统中的相关概念3.中断类型(中断类型(1/2) 输入输入/ /输出输出(I/O)(I/O)中断中断:由:由I/OI/O控制器产生控制器产生 程序性中断程序性中断:某些条件下由指令执行的结果产生:某些条件下由指令执行的结果产生 ( (

20、如算术溢出如算术溢出, ,除零,缺页中断除零,缺页中断, , 地址越界,试图地址越界,试图执行一条非法指令执行一条非法指令) ) 时钟中断时钟中断:由:由CPUCPU内部的计时器产生内部的计时器产生 硬件故障中断硬件故障中断:如:如掉电或内存奇偶错掉电或内存奇偶错等等强迫性中断强迫性中断 正在运行的程序所不期望正在运行的程序所不期望的,由于某种硬件故障或外部的,由于某种硬件故障或外部请求引起的请求引起的William Stallings中断类型(中断类型(2/2)访管指令访管指令/ /系统调用引发的中断系统调用引发的中断 执行执行I/OI/O,创建进程,分配内存,创建进程,分配内存 信号量操作

21、,发送信号量操作,发送/ /接收消息接收消息 断点调试断点调试自愿性中断自愿性中断 用户在程序中有意识安排的用户在程序中有意识安排的中断,是由于用户在编制程序时中断,是由于用户在编制程序时因为要求操作系统提供服务,有因为要求操作系统提供服务,有意使用意使用“访管访管”指令或系统调用,指令或系统调用,使中断发生使中断发生例:微机中的中断例:微机中的中断1.1.可屏蔽中断(可屏蔽中断(IOIO中断)中断)2.2.不可屏蔽中断(机器内部故障、掉电中断)不可屏蔽中断(机器内部故障、掉电中断)3.3.程序错误中断(溢出、除法错等中断)程序错误中断(溢出、除法错等中断)4.4.软件中断(软件中断(Trap

22、Trap指令或中断指令指令或中断指令INTINT)例:例:IBM370IBM370中的中断中的中断1. 1. 机器故障中断:如电源故障,机器电路检验错等机器故障中断:如电源故障,机器电路检验错等2. 2. 输入输出中断:输入输出设备和通道数据传输状态)输入输出中断:输入输出设备和通道数据传输状态)3. 3. 外部中断:时钟中断,操作员控制台中断,多机系统中外部中断:时钟中断,操作员控制台中断,多机系统中其他机器的通信要求中断,各种外设或传感器发来的实其他机器的通信要求中断,各种外设或传感器发来的实时中断等时中断等4. 4. 程序中断:程序中的问题引起的中断,如错误地使用指程序中断:程序中的问题

23、引起的中断,如错误地使用指令或数据、溢出等问题,存储保护等令或数据、溢出等问题,存储保护等5. 5. 访管中断:访管指令或陷阱指令(访管中断:访管指令或陷阱指令(TrapTrap指令)中的操作指令)中的操作数规定了要求服务的类型。每当数规定了要求服务的类型。每当CPUCPU执行访管指令或陷阱执行访管指令或陷阱指令时,即引起中断并调用操作系统相应的功能模块为指令时,即引起中断并调用操作系统相应的功能模块为其服务其服务广义上讲,中断可分为四类:广义上讲,中断可分为四类:中断、故障、陷中断、故障、陷阱、终止,阱、终止,其异同点如下:其异同点如下:类别类别原因原因异步异步/ /同步同步返回行为返回行为

24、中断中断来自来自I/OI/O设备的信号设备的信号 异步异步总是返回到下一条总是返回到下一条指令指令陷阱陷阱有意的异常有意的异常同步同步总是返回到下一条总是返回到下一条指令指令故障故障潜在可恢复的错误潜在可恢复的错误同步同步返回到当前指令返回到当前指令终止终止不可恢复的错误不可恢复的错误同步同步不会返回不会返回中断优先级设计原则:中断优先级设计原则:一般来说,高速设备的中一般来说,高速设备的中断优先级高,慢速设备的中断优先级低。因为高断优先级高,慢速设备的中断优先级低。因为高速设备的中断被处理机优先响应时,可以让处理速设备的中断被处理机优先响应时,可以让处理机尽快地向它发出下一个机尽快地向它发出

25、下一个I/OI/O请求,提高高速设备请求,提高高速设备的利用率的利用率如如PDP-11PDP-11机上的机上的UNIXUNIX系统把中断级别分为:系统把中断级别分为:时钟中断时钟中断中断优先级中断优先级6 6级级磁盘中断磁盘中断中断优先级中断优先级5 5级级终端等其他外设中断终端等其他外设中断中断优先级中断优先级4 4级级4.4.中断优先级和中断屏蔽(中断优先级和中断屏蔽(1/3)处理机优先级:处理机优先级:指出处理机正运行程序的中断响指出处理机正运行程序的中断响应级别。即当处理机处于某一优先级时,只允许应级别。即当处理机处于某一优先级时,只允许处理机去响应比该优先级高的中断处理机去响应比该优

26、先级高的中断, ,而屏蔽低于或而屏蔽低于或等于该优先级的中断等于该优先级的中断 可以通过设置处理机优先级来通知硬件:屏可以通过设置处理机优先级来通知硬件:屏蔽优先级小于等于处理机优先级的中断蔽优先级小于等于处理机优先级的中断中断屏蔽:中断屏蔽:指禁止指禁止CPUCPU响应中断或禁止中断出现响应中断或禁止中断出现中断优先级和中断屏蔽(中断优先级和中断屏蔽(2/3)中断屏蔽有两种方法中断屏蔽有两种方法:n 硬件实现硬件实现由软件置处理机优先级,硬件按系由软件置处理机优先级,硬件按系统设计时的约定,屏蔽那些低优先级中断统设计时的约定,屏蔽那些低优先级中断n 软件实现软件实现由软件按操作系统优先级约定

27、由软件按操作系统优先级约定, ,设置设置屏蔽寄存器屏蔽寄存器中断优先级和中断屏蔽(中断优先级和中断屏蔽(3/3)5.中断响应(中断响应(1/2) CPUCPU如何响应中断如何响应中断, , 要回答两个问题:要回答两个问题: CPUCPU何时响应中断?何时响应中断? 处理器控制部件中设有:中断扫描机构处理器控制部件中设有:中断扫描机构 如何知道提出中断请求的设备或中断源?如何知道提出中断请求的设备或中断源?中断响应:中断响应: 发现中断、接收中断的过程发现中断、接收中断的过程 由中断装置完成由中断装置完成开始开始取下一条指令取下一条指令执行指令执行指令检查指令检查指令处理中断处理中断停止停止取周

28、期取周期执行周期执行周期中断周期中断周期不允许中断不允许中断允许允许中断中断中断响应(2/2)在每条指令执行周在每条指令执行周期的最后时刻扫描期的最后时刻扫描中断寄存器,询问中断寄存器,询问是否有中断信号是否有中断信号若无中断信号,继若无中断信号,继续执行下一条指令续执行下一条指令若有中断,中断硬件将若有中断,中断硬件将该中断触发器内容按规该中断触发器内容按规定编码送入定编码送入PSWPSW的相应的相应位,称为中断码,通过位,称为中断码,通过交换中断向量引出中断交换中断向量引出中断处理程序处理程序 中断向量:中断向量:一个存放中断处理程序入口地址和程一个存放中断处理程序入口地址和程序运行所需处

29、理机状态字的内存单元序运行所需处理机状态字的内存单元硬件按中断号、异常类型的不同通过中断向量表硬件按中断号、异常类型的不同通过中断向量表转移转移有的机器中:有的机器中: 将内存最低位将内存最低位128128个字保留作为中断向量表,每个中个字保留作为中断向量表,每个中断向量占两个字断向量占两个字中断向量表中断向量表中断响应示意图中断响应示意图简单的中断处理过程简单的中断处理过程6.中断处理中断处理(1/3)中断处理(中断处理(2/3)简单的中断处理简单的中断处理 - - 典型的处理过程:典型的处理过程:(1 1)设备给处理器发一个中断信号)设备给处理器发一个中断信号(2 2)处理器处理完当前指令

30、后响应中断,延迟非常短(要求)处理器处理完当前指令后响应中断,延迟非常短(要求处理器没有关闭中断)处理器没有关闭中断)(3 3)处理器处理完当前指令后检测到中断,判断出中断来源)处理器处理完当前指令后检测到中断,判断出中断来源并向发送中断的设备发送了确认中断信号,确认信号使得并向发送中断的设备发送了确认中断信号,确认信号使得该设备将中断信号恢复到一般状态该设备将中断信号恢复到一般状态(4 4)处理器开始为软件处理中断做准备:)处理器开始为软件处理中断做准备: 保存中断点的程序执行上下文环境,这通常包括程保存中断点的程序执行上下文环境,这通常包括程 序状态序状态字字PSWPSW,程序计数器,程序

31、计数器PCPC中的下一条指令位置,一些寄存器的中的下一条指令位置,一些寄存器的值,它们通常保存在系统控制栈中值,它们通常保存在系统控制栈中 处理器状态被切换到管态处理器状态被切换到管态(5 5)处理器根据中断源查询中断向量表,获得与该中断相联)处理器根据中断源查询中断向量表,获得与该中断相联系的处理程序入口地址,并将系的处理程序入口地址,并将PCPC置成该地址,处理器开始置成该地址,处理器开始一个新的指令周期,控制转移到中断处理程序一个新的指令周期,控制转移到中断处理程序(6 6)中断处理程序开始工作,包括检查)中断处理程序开始工作,包括检查I/OI/O相关的状态信息,相关的状态信息,操纵操纵

32、I/OI/O设备或者在设备和主存之间传送数据等等设备或者在设备和主存之间传送数据等等(7 7)中断处理结束时,处理器检测到中断返回指令,被中断)中断处理结束时,处理器检测到中断返回指令,被中断程序的上下文环境从系统堆栈中恢复程序的上下文环境从系统堆栈中恢复 处理器状态恢复成原来的状态处理器状态恢复成原来的状态(8 8)PSWPSW和和PCPC恢复成中断前的值,处理器开始一个新的指令周恢复成中断前的值,处理器开始一个新的指令周期,中断处理结束期,中断处理结束中断处理中断处理(3/3)7.典型的中断处理典型的中断处理(1):I/O中断中断由由I/OI/O设备的控制器或者通道发出设备的控制器或者通道

33、发出两类两类I/OI/O中断:中断: I/OI/O操作正常结束操作正常结束 如果要继续如果要继续I/OI/O操作,需要在准备好以后重新启操作,需要在准备好以后重新启动动I/OI/O,若请求,若请求I/OI/O程序正处于等待程序正处于等待I/OI/O状态,则状态,则应将其唤醒应将其唤醒 I/OI/O异常异常 需要重新执行失败的需要重新执行失败的I/OI/O操作操作 重试次数有上限,次数过大,系统将判定硬件故重试次数有上限,次数过大,系统将判定硬件故障障系统多道能力的重要推动力量,时钟中断处理程序通常系统多道能力的重要推动力量,时钟中断处理程序通常做与系统运转、管理和维护相关的工作,包括:做与系统

34、运转、管理和维护相关的工作,包括: 维护软件时钟:系统有若干个软件时钟,控制定时任维护软件时钟:系统有若干个软件时钟,控制定时任务以及进程的处理器时间配额,时钟中断需要维护、务以及进程的处理器时间配额,时钟中断需要维护、定时更新这些软件时钟定时更新这些软件时钟 处理器时间调度:维护当前进程时间片软件时钟,并处理器时间调度:维护当前进程时间片软件时钟,并在当前进程时间片到时以后运行调度程序选择下一个在当前进程时间片到时以后运行调度程序选择下一个被调度的进程被调度的进程 控制系统定时任务:通过软件时钟和调度程序定时激控制系统定时任务:通过软件时钟和调度程序定时激活一些系统任务,如监测死锁、系统记帐

35、、系统审计活一些系统任务,如监测死锁、系统记帐、系统审计等等 实时处理实时处理典型的中断处理典型的中断处理(2):时钟中断:时钟中断典型的中断处理典型的中断处理(3):硬件故障中断:硬件故障中断 硬件故障中断处理程序一般需要做的工作:硬件故障中断处理程序一般需要做的工作: 保存现场,使用一定警告手段,提供些辅助诊断信息保存现场,使用一定警告手段,提供些辅助诊断信息 在高可靠系统中,中断处理程序还要评估系统可用性,在高可靠系统中,中断处理程序还要评估系统可用性,尽可能恢复系统尽可能恢复系统 如如Windows 2000/XPWindows 2000/XP,关键硬件发生故障时,如显示卡,关键硬件发

36、生故障时,如显示卡损坏,出现系统蓝屏,系统实际上进入相应故障处理程损坏,出现系统蓝屏,系统实际上进入相应故障处理程序,发现故障不可恢复,则在屏幕上打印出发生故障时序,发现故障不可恢复,则在屏幕上打印出发生故障时程序位置,并开始进行内存转储(将一定范围的内存内程序位置,并开始进行内存转储(将一定范围的内存内容写上磁盘,是系统故障时的全系统容写上磁盘,是系统故障时的全系统“快照快照”),备日),备日后故障诊断后故障诊断程序指令出错、指令越权或者指令寻址越界而引发程序指令出错、指令越权或者指令寻址越界而引发两类处理方法:两类处理方法: 只能由操作系统的相关扩展功能模块完成只能由操作系统的相关扩展功能

37、模块完成 多为程序试图作不能做的操作引起的系统保护多为程序试图作不能做的操作引起的系统保护 如访问合法的、但不在内存虚地址内,引发页故障页故障一如访问合法的、但不在内存虚地址内,引发页故障页故障一般会引发般会引发OSOS虚存模块作一个页面换入虚存模块作一个页面换入 可由程序自己完成,如一些算术运算错误可由程序自己完成,如一些算术运算错误 不同程序可有不同处理方法,所以很多不同程序可有不同处理方法,所以很多OSOS提供由用户自己处提供由用户自己处理这类中断的理这类中断的“绿色通道绿色通道” 系统调试中断(断点中断、单步跟踪)也可被用户程序处理,系统调试中断(断点中断、单步跟踪)也可被用户程序处理

38、,用以支持各种程序调试用以支持各种程序调试典型的中断处理典型的中断处理(4):程序性中断:程序性中断典型的中断处理典型的中断处理(5):系统服务请求:系统服务请求系统服务请求由处理器专用指令(访管指令)激发系统服务请求由处理器专用指令(访管指令)激发 如如x86x86处理器提供处理器提供intint指令,用来激发软件中断指令,用来激发软件中断 其他不少处理器则提供系统调用指令其他不少处理器则提供系统调用指令syscallsyscall 现代操作系统一般不提供直接使用系统调用指令的接现代操作系统一般不提供直接使用系统调用指令的接口,通常做法:提供一套方便、实用的应用程序函数口,通常做法:提供一套

39、方便、实用的应用程序函数库(应用程序设计接口库(应用程序设计接口APIAPI) 从应用层面重新封装系统调用从应用层面重新封装系统调用 屏蔽复杂的系统调用传参问题屏蔽复杂的系统调用传参问题 高级语言接口,有助于快速开发高级语言接口,有助于快速开发 有的系统在更高层面提供系统程序设计模板库和类库有的系统在更高层面提供系统程序设计模板库和类库IA32体系结构对中断的支持基本概念基本概念 中断中断由硬件信号引发的,分为可屏蔽和不可屏蔽中由硬件信号引发的,分为可屏蔽和不可屏蔽中断断 异常异常由指令执行引发的,比如除零异常由指令执行引发的,比如除零异常80 x8680 x86处理器发布了大约处理器发布了大

40、约2020种不同的异常种不同的异常对于某些异常,对于某些异常,CPUCPU会在执行异常处理程序之前会在执行异常处理程序之前产生硬件出错码,并压入内核态堆栈产生硬件出错码,并压入内核态堆栈 系统调用系统调用异常的一种,用户态到系统态的唯一入口异常的一种,用户态到系统态的唯一入口IA32IA32体系结构对中断的支持体系结构对中断的支持(1/6) 中断控制器中断控制器负责将硬件的中断信号转换为中断向量,并引负责将硬件的中断信号转换为中断向量,并引发发CPUCPU中断中断 中断向量中断向量MS-DOSMS-DOS:存放中断服务程序的入口地址:存放中断服务程序的入口地址入口地址段地址偏移入口地址段地址偏

41、移与一般的过程调用相同与一般的过程调用相同不支持不支持CPUCPU运行状态切换运行状态切换LinuxLinux:采用门:采用门(gate)(gate)数据结构描述中断向量数据结构描述中断向量IA32IA32体系结构对中断的支持体系结构对中断的支持(2/6) 中断向量表中断向量表/ /中断描述符表中断描述符表表项包含三种类型门描述符表项包含三种类型门描述符任务门任务门(Task gate)(Task gate)中断发生时,必须取代当前进程的那个进程的中断发生时,必须取代当前进程的那个进程的TSSTSS选择符存放在任务门中选择符存放在任务门中(LinuxLinux没有使用任务没有使用任务门)门)中

42、断门中断门(Interrupt gate)(Interrupt gate)包括段选择符、中断包括段选择符、中断/ /异常程序的段内偏移量,异常程序的段内偏移量,通过中断门后系统会自动关中断通过中断门后系统会自动关中断陷阱门陷阱门(Trap gate)(Trap gate)与中断门类似,但通过陷阱门后系统不会自动关与中断门类似,但通过陷阱门后系统不会自动关中断中断IA32IA32体系结构对中断的支持体系结构对中断的支持(3/6) 中断服务程序入口地址:段选择码偏移中断服务程序入口地址:段选择码偏移描述符是否有效段选段选择符择符偏移偏移量量偏移偏移量量IA32IA32体系结构对中断的支持体系结构对

43、中断的支持(4/6)中断中断/ /异常的硬件处理过程:异常的硬件处理过程:1.1.确定与中断或异常相关联的向量确定与中断或异常相关联的向量i i2.2.读取读取IDTRIDTR寄存器指向的中断向量表的第寄存器指向的中断向量表的第i i项,项,获得中断描述符获得中断描述符3.3.从从GDTRGDTR寄存器获得寄存器获得GDTGDT的基地址,读取中断描的基地址,读取中断描述符中段选择符所标识的段描述符,可从该描述符中段选择符所标识的段描述符,可从该描述符中得到中断或异常处理程序所在的段基址述符中得到中断或异常处理程序所在的段基址IA32IA32体系结构对中断的支持体系结构对中断的支持(5/6)4.

44、4.确信中断是由授权的发生源发生的确信中断是由授权的发生源发生的确保确保CPLCPL(存放在(存放在CSCS寄存器中)寄存器中) = = 段描述符段描述符DPLDPL当前特权级不高于中断处理程序的特权级当前特权级不高于中断处理程序的特权级确保确保CPL=CPL=门描述符门描述符DPLDPL避免应用程序访问特殊的陷阱门或中断门避免应用程序访问特殊的陷阱门或中断门5.5.检查是否发生了特权级的变化,如果是,必检查是否发生了特权级的变化,如果是,必须使用与新的特权级相关的栈须使用与新的特权级相关的栈( (堆栈切换堆栈切换) )6.6.硬件压栈,保存上下文,如果异常产生了硬硬件压栈,保存上下文,如果异

45、常产生了硬件出错码,则将它保存在栈中件出错码,则将它保存在栈中IA32IA32体系结构对中断的支持体系结构对中断的支持(6/6)7.7.通过中断描述符中的段内偏移,找到中断通过中断描述符中的段内偏移,找到中断或异常处理程序入口,执行其第一条指令或异常处理程序入口,执行其第一条指令三、系统调用三、系统调用系统调用系统调用:用户在程序中调用操作系统提供的一些子功能:用户在程序中调用操作系统提供的一些子功能 一种特殊的过程调用,由特殊的机器指令实现(一种特殊的过程调用,由特殊的机器指令实现(每种机器每种机器的机器指令集中都有一条系统调用指令的机器指令集中都有一条系统调用指令访管指令访管指令) 系统调

46、用是操作系统提供给编程人员的唯一接口系统调用是操作系统提供给编程人员的唯一接口 系统状态从目态转入管态系统状态从目态转入管态 系统调用是一个低级过程,只能由汇编语言直接访问系统调用是一个低级过程,只能由汇编语言直接访问 利用系统调用,动态请求和释放系统资源利用系统调用,动态请求和释放系统资源 完成与硬件相关的工作以及控制程序的执行等完成与硬件相关的工作以及控制程序的执行等每个操作系统都提供几百种系统调用每个操作系统都提供几百种系统调用1.1.系统调用的处理过程(系统调用的处理过程(1/21/2)机制的设计机制的设计 陷入陷入(TRAPTRAP)或异常处理机制或异常处理机制 系统中控制系统调用服

47、务的机制系统中控制系统调用服务的机制 陷入或异常指令(或称访管指令)陷入或异常指令(或称访管指令) 由系统调用引起处理机中断的指令由系统调用引起处理机中断的指令 系统调用的功能号和参数系统调用的功能号和参数 每个系统调用都对应一个事先给定的功能号每个系统调用都对应一个事先给定的功能号 在陷入指令中必须包括对应的系统调用的功能号在陷入指令中必须包括对应的系统调用的功能号 有些陷入指令中,还带有传给陷入处理机制和内部处理有些陷入指令中,还带有传给陷入处理机制和内部处理程序的有关参数程序的有关参数 入口地址表入口地址表 每个入口地址对应一个系统调用功能子程序每个入口地址对应一个系统调用功能子程序 陷

48、入处理机制把陷入指令中的功能号与入口地址表有关项对陷入处理机制把陷入指令中的功能号与入口地址表有关项对应应, , 驱动有关子程序执行驱动有关子程序执行保护现场:保护现场: 进入系统调用处理前,陷入处理机制还需保存处理机现场进入系统调用处理前,陷入处理机制还需保存处理机现场 在系统调用处理结束之后,要恢复处理机现场,现场被保在系统调用处理结束之后,要恢复处理机现场,现场被保护在特定的内存区或寄存器中护在特定的内存区或寄存器中系统调用的处理过程(系统调用的处理过程(2/22/2) 系统系统调用调用 入口地址表入口地址表 (1)保存现场保存现场(2)取系统调取系统调用功能号并用功能号并寻找子程序寻找

49、子程序入口入口(3)返回返回A0A1Ai AnA0 A1AiAnSub0Sub1SubiSubn 用户程序用户程序 陷入处理机制陷入处理机制 系统子程序系统子程序系统调用的处理过程示意系统调用的处理过程示意参数传递过程问题参数传递过程问题怎样实现用户程序和系统程序之间的参数传递?怎样实现用户程序和系统程序之间的参数传递?常用的常用的3 3种实现方法:种实现方法: 由陷入指令自带参数由陷入指令自带参数:陷入指令的长度有限,且:陷入指令的长度有限,且还要携带系统调用功能号,只能自带有限的参数还要携带系统调用功能号,只能自带有限的参数 通过通用寄存器传递参数通过通用寄存器传递参数:这些寄存器是系统程

50、:这些寄存器是系统程序和用户程序都能访问的,由于寄存器长度较短,序和用户程序都能访问的,由于寄存器长度较短,传递的参数数量有限传递的参数数量有限 在内存中开辟专用堆栈区来传递参数在内存中开辟专用堆栈区来传递参数2.2.系统调用的分类系统调用的分类系统的功能可分为两部分:系统的功能可分为两部分: 系统自身所需要的系统自身所需要的 作为服务提供给用户的作为服务提供给用户的OSOS的系统调用的系统调用: : 进程控制类系统调用进程控制类系统调用 文件操作类系统调用文件操作类系统调用 进程通信类系统调用进程通信类系统调用 设备管理类系统调用设备管理类系统调用 信息维护类系统调用信息维护类系统调用进程管

51、理进程管理文件管理文件管理目录管理目录管理其他其他3.Win32 3.Win32 应用程序接口应用程序接口 在在WindowsWindows中,定义了一系列程序中,定义了一系列程序( (应用程序接口应用程序接口Win32 Win32 API) API) ,提供,提供OSOS服务服务 这个接口(部分)支持这个接口(部分)支持Win95 Win95 以后的以后的WindowsWindows版本版本Win32 Win32 APIAPI调用的种类非常多,以千计算调用的种类非常多,以千计算 在在WindowsWindows中不可能分辨出哪些是系统调用(被内核执行),中不可能分辨出哪些是系统调用(被内核执

52、行),哪些是用户空间的库调用哪些是用户空间的库调用 事实上,一个事实上,一个WindowsWindows版本中的系统调用也许在另一个版本中的系统调用也许在另一个WindowsWindows版本中会在用户空间执行版本中会在用户空间执行 由于图形子系统在内核中运行(在某些由于图形子系统在内核中运行(在某些WindowsWindows版本中),版本中),它们也是系统调用,否则是库调用它们也是系统调用,否则是库调用4.Linux4.Linux的系统调用实现的系统调用实现 基于基于x86x86体系结构体系结构 软件中断指令软件中断指令 int 128int 128 int $0 x80 int $0 x

53、80(PentiumII(PentiumII引入引入sysentersysenter,Linux2.6Linux2.6以后版本提供支持以后版本提供支持) ) 陷阱门描述符陷阱门描述符 不影响硬件中断请求不影响硬件中断请求 门描述符门描述符系统初始化时:对系统初始化时:对IDTIDT表中的第表中的第128128号陷阱门初始化号陷阱门初始化门描述符的门描述符的2 2、3 3两个字节:内核代码段选择符两个字节:内核代码段选择符 0 0、1 1、6 6、7 7四个字节:偏移量(指向四个字节:偏移量(指向system_call()system_call()) 类型号类型号1515(陷阱门)(陷阱门) D

54、PL DPL:3 3,与用户级别相同,允许用户进程使用该门描述符,与用户级别相同,允许用户进程使用该门描述符系统执行系统执行int $0 x80int $0 x80指令(指令(1/21/2) 由于特权级的改变,要切换内存堆栈由于特权级的改变,要切换内存堆栈 用户态堆栈用户态堆栈内核态堆栈内核态堆栈 CPUCPU要从任务状态段要从任务状态段TSSTSS中装入新的堆栈指针中装入新的堆栈指针(SSSSESPESP),指向内核堆栈),指向内核堆栈 用户态堆栈信息(用户态堆栈信息(SSSSESPESP)、用户态)、用户态CS CS 、 EIPEIP、EFLAGSEFLAGS寄存器的内容压栈(返回用)寄存

55、器的内容压栈(返回用) 将将EFLAGSEFLAGS压栈后,复位压栈后,复位TFTF,IFIF位保持不变位保持不变系统执行系统执行int $0 x80int $0 x80指令(指令(2/22/2) 用用128128在在IDTIDT中找到该门描述符,从中找出段选中找到该门描述符,从中找出段选择符装入代码段寄存器择符装入代码段寄存器CSCS 同时,将要执行的代码段描述符缓存在高速缓同时,将要执行的代码段描述符缓存在高速缓存寄存器中存寄存器中 代码段描述符中的基址代码段描述符中的基址 + + 陷阱门描述符中的陷阱门描述符中的偏移量偏移量 定位定位 代码段的入口地址代码段的入口地址 system_ca

56、ll() system_call() 保护级检查保护级检查 规则:代码只能访问相同或较低特权级的数据规则:代码只能访问相同或较低特权级的数据 系统调用号:系统调用号:EAXEAX,参数:,参数:EBXEBX、ECXECX、EDXEDX、ESIESI、EDIEDIsystem_call()system_call()函数函数源代码包源代码包/Arch/x86/kernel/entry_32.S/Arch/x86/kernel/entry_32.Spushl %eaxpushl %eax #eax #eax中保存系统调用号中保存系统调用号 SAVE_ALLSAVE_ALL # #将将eses、dsd

57、s、eaxeax等等9 9个寄存器个寄存器压栈,保存现场压栈,保存现场GET_THREAD_INFO(%ebp)GET_THREAD_INFO(%ebp) # #获取当前线程信获取当前线程信息息testw testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%e$_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)bp)jnz syscall_trace_entryjnz syscall_trace_entry # #判断当前线判断当前线程是否被调试器跟踪,是则进行相应处理,程是否被调试器跟踪,是则进行相应处理,使调试器能获得系统调用时的信息

58、使调试器能获得系统调用时的信息system_call()system_call()函数(续)函数(续)cmpl $(nr_syscalls), %eaxcmpl $(nr_syscalls), %eax # #判断系统判断系统调用号是否越界调用号是否越界jae syscall_badsysjae syscall_badsys # #越界就转入错误处越界就转入错误处理理syscall_call:syscall_call:call call * *sys_call_table(,%eax,4)sys_call_table(,%eax,4) # #在系在系统调用分配表统调用分配表(system ca

59、ll dispatch (system call dispatch table)table)中查找对应的系统调用处理程序中查找对应的系统调用处理程序入口地址,并转而执行该程序入口地址,并转而执行该程序系统调用的返回系统调用的返回movl %eax,PT_EAX(%esp)movl %eax,PT_EAX(%esp)# #返回值存入用户态返回值存入用户态eaxeax在栈中的地址在栈中的地址syscall_exit:syscall_exit:LOCKDEP_SYS_EXITLOCKDEP_SYS_EXITDISABLE_INTERRUPTS(CLBR_ANY)DISABLE_INTERRUPTS(

60、CLBR_ANY) # #关中断关中断TRACE_IRQS_OFFTRACE_IRQS_OFFmovl TI_flags(%ebp), %ecxmovl TI_flags(%ebp), %ecxtestw $_TIF_ALLWORK_MASK, %cxtestw $_TIF_ALLWORK_MASK, %cx # #检查线程信息块中检查线程信息块中的某些标志位的某些标志位jne syscall_exit_workjne syscall_exit_work # #如果有不为如果有不为0 0的则返回前还要的则返回前还要进行相应的处理进行相应的处理系统调用的返回(续)系统调用的返回(续)最后,执行标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论