第一章操作系统运行的硬件基础_第1页
第一章操作系统运行的硬件基础_第2页
第一章操作系统运行的硬件基础_第3页
第一章操作系统运行的硬件基础_第4页
第一章操作系统运行的硬件基础_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

1、第第1章章 操作系统运行的硬件基础操作系统运行的硬件基础1.1 1.1 中央处理器(中央处理器(CPUCPU)1.2 1.2 中断技术中断技术1.3 1.3 系统调用系统调用1.4 1.4 存储器存储器1.5 I/O1.5 I/O端口寻址与访问控制端口寻址与访问控制1.1 中央处理器(中央处理器(CPU)1.单处理器与多处理器系统单处理器与多处理器系统一个计算机系统只有一个处理器,称之为单处一个计算机系统只有一个处理器,称之为单处理器系统理器系统如果有多个处理器称之为多处理器系统如果有多个处理器称之为多处理器系统处理器由运算器、处理器由运算器、控制器控制器、一组寄存器和高速缓存构成。、一组寄存

2、器和高速缓存构成。程序计数器程序计数器 PC指令寄存器指令寄存器 IR 处理器状态字处理器状态字PSW堆栈指示器堆栈指示器 SP指令译码器指令译码器 IDI/O控制逻辑控制逻辑工作寄存器工作寄存器地址寄存器地址寄存器数据寄存器数据寄存器 ALU控制器控制器CU1.1 中央处理器(中央处理器(CPU)指令译码器指令译码器IDID:是:是控制器控制器中的主要部件之一中的主要部件之一,分析指令操作码,以决定分析指令操作码,以决定执执行的操作行的操作。程序计数器程序计数器PCPC:程序计数器是用于存放下一条指令的主存单元地址。单片:程序计数器是用于存放下一条指令的主存单元地址。单片机及汇编语言中常称作

3、机及汇编语言中常称作PCPC(Program CounterProgram Counter)。程序开始执行前,必须将)。程序开始执行前,必须将它的起始地址,即程序开始执行指令的内存单元地址送入它的起始地址,即程序开始执行指令的内存单元地址送入PC PC PSWPSW:状态寄存器:状态寄存器, ,存放指令的执行状态:存放指令的执行状态:CPUCPU执行状态、溢出、中断屏蔽码执行状态、溢出、中断屏蔽码等。等。例:例:32位机器的位机器的CPU寄存器寄存器2. 寄存器分类寄存器分类两类寄存器:两类寄存器:用户可见寄存器(工作寄存器):用户可见寄存器(工作寄存器):对所有程序对所有程序都是可用的,包括

4、系统程序和用户程序。都是可用的,包括系统程序和用户程序。控制和状态寄存器控制和状态寄存器:用于控制处理器的操作,:用于控制处理器的操作,大部分对用户不可见,大部分对用户不可见, 由由OS的特权代码使用。的特权代码使用。1.1 中央处理器(中央处理器(CPU)(1)用户可见寄存器)用户可见寄存器用户程序可以访问到的寄存器,包括数据寄存用户程序可以访问到的寄存器,包括数据寄存器、地址寄存器等。器、地址寄存器等。数据寄存器数据寄存器(data register)又称通用寄存器,又称通用寄存器,主要用于各种算术逻辑指令和访存指令。主要用于各种算术逻辑指令和访存指令。地址寄存器地址寄存器(address

5、 registeraddress register)用于存储指)用于存储指令或数据的内存地址。令或数据的内存地址。变址寄存器变址寄存器段寄存器段寄存器栈指针栈指针(2)控制和状态寄存器)控制和状态寄存器 用于控制处理器的操作,对于用户不可见的(用户不可以使用于控制处理器的操作,对于用户不可见的(用户不可以使用)。常见的控制和状态寄存器用)。常见的控制和状态寄存器: :程序计数器程序计数器(PC:Program Counter),记录将要取出,记录将要取出的指令的地址。的指令的地址。指令寄存器指令寄存器(IR:Instruction Register),包含最近取,包含最近取出的指令。出的指令。

6、程序状态字程序状态字(PSW:Program Status Word),记录处,记录处理器的运行模式信息。理器的运行模式信息。条件码寄存器:条件码寄存器:保存保存CPU操作结果的各种标记位,如算术操作结果的各种标记位,如算术运算产生的溢出、符号等等。机器指令只能通过隐式访问运算产生的溢出、符号等等。机器指令只能通过隐式访问来读取该寄存器的各个位,不能显示访问修改。)来读取该寄存器的各个位,不能显示访问修改。)中断寄存器中断寄存器3.处理器状态处理器状态 根据运行程序对资源和机器指令的使用权限,将处理器设根据运行程序对资源和机器指令的使用权限,将处理器设置为不同的工作状态。置为不同的工作状态。多

7、数系统将处理器工作状态划分为多数系统将处理器工作状态划分为内核内核态态和和用户用户态态:内核态内核态:操作系统管理(核心)程序运行时的:操作系统管理(核心)程序运行时的CPU状态,状态,又称为又称为特权特权态态、系统系统态态、管管态态或或核心核心态态用户态用户态:用户程序运行时的:用户程序运行时的CPU状态,又称为状态,又称为普通态普通态或或目目态态。有些系统将处理器状态划分有些系统将处理器状态划分核心状态核心状态,管理状态管理状态和和用户程序用户程序状态状态三种。三种。实例:实例:x86系列系列CPU386、486、Pentium系列都支持系列都支持4个处理器特个处理器特权级别(特权环:权级

8、别(特权环:R0、R1、R2和和R3)从从R0到到R3特权能力依次降低特权能力依次降低R0相当于双状态系统的内核态相当于双状态系统的内核态R3相当于用户态相当于用户态R1和和R2则介于两者之间,它们能够运行的指令则介于两者之间,它们能够运行的指令集合具有包含关系:集合具有包含关系:3210RRRRIIII各个级别有保护性检查(地址校验、各个级别有保护性检查(地址校验、I/O限制),并分限制),并分别运行不同级别的程序:别运行不同级别的程序:R0- -运行操作系统核心代码运行操作系统核心代码R1- -运行关键设备驱动程序和运行关键设备驱动程序和I/O处理例程处理例程R2- -运行其它受保护共享代

9、码,如语言系统运行环境运行其它受保护共享代码,如语言系统运行环境R3- -运行各种用户程序运行各种用户程序现有基于现有基于x86处理器的操作系统,多数处理器的操作系统,多数UNIX、Linux以及以及Windows系列大都只用了系列大都只用了R0和和R3两个特权级两个特权级别别实例:实例:x86系列处理器系列处理器4.特权指令和非特权指令特权指令和非特权指令特权指令特权指令:只能由操作系统:只能由操作系统内核执行内核执行的指令的指令,如,如:I/OI/O设备使用指令:如启动设备使用指令:如启动I/OI/O设备、测试设备、测试I/OI/O设备工作状态、设备工作状态、控制控制I/OI/O设备动作的

10、指令设备动作的指令 系统资源的分配和管理指令:包括改变系统工作方式,检测系统资源的分配和管理指令:包括改变系统工作方式,检测用户的访问权限,修改主存管理的段表、页表,清内存和建立用户的访问权限,修改主存管理的段表、页表,清内存和建立存储保护指令存储保护指令任务的创建和切换指令任务的创建和切换指令存取特殊寄存器存取特殊寄存器的的指令指令:如存取如存取IDTRIDTR、GDTRGDTR、LDTRLDTR、时钟寄时钟寄存器(脉冲计数)等指令存器(脉冲计数)等指令 。非特权指令非特权指令:系统程序和应用程序都可以执行的指令。:系统程序和应用程序都可以执行的指令。在单用户单任务的计算机系统,可以不区分特

11、权指令和非特权在单用户单任务的计算机系统,可以不区分特权指令和非特权指令,一般用户可以使用指令系统中的全部指令。但是,在指令,一般用户可以使用指令系统中的全部指令。但是,在使用多道程序设计技术的计算机系统必须要区分为特权指令使用多道程序设计技术的计算机系统必须要区分为特权指令和非特权指令(和非特权指令(why?why?)内核态和用户态的比较内核态和用户态的比较处理器处于内核态时处理器处于内核态时可以执行全部指令(包括特权指令)可以执行全部指令(包括特权指令)可使用系统所有资源可使用系统所有资源具有改变具有改变cpu状态的能力状态的能力处理器处于用户态时处理器处于用户态时只能执行非特权指令只能执

12、行非特权指令特权级别不同,可运行的指令集合也不同特权级别不同,可运行的指令集合也不同特权级别越高,可以运行的指令集合越大,高特权级特权级别越高,可以运行的指令集合越大,高特权级别可运行指令集合包含低特权级的可运行指令。别可运行指令集合包含低特权级的可运行指令。1.1 中央处理器(中央处理器(CPU)操作系统内核功能主要包括:操作系统内核功能主要包括:时钟管理:脉冲计数,指令周期生成时钟管理:脉冲计数,指令周期生成中断机制:中断向量中断机制:中断向量表维护表维护和和中断中断响应响应原语:由若干条机器指令构成,用于完成特定功能的原语:由若干条机器指令构成,用于完成特定功能的一段程序。原语具有不可分

13、割性,即原语在执行过程一段程序。原语具有不可分割性,即原语在执行过程中不允许被中断中不允许被中断 。 由系统控制的数据结构管理,如主存页表、进程控制由系统控制的数据结构管理,如主存页表、进程控制块表、消息队列、缓冲队列等。块表、消息队列、缓冲队列等。1.1 中央处理器(中央处理器(CPU)5.程序状态字程序状态字PSW程序状态字(程序状态字(PSWPSW):用来指示处理器执行条件和状态的寄存:用来指示处理器执行条件和状态的寄存器。不同机器的器。不同机器的PSWPSW格式和信息不完全相同。格式和信息不完全相同。PSWPSW的信息一的信息一般包括:般包括:CPUCPU工作状态码工作状态码指明内核态

14、还是用户态。指明内核态还是用户态。条件码条件码条件码是条件码是CPUCPU根据运算结果由硬件设置的位根据运算结果由硬件设置的位(或位段),指示当前指令执行结果的各种状态信息,如:(或位段),指示当前指令执行结果的各种状态信息,如:算术运算产生的正、负、零或溢出等的结果算术运算产生的正、负、零或溢出等的结果中断屏蔽码中断屏蔽码指出是否允许中断指出是否允许中断用户态用户态内核态内核态 :转换的唯一途径是通过中断。:转换的唯一途径是通过中断。内核态内核态用户态用户态 :通过修改:通过修改PSWPSW中的中的CPUCPU工作状态工作状态码来实现。码来实现。系统屏蔽系统屏蔽钥钥EMWP中断码中断码ILC

15、CC程序屏蔽程序屏蔽指令地址指令地址0711153133353963例:例:IBM370的的PSW钥:用于存储保护钥:用于存储保护EMWP:E表示机器控制方式(同步控制、异步控制表示机器控制方式(同步控制、异步控制 ),),M表示机器表示机器校验方式(奇偶、校验方式(奇偶、CRC),),W表示等待状态位,表示等待状态位,P表示处理器的工作表示处理器的工作状态。状态。ILC:上一次执行指令的长度。:上一次执行指令的长度。CC:条件值。:条件值。系统屏蔽:指出系统屏蔽:指出CPU是否接受特定通道的中断(是否接受特定通道的中断(I/O设备)。设备)。程序屏蔽:指示程序屏蔽:指示CPU是否接受某种程序

16、性中断是否接受某种程序性中断(系统调用系统调用)。1.2 中断技术中断技术操作系统是操作系统是 “中断驱动中断驱动” 的。中断对操作系的。中断对操作系统的重要性相当于机械系统中的驱动齿轮。统的重要性相当于机械系统中的驱动齿轮。中断中断协调计算机系统对各种外部事件的响协调计算机系统对各种外部事件的响应和处理。应和处理。中断中断是多任务实现的是多任务实现的必要条件。必要条件。什么是中断?为什么要引入中断?中断是如何响应和执什么是中断?为什么要引入中断?中断是如何响应和执行的?行的?为什么要引入中断?为什么要引入中断?解决主机与解决主机与I/O设备并行工作的问题设备并行工作的问题提高系统可靠性提高系

17、统可靠性实现多机联系实现多机联系方便应用程序,方便应用程序,实现实时控制实现实时控制 中断:中断:CPUCPU对系统内外发生的异步事件的响应过程。对系统内外发生的异步事件的响应过程。 中断源中断源(中断事件):引起中断发生的事件。(中断事件):引起中断发生的事件。 中断处理程序中断处理程序:处理中断的程序代码,也称中断例程,:处理中断的程序代码,也称中断例程,如:如:l键盘输入键盘输入l除溢出错误的处理程序除溢出错误的处理程序l设备故障处理程序设备故障处理程序l缺页中断处理程序等缺页中断处理程序等1.基本概念基本概念异步事件是指无一定时序关系随机发生的事件。异步事件是指无一定时序关系随机发生的

18、事件。2.中断分类中断分类(1 1)中断:)中断:又称又称I/OI/O中断或异步中断,由来自处中断或异步中断,由来自处理器和主存之外的中断源引起的中断,如时钟中理器和主存之外的中断源引起的中断,如时钟中断,键盘中断等来自于外部设备的中断都属于外断,键盘中断等来自于外部设备的中断都属于外中断。外中断是一种强迫性中断,可屏蔽。中断。外中断是一种强迫性中断,可屏蔽。(2 2)异常:)异常:也成同步中断,应用程序执行过程中也成同步中断,应用程序执行过程中发生的意想不到的行为,不可屏蔽。如:非法指发生的意想不到的行为,不可屏蔽。如:非法指令或内存出错导致当前指令执行失败令或内存出错导致当前指令执行失败(

19、3 3)系统调用:)系统调用:应用程序主动向操作系统发出的应用程序主动向操作系统发出的服务请求,是战役中自愿性中断,可同步或异步服务请求,是战役中自愿性中断,可同步或异步响应。如读文件等。响应。如读文件等。3.中断系统中断系统 中断系统中断系统= =中断硬件中断硬件+ +中断中断软件软件中断硬件中断硬件中断系统的机制部分,负责中断扫描和响应。中断系统的机制部分,负责中断扫描和响应。l在在CPUCPU初始化时设置中断使能标志初始化时设置中断使能标志l根据中断事件设置中断标志(获取中断号)根据中断事件设置中断标志(获取中断号)l访问中断向量表,调用相应的中断服务例程访问中断向量表,调用相应的中断服

20、务例程 中断中断软件软件中断系统的策略部分,执行相应的中断处理中断系统的策略部分,执行相应的中断处理指令。指令。 现场保存现场保存 中断服务处理(中断服务例程)中断服务处理(中断服务例程) 清除中断标记(中断服务例程)清除中断标记(中断服务例程) 现场恢复现场恢复中断处理过程中断处理过程中断请求中断请求中断判优中断判优中断响应中断响应中断服务中断服务中断返回中断返回中断硬件中断硬件中断处理程序中断处理程序中断处理过程中断处理过程t=0t=7一一一一一一一一一一一一打印机中断打印机中断服务程序服务程序用户程序用户程序t=40中断中断响应响应中断返中断返回回(1)中断硬件的基本功能)中断硬件的基本

21、功能识别中断源识别中断源:通常用一个寄存器来存储每个中:通常用一个寄存器来存储每个中断源的状态信息,该寄存器的内容称为断源的状态信息,该寄存器的内容称为中断字中断字。断点保护断点保护:程序计数器和:程序计数器和PSW的内容入栈。的内容入栈。why?提供中断处理程序入口地址映射表提供中断处理程序入口地址映射表(中断向量(中断向量表)等数据结构。表)等数据结构。非屏蔽中断请求非屏蔽中断请求中断逻辑中断逻辑中断指令中断指令INTn溢出中断溢出中断INT0除法错除法错中断中断单步中断单步中断TF=1中断控中断控制器制器8259A可屏蔽性中断请求可屏蔽性中断请求INTRNMIIBM-PC中断逻辑和中断源

22、示意图中断逻辑和中断源示意图(2)中断逻辑)中断逻辑当多个中断源请求同时发生时,由当多个中断源请求同时发生时,由中断逻辑电路中断逻辑电路按中断优先级按中断优先级的高低来判定应响应哪个中断请求。的高低来判定应响应哪个中断请求。一次一次只能响应当前优先级只能响应当前优先级最高的最高的一个中断一个中断。(2)中断逻辑)中断逻辑接受和响应中断源的中断请求的方法因机器而异接受和响应中断源的中断请求的方法因机器而异,在在PCPC中:中:可屏蔽中断请求可屏蔽中断请求INTRINTR: :来自输入输出设备的来自输入输出设备的I/O中断中断, , 通过通过对对PSWPSW中的中断屏蔽位可以屏蔽所有的中的中断屏蔽

23、位可以屏蔽所有的I/O中断。中断。不可屏蔽中断请求不可屏蔽中断请求: :属于机器故障中断,包括内存奇偶校验属于机器故障中断,包括内存奇偶校验错以及掉电等中断源产生的中断。错以及掉电等中断源产生的中断。程序性中断程序性中断(如溢出、除法错都可以引起中断)和软件中(如溢出、除法错都可以引起中断)和软件中断等。断等。为了区分和不丢失中断信号,用固定为了区分和不丢失中断信号,用固定触发器触发器来来寄存每个寄存每个中断源的中断源的中断信号。一般规定:值为中断信号。一般规定:值为1 1时,表示有中断信号,为时,表示有中断信号,为0 0时表示无中断信号。时表示无中断信号。所有中断源的触发器组成中断寄存器,每

24、个触所有中断源的触发器组成中断寄存器,每个触发器对应中断寄存器中的一个中断位。发器对应中断寄存器中的一个中断位。(3)中断寄存器)中断寄存器集成于集成于CPU控制部件中,用于检测是否有中断发生的机构。控制部件中,用于检测是否有中断发生的机构。在每条指令执行周期的在每条指令执行周期的最后时刻(中断周期)最后时刻(中断周期)扫描中断寄存扫描中断寄存器,询问是否有中断信号。若无中断信号,继续执行下一条器,询问是否有中断信号。若无中断信号,继续执行下一条指令;否则,中断硬件将该中断触发器内容按规定编码送入指令;否则,中断硬件将该中断触发器内容按规定编码送入PSWPSW的相应位(中断码)。的相应位(中断

25、码)。 (4)中断扫描机构中断扫描机构允许允许中断中断开始开始取下一条指令取下一条指令执行指令执行指令停止停止检查处理中断检查处理中断不允许中断不允许中断中断周期中断周期执行周期执行周期取指周期取指周期(5)中断响应)中断响应CPU接收到来自于不同中断源的中断请求后,接收到来自于不同中断源的中断请求后,需要及时地响应中断。需要及时地响应中断。中断响应是中断硬件对中断事件做出响应的过中断响应是中断硬件对中断事件做出响应的过程程 。任一时刻,任一时刻,CPU只能响应一个中断只能响应一个中断。中断系统。中断系统需要按照各个中断源的优先级,选择具有最高需要按照各个中断源的优先级,选择具有最高优先级的中

26、断进行响应,这个过程称为中断判优先级的中断进行响应,这个过程称为中断判优。优。 如何响应当前选择的中断,执行相应的中断服务例程?如何响应当前选择的中断,执行相应的中断服务例程?(5)中断响应中断响应CPUCPU如何响应中断如何响应中断, , 两个问题:两个问题: CPUCPU何时响应中断?何时响应中断? 通常在通常在CPUCPU执行了一条指令以后,更确切地,在执行了一条指令以后,更确切地,在指令周期指令周期最后时刻最后时刻扫描中断寄存器,接受中断请求扫描中断寄存器,接受中断请求 。 如何获知提出中断请求的设备或中断源?如何获知提出中断请求的设备或中断源?l用用软件指令软件指令去查询各设备接口,

27、比较费时(非向量中去查询各设备接口,比较费时(非向量中断)。断)。l使用使用 “中断向量表中断向量表” (向量中断)。(向量中断)。非向量中断非向量中断:总是转向中断查询程序的入口地址,执行终端:总是转向中断查询程序的入口地址,执行终端查询程序,以确定被优先批准的中断源,然后分支进入相应查询程序,以确定被优先批准的中断源,然后分支进入相应的中断服务程序。的中断服务程序。每个中断有一个唯一的每个中断有一个唯一的中断向量号中断向量号(通常(通常为中断类型号)。中断向量号通常按照从为中断类型号)。中断向量号通常按照从小到大的顺序存放在中断向量表中小到大的顺序存放在中断向量表中 。中断向量表一般存放在

28、主存储器的固定区中断向量表一般存放在主存储器的固定区域中。域中。(6)中断向量)中断向量(6)中断向量)中断向量向量地址向量地址排队器输出排队器输出 显示器服务程序显示器服务程序 打印机服务程序打印机服务程序JMP 400JMP 300JMP 200主存主存12H13H14H200300向量地址向量地址入口地址入口地址入口地址入口地址 设备设备编码器编码器1 0 0 0000100100 1 0 000010011由由 硬件产生中断向量地址,硬件产生中断向量地址,再由中断向量地址找到中断服再由中断向量地址找到中断服务程序的入口地址。务程序的入口地址。例:例: 8088的中断向量表的中断向量表2

29、55255号向量号向量 3232号向量号向量3131号向量号向量 5 5号向量号向量 4 4号向量(溢出)号向量(溢出)3 3号向量(断点)号向量(断点)2 2号向量(号向量(NMINMI) 1 1号向量(单步)号向量(单步) 0 0号向量(除法错)号向量(除法错) 003FFH003FFH003FCH003FCH00080H00080H0007CH0007CH00014H00014H 00012H00012H 0000CH0000CH 00008H00008H 00004H00004H 00000H00000H 专用专用 中断向量中断向量(5 5个)个)系统保留系统保留 中断向量中断向量(2

30、727个)个)用户可用用户可用 中断向量中断向量(224224个)个)8088系统的中断系统的中断向量表占用了系向量表占用了系统主存最低端的统主存最低端的1KB的空间,共的空间,共存储了存储了256个中断个中断向量向量 (7)中断处理过程)中断处理过程中断源发出一个中断信号中断源发出一个中断信号CPU完成当前指令的执行,扫完成当前指令的执行,扫描中断信号描中断信号CPU发送中断应答信号发送中断应答信号CPU将将PSW、IP和和CS压入栈中压入栈中(断点)(断点)保存剩余的处理器保存剩余的处理器状态信息状态信息恢复中断前的恢复中断前的PSW、IP和和CS开中断开中断处理中断处理中断中断服务程序的

31、入口地址送入中断服务程序的入口地址送入IP和和CS硬件操作硬件操作中断处理子程序中断处理子程序关闭中断关闭中断恢复处理器状态信息恢复处理器状态信息中断隐指令中断隐指令-CPU响应中断之后,经过响应中断之后,经过某些操作某些操作转去执行转去执行中断服务程序,这些操作是由硬件直接实现,称为中断隐指令。中断服务程序,这些操作是由硬件直接实现,称为中断隐指令。中断隐指令是指中断隐指令是指不在指令系统中的指令,其功能包括保护程序不在指令系统中的指令,其功能包括保护程序断点、硬件关中断、向量地址送断点、硬件关中断、向量地址送PCPC(硬件向量法)或中断识别(硬件向量法)或中断识别程序入口地址送程序入口地址

32、送PCPC(软件查询法)。(软件查询法)。 例:汇编中例:汇编中int指令的执行过程指令的执行过程CPU 执行执行int n指令,相当于引发一个指令,相当于引发一个 n号中断的号中断的中断过程,执行过程如下:中断过程,执行过程如下:n(1)取中断类型码)取中断类型码n;n(2)标志寄存器入栈,)标志寄存器入栈,IF = 0,TF = 0;/* IF=0 CPU关闭关闭中断;中断;TF 单步调试单步调试标记,标记,TF=0机器处在连续工作方式机器处在连续工作方式*/n(3)CS、IP入栈;入栈;n(4)(IP) = (n*4),(CS) = (n*4+2)。IPCS低低高高5.多级中断(多重中断

33、)多级中断(多重中断)多数微型多数微型CPUCPU支持多级中断系统,可以有多根中断请求线支持多级中断系统,可以有多根中断请求线(级)从不同设备连接到中断逻辑电路上。(级)从不同设备连接到中断逻辑电路上。具有相同特性和优先级的设备可连到同一中断级上,由中具有相同特性和优先级的设备可连到同一中断级上,由中断排队器(硬件)决定当前响应哪个中断源。断排队器(硬件)决定当前响应哪个中断源。在多级中断系统中,可能同时有多个中断请求,这时在多级中断系统中,可能同时有多个中断请求,这时CPUCPU接受中断优先级最高的中断,忽略较低优先级的中断。接受中断优先级最高的中断,忽略较低优先级的中断。高高优先级的中断可

34、以打断优先级的中断可以打断低低优先级的中断。优先级的中断。例:例:假设某系统中有两个设备:打印机和磁盘,它们的中断优假设某系统中有两个设备:打印机和磁盘,它们的中断优先级分别为先级分别为2 2和和4 4,若打印机的中断请求先到达,若打印机的中断请求先到达,且且打印机中断打印机中断服务程序在运行过程中,服务程序在运行过程中,来了来了一个磁盘中断请求。一个磁盘中断请求。 t=0t=7t=15一一一一一一一一一一一一一一一一一一一磁盘中断服务磁盘中断服务程序程序打印机中断打印机中断服务程序服务程序用户程序用户程序t=25t=40产生的中断嵌套如下图:产生的中断嵌套如下图:1.3 系统调用系统调用1.

35、为什么要为什么要引入引入系统调用功能?系统调用功能?只有操作系统内核执行特权指令,访问操作系统内核数据。只有操作系统内核执行特权指令,访问操作系统内核数据。在在多任务系统中,程序的运行空间分为多任务系统中,程序的运行空间分为用户空间用户空间和和内核空间内核空间,它们在逻辑上是相互隔离的,用户程序不能访问内核数据,它们在逻辑上是相互隔离的,用户程序不能访问内核数据,也无法,也无法访问访问内核函数。内核函数。系统调用是操作系统系统调用是操作系统服务的编程接口服务的编程接口,应用程序应用程序通过系统调通过系统调用可以进入用可以进入内核内核态,调用内核函数,访问内核数据。态,调用内核函数,访问内核数据

36、。 系统调用依赖于计算机硬件,一般用汇编代码编写,并系统调用依赖于计算机硬件,一般用汇编代码编写,并以库函数形式提供给应用程序(如以库函数形式提供给应用程序(如C语言程序)使用。语言程序)使用。所有的库函数都是系统调用吗?所有的库函数都是系统调用吗?1.3 系统调用系统调用2.什么是系统调用?什么是系统调用? 系统调用是操作系统内核提供的用于实现各种系统功能系统调用是操作系统内核提供的用于实现各种系统功能的一组子程序的一组子程序(用户程序对操作系统内核模块的调用用户程序对操作系统内核模块的调用):应用程序通过系统调用访问系统硬件和其他操作系统资应用程序通过系统调用访问系统硬件和其他操作系统资源

37、,如:源,如:l外存文件与目录的读写。外存文件与目录的读写。l各种各种I/O设备的使用设备的使用l在一个应用程序中启动另一个应用程序在一个应用程序中启动另一个应用程序l查询和统计系统资源使用情查询和统计系统资源使用情完成对硬件和资源的访问控制。完成对硬件和资源的访问控制。硬件设备的抽象(提供设备独立性)。硬件设备的抽象(提供设备独立性)。例:UNIX/Linux的系统结构系统调用接口通过库把函数调用映射成进入操作系统核心所系统调用接口通过库把函数调用映射成进入操作系统核心所需要的原语。需要的原语。 POSIX( Portable Operating System Interface) )中的进

38、程和文件管理的主要系统调用)中的进程和文件管理的主要系统调用 例例2:LINUX系统调用简介系统调用简介n已经提到的系统调用已经提到的系统调用fork(), exec(),open(),read(),write(),close()Linux系统调用有二百五十多个系统调用有二百五十多个n应用程序及系统调用的层次关系应用程序及系统调用的层次关系 应用程序应用程序 C库库(libc.a) 系统调用系统调用 调用调用 printf() write() printf(); write () 系统调用与普通的函数调用很相似,但普通函数调用不能系统调用与普通的函数调用很相似,但普通函数调用不能引起进程从用户

39、态到核心态的转换。引起进程从用户态到核心态的转换。这个过程是如何实现的呢?这个过程是如何实现的呢?中断!中断!应用程序对操作系统的间接调用过程应用程序对操作系统的间接调用过程嵌入嵌入形成形成A=A+1printf()B=B+AINTA=A+1INTB=B+AINOUT用户用户程序段程序段源程序段源程序段目标代码目标代码printf的操作系统的操作系统 内核代码内核代码库函数库函数printf目标目标 代码代码陷入指令陷入指令系统调用的实现系统调用的实现LINUX系统调用加载系统调用加载n操作系统加载时与系统调用有关的处理操作系统加载时与系统调用有关的处理(int 80h 是是 unix/lin

40、ux 类操作系统内核在类操作系统内核在 Intel CPU架构上作架构上作为系统调用为系统调用 使用的中断号使用的中断号 )int 80h 中断处理程序地址的加载中断处理程序地址的加载start_kernel() - trap_init() /硬件中断向量初始函数硬件中断向量初始函数 -set_system_gate(SYSCALL_VECTOR.&system_call) / 参见参见http:/lxr.linux.no各系统调用处理程序的加载各系统调用处理程序的加载 系统调用总控程序系统调用总控程序 System_call在在Entry.S中(中(arch/i386/kernel)

41、系统调用表在启动时加载(系统调用表在启动时加载(unistd.h中定义中定义系统调用系统调用号)号)系统一般系统一般都都配置配置有特定指令有特定指令,使进程的执行由用户态转换为核使进程的执行由用户态转换为核心态,这种指令心态,这种指令通常通常称作陷入(称作陷入( trap)指令指令。进程通过执行陷。进程通过执行陷入指令,便可入指令,便可进入进入核心态核心态运行运行系统调用代码。系统调用代码。Linux 的的x86平平台台上的这条陷入上的这条陷入指令是指令是int 0 x80h.LINUX系统调用实现原理系统调用实现原理 | | | -| -| System Call iSystem Call

42、i | | 访问设备访问设备 | | | sys_read() | | | | sys_read() | . i . i3 | | | |3 | | | | system_call(i) |- | | system_call(i) |- | | 访问内部函访问内部函数数 read() | | | read() | | | . j . j20 | | |20 | | | system_call(j) |- | | system_call(j) |- | | get_pid() | | | | get_pid() | | | | . | -| . | -| System Call jSystem

43、Call j | | 访问内核数访问内核数据结构据结构 | | sys_getpid()| | | sys_getpid()|LINUX系统调用实现代码系统调用实现代码1int80h in 2.4.xn202 ENTRY(system_call) n203 pushl %eax # save orig_eax,eax存放系 #统调用序号 n204 SAVE_ALL n205 GET_CURRENT(%ebx) n206 testb $0 x02,tsk_ptrace(%ebx) # PT_TRACESYS n207 jne tracesys n208 cmpl $(NR_syscalls),%

44、eax n209 jae badsys n210 call *SYMBOL_NAME(sys_call_table)(,%eax,4) n211 movl %eax,EAX(%esp) # save the return value n212 ENTRY(ret_from_sys_call) #define _syscall0(type,name) 298 type name(void) 299 300 long _res; 301 _asm_ volatile (int $0 x80 302 : =a (_res) 303 : (_NR_#name); 304 _syscall_return

45、(type,_res); 305 _syscall0(int,fork) int fork(void) “int 80 with _NR_fork” / 2 LINUX系统调用实现系统调用实现_syscall0 代码代码系统调用与普系统调用与普通的函数调用通的函数调用过程很相似,过程很相似,只是被调用的只是被调用的代码是操作系代码是操作系统核心代码,统核心代码,需要在核心态需要在核心态下运行。下运行。2.系统调用处理过程系统调用处理过程read(fd,buffer,nbytes)的系统调用过程的系统调用过程内内核核空空间间保存现场和相关参数,执行系统调用处保存现场和相关参数,执行系统调用处理程

46、序理程序根据系统调用号和系统调用表,获得系根据系统调用号和系统调用表,获得系统调用处理程序的入口地址统调用处理程序的入口地址陷入内核陷入内核Trap把把read系统调用号存放到寄存器中系统调用号存放到寄存器中返回调用者返回调用者参数参数fd,buffer,nbytes入栈入栈调用调用read的用户程序的用户程序库过程库过程read用用户户空空间间调用库过程调用库过程read系统调用与函数调用的不同系统调用与函数调用的不同系统调用和函数库的关系系统调用和函数库的关系 系统调用系统调用能能引起进程从用户态到核心态的转换引起进程从用户态到核心态的转换,普,普通函数调用不能。通函数调用不能。 函数库中

47、的函数可以不调用系统调用程序,也可以函数库中的函数可以不调用系统调用程序,也可以调用多个系统调用。调用多个系统调用。 高级编程也可以直接高级编程也可以直接使用系统调用中断(如,使用系统调用中断(如,int 0 x80h)进入系统调用,而不必通过函数库作为进入系统调用,而不必通过函数库作为中介。中介。 在核心编程可以使用系统调用中断进入系统调用,在核心编程可以使用系统调用中断进入系统调用,此时不能使用函数库。此时不能使用函数库。3.系统调用表系统调用表系统调用表记录了所有系统系统调用表记录了所有系统调用处理函数的入口地址,调用处理函数的入口地址,通过系统调用号查看系统调通过系统调用号查看系统调用

48、表就能用表就能获得相应的获得相应的内核函内核函数入口地址。数入口地址。 与中断一样,每个系统调用与中断一样,每个系统调用都都拥有一个唯一的系统调用拥有一个唯一的系统调用号。号。 系统调用通常是通过特殊的系统调用通常是通过特殊的硬件指令和中断来实现的。硬件指令和中断来实现的。操作系统通常用一个或少数操作系统通常用一个或少数几个中断号来几个中断号来映射映射系统中所系统中所有的系统调用。如有的系统调用。如LinuxLinux系系统使用统使用0 x800 x80号中断作为所有号中断作为所有系统调用的入口;系统调用的入口;i386i386的的Windows Windows 系统使用系统使用0 x2E0

49、x2E号中号中断作为大多数系统调用的入断作为大多数系统调用的入口口。ENTRY(sys_call_table) ENTRY(sys_call_table) .long SYMBOL_NAME(sys_ni_syscall) .long SYMBOL_NAME(sys_ni_syscall) .long SYMBOL_NAME(sys_exit) .long SYMBOL_NAME(sys_exit) .long SYMBOL_NAME(sys_fork) .long SYMBOL_NAME(sys_fork) .long SYMBOL_NAME(sys_read) .long SYMBOL_N

50、AME(sys_read) .long SYMBOL_NAME(sys_write) .long SYMBOL_NAME(sys_write) . . . . . . . . . . .Linux的系统调用表的系统调用表4.应用程序使用操作系统的方式应用程序使用操作系统的方式三种:三种:系统调用系统调用中断中断独立程序(不以任何方式使用操作系统,包独立程序(不以任何方式使用操作系统,包括启动和结束。)括启动和结束。)存储器层次存储器层次主存储器与主存储器与MMU高速缓存高速缓存磁盘存储器磁盘存储器1.4 存储器系统存储器系统寄存器寄存器高速缓存高速缓存主存主存磁盘磁盘光盘光盘磁带磁带板上存储器

51、板上存储器板外存储器板外存储器1. 存储器层次存储器层次容量容量速度,价格速度,价格2. 主存储器与主存储器与MMU(1)主存储器)主存储器主存是主板上的一种存储部件,是主存是主板上的一种存储部件,是CPU可以直接访问的唯一可以直接访问的唯一的大容量存储区域。的大容量存储区域。 CPU访问的指令和数据必须存放在的访问的指令和数据必须存放在的主存中。主存中。字节是主存的最小编址单位,主存由一个存储字的阵列组成字节是主存的最小编址单位,主存由一个存储字的阵列组成,每个字由一个唯一的地址。,每个字由一个唯一的地址。为简化主存的分配和管理,现代计算机系统通常把主存储器为简化主存的分配和管理,现代计算机

52、系统通常把主存储器分成若干个存储块,并以存储块作为主存分配单位。分成若干个存储块,并以存储块作为主存分配单位。 (2)存储访问的局部性原理)存储访问的局部性原理存储器访问局部性是引入多层次存储器系统的重要基础存储器访问局部性是引入多层次存储器系统的重要基础 ,表现为表现为时间局部性时间局部性和和空间局部性空间局部性。程序执行时,通常会有循环和子程序调用,一旦进入这样程序执行时,通常会有循环和子程序调用,一旦进入这样的程序段,就会重复存取相同的指令集合。的程序段,就会重复存取相同的指令集合。数据存取也有局部性。如访问一个较大规模的数组,在较数据存取也有局部性。如访问一个较大规模的数组,在较短的时

53、间内,数据的读取稳定地保持在存储器的一个局部区短的时间内,数据的读取稳定地保持在存储器的一个局部区域内。域内。2. 主存储器与主存储器与MMUMMU(3 3)存储保护)存储保护为使多个程序同时运行时为使多个程序同时运行时在主存空间上在主存空间上互不侵犯,互不侵犯,需要对主存中的信息加以严格保护。常用的存需要对主存中的信息加以严格保护。常用的存储保护方式有两种:储保护方式有两种:地址寄存器(界限寄存器)地址寄存器(界限寄存器)存储键存储键2. 主存储器与主存储器与MMUMMU(1)界地址寄存器(界限寄存器)界地址寄存器(界限寄存器)界地址寄存器界地址寄存器是广泛使用的一种存储保护技术。是广泛使用

54、的一种存储保护技术。通过在通过在CPUCPU中设置一对界限寄存器:中设置一对界限寄存器:下限寄存器下限寄存器和和上限寄上限寄存器,存器,来存放用户作业在主存中的下限地址和上限地址。来存放用户作业在主存中的下限地址和上限地址。每当每当CPUCPU要访问主存,硬件自动将被当前访问地址与界限要访问主存,硬件自动将被当前访问地址与界限寄存器的内容进行比较,以判断是否越界,如果未越界,寄存器的内容进行比较,以判断是否越界,如果未越界,则按此地址访问主存,否则将产生越界中断则按此地址访问主存,否则将产生越界中断越界中断越界中断(存储保护中断)。(存储保护中断)。也可将也可将界地址寄存器中的界地址寄存器中的

55、一个寄存器作为基址寄存器,另一一个寄存器作为基址寄存器,另一寄存器作为限长寄存器(指示存储区长度)。寄存器作为限长寄存器(指示存储区长度)。界地址寄存器界地址寄存器存储保护技术存储保护技术(2)存储键)存储键每个存储块分配一个由二进位组成的每个存储块分配一个由二进位组成的存储保护键。存储保护键。作业被允许进入主存时,作业被允许进入主存时,OSOS分为它分配一个唯一的存储键分为它分配一个唯一的存储键号。号。分配给作业存储块的存储键与作业的存储键号相同。分配给作业存储块的存储键与作业的存储键号相同。运行一个作业时,运行一个作业时, OS OS将将当前当前作业的存储键号存入作业的存储键号存入PSWP

56、SW的存的存储键(储键(“钥匙钥匙”)域中。当)域中。当CPUCPU访问主存时,将该主存块的存访问主存时,将该主存块的存储键与储键与PSWPSW中的中的“钥匙钥匙”进行比较,如果匹配,则允许访问,进行比较,如果匹配,则允许访问,否则,拒绝并报警。否则,拒绝并报警。(3 3)MMUMMUMMU (Memory Management Unit,主存管理单元)是,主存管理单元)是CPU中用来管理虚拟存储器、物理存储器的控制线路,负责中用来管理虚拟存储器、物理存储器的控制线路,负责将虚拟地址映射为物理地址将虚拟地址映射为物理地址的硬件部件。的硬件部件。由由CPUCPU位数决定的地址范围称为虚拟地址空间

57、。位数决定的地址范围称为虚拟地址空间。大多数时候计算机系统的物理地址空间只是虚拟地址空间的大多数时候计算机系统的物理地址空间只是虚拟地址空间的一个子集一个子集 。如,。如,256M的的32bit x86的机器的机器 ,其虚拟地址空间,其虚拟地址空间是是00 xFFFFFFFF,而物理地址空间是,而物理地址空间是0 x0000000000 x0FFFFFFF。在使用了虚拟存储器的计算机系统中,虚拟地址不是被直接在使用了虚拟存储器的计算机系统中,虚拟地址不是被直接送到主存地址线上,而是送到送到主存地址线上,而是送到MMU,由,由MMU将虚拟地址映将虚拟地址映射为物理地址。射为物理地址。 2. 主存储器与主存储器与MMU3. 高速缓存高速缓存(1)概念概念高速缓存是计算机存储系统中介于高速缓存是计算机存储系统中介于CPU和主存储器之和主存储器之间的小容量存储器,由静态存储芯片间的小容量存储器,由静态存储芯片(SRAM)组成,速组成,速度接近于度接近于CPU的速度,用于保存从主存储器读取的指的速度,用于保存从主存储器读取的指令或数据的副本。令或数据的副本。高速缓存对操作系统不可见高速

温馨提示

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

评论

0/150

提交评论