版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 操作系统结构(Artechature)本章教学目标主要讨论操作系统对运行软件、硬件环境的要求:操作系统运行的 硬件环境系统调用存储系统的层次结构中断机制特权指令和非特权指令目态、管态及其转换内容回顾陷阱指令当编程人员给定了系统调用名和参数之后,由一个类似于硬件中断处理的中断处理机构完成陷入处理机构。它是在系统中为控制系统调用服务的机构。当用户使用系统调用时,产生一条相应的指令(陷入指令,trap指令),CPU在执行到该指令时发生相应的中断,发出有关信号给该处理机构,并启动相应的处理程序来完成该系统调用所要求的功能。陷入指令(或称访管指令):由于系统调用引起处理机中断的指令在陷入中断发生
2、时,从用户态系统态。这一转换在发生访管中断时由硬件自动实现。如何实现陷入?操作系统结构2.1中断机制?2.2中断的实现原理2.3特权指令和非特权指令2.4目态、管态及其转换中断:CPU对系统中或系统外发生的某个事件作出的一种反应;如外部设备完成数据传输,实时设备出现异常等。引入中断的目的:中断机制是操作系统得以正常工作的最重要的手段,有人把操作系统称为是由“中断驱动”或者 “(中断)事件驱动”。它可以解决:主机与外设的并行工作问题提高可靠性实现实时控制中断是实现多道程序的必要条件中断源:引起中断发生的事件。中断中断机制中断系统组成:硬件中断装置和软件中断处理程序硬件中断装置:负责捕获中断源发出
3、的中断请求,以一定方式响应中断源,然后将处理器控制权交给特定的中断处理程序(发现问题)软件中断处理程序:中断系统的策略部分。负责辨别中断类型并做出相应的操作。(解决问题)中断中断系统组成程序中断: 一般由指令执行的结果产生,例如算术溢出、除数为0,执行非法指令,非法内存访问。时钟中断:由处理器内部的计时器产生,允许操作系统以一定的规律执行。I/O中断:由I/O控制器产生,用于发信号通知一个操作的正常完成或各种错误条件。硬件失效中断:掉电、存储器奇偶错等的故障产生。访管中断:每当CPU执行访管指令或陷入指令时,即引起中断,并调用操作系统相应的功能模块为其服务。中断中断源的分类中断中断源的分类强迫
4、性中断事件:强迫性中断事件不是正在运行的程序所期待的,而是由于某种事故或外部请求信息所引起的,分为:机器故障中断事件;程序性中断事件;外部中断事件;输入输出中断事件;自愿性中断事件:自愿性中断事件是正在运行的程序所期待的事件。中断(外中断)异常(内中断)例外I/O中断时钟中断系统调用缺页异常断点指令其他程序性异常(如算术溢出等)广义中断中断中断的分类操作系统结构1.1中断机制?1.2中断的实现原理1.3特权指令和非特权指令1.4目态、管态及其转换中断的实现原理如何发现中断信号?中断周期如何处理各类中断?中断向量表如何管理不同级别的中断? 中断优先级如何屏蔽各类中断?中断屏蔽中断技术中断周期(如
5、何发现)处理器如何发现中断信号? 处理器的控制部件中设一个能检测中断的机构,称为中断扫描机构。为适应存在中断的情况,在指令周期中要增加一个中断周期,处理器检查是否有中断发生:有:处理器挂起当前程序的执行,并执行一个中断处理程序;当中断处理程序完成后,处理器在中断点恢复对用户程序的执行。没有:则取下一条执行继续执行。中断向量表(IDT):一个存放中断处理程序入口地址和程序运行所需处理机状态字的内存单元。中断向量:每个中断都有一个向量号,该值是中断在IDT中的索引(本质上为逻辑地址)。每个中断均有其相应的处理程序,中断在使用前必须在IDT中注册信息,以保证发生中断时能找到相应的处理程序;发出中断请
6、求的设备为了标识自己,向CPU发送一个该设备在IDT中表目的索引,通过此索引值找到中断处理程序中断技术中断向量表 (如何处理)中断技术中断优先级 (如何管理)原因:由于可能有很多中断源请求同时发生,通过中断优先级加以判定响应哪个中断请求。中断优先级:表示中断的优先程度,如:高、低优先级中断同时到时先响应高级中断;高级中断可以打断低级中断处理程序的运行,同级中断同时到时,则按顺序响应。中断优先级设计原则:一般来说,高速设备的中断优先级高,慢速设备的中断优先级低。因为高速设备的中断被CPU优先响应时,可以让处理机尽快地向它发出下一个I/O请求,提高高速设备的利用率 机器故障中断 程序中断和访管中断
7、外部中断I/O中断多级中断的处理多级中断系统,可以有多个中断请求从不同设备向中断处理机构发出请求,即中断处理过程中又发生中断: 1)顺序处理:正在响应一个中断时禁止响应其它中断,对任何新中断置之不理在任何中断处理前使用禁止中断指令;在处理结束后开放中断指令;所有中断严格按照发生顺序处理;不考虑中断紧急程度,无法达到较严格时间要求; 2)嵌套中断处理:允许嵌套处理,即允许高优先级的中断引发低优先级的中断处理程序自身的中断。 只要合适地定义中断的优先级别。方法1的弊端大都可以克服。顺序处理嵌套处理中断屏蔽:指禁止CPU响应中断。方法是在PSW中设置中断屏蔽码以屏蔽某些指定的中断类型如果其PSW的中
8、断禁止位置位后,则屏蔽中断(不包括不可屏蔽的那些中断)如果PSW中的中断禁止位未置位:则可以接受其中断优先级高于运行程序中断优先级的那些中断可屏蔽的中断请求:主要是I/O设备的中断, 通过建立在PSW中的中断屏蔽位加以屏蔽,即使再有I/O中断,处理器也不响应;不可屏蔽的中断请求:属于机器故障中断,包括内存奇偶校验错、掉电等中断源中断技术中断屏蔽中断处理过程-开始串糖葫芦保存现场转中断处理程序恢复现场中断处理过程-1保存现场 转中断处理程序 恢复现场典型的处理过程:(1)设备给CPU发一个中断信号(2)CPU处理完当前指令后响应中断(要求CPU未关中断),或 CPU处理完当前指令后检测到中断,判
9、断出中断来源并向发送中断的设备发送了确认中断信号,确认信号使得该设备将中断信号恢复到一般状态(3)CPU开始为软件处理中断做准备:保存上下文:程序状态字PSW、程序计数器PC中的下一条指令位置,一些寄存器的值;处理器状态被切换到管态典型的处理过程(续):(4)CPU根据中断源查询中断向量表,获得与该中断相联系的处理程序入口地址,并将PC置成该地址,CPU开始一个新的指令周期,控制转移到中断处理程序(5)中断处理程序开始工作,包括检查I/O相关的状态信息,操纵I/O设备或者在设备和主存之间传送数据等等(6)中断处理结束时,CPU检测到中断返回指令,恢复上下文,包括PSW和PC被恢复成中断前的值,
10、处理器开始一个新的指令周期,中断处理结束中断处理过程-2简单的中断处理过程操作系统结构1.1中断机制?1.2中断的实现原理1.3特权指令和非特权指令1.4目态、管态及其转换特权指令:只能由操作系统程序使用的指令,如启动I/O设备、设置时钟、控制中断屏蔽位、清内存、加载PSW等(能引起损害的机器指令)。非特权指令:用户程序系统所使用的指令。为甚么要区分指令的级别?使用多道程序设计技术的计算机指令系统必须要区分为特权指令和非特权指令特权指令一般引起处理器状态的切换,处理器通过特殊的机制将处理器状态切换到操作系统运行的特权状态(管态)特权指令和非特权指令操作系统结构1.1中断机制?1.2中断的实现原
11、理1.3特权指令和非特权指令1.4目态、管态及其转换处理器的状态-目态和管态原因:多道程序系统中,由于采用共享,一个程序中的错误有可能恶意地影响多个程序,甚至OS程序本身。 根据运行程序对资源和机器指令的使用权限将处理器设置为不同状态一般将处理器工作状态划分为管态和目态 实现中,处理器将CPU状态划分为更细的状态,两种、三种或四种处理器的状态: 目态和管态双重操作模式:为了确保OS和所有其它程序和数据不受任何故障程序影响,CPU至少需要两重独立的操作模式:系统模式(特权状态、系统态、管态):操作系统管理程序运行时的状态,较高的特权级别。当CPU处于系统模式时,程序可以执行特权指令,访问所有资源
12、,并可以改变处理器状态。用户模式(用户态、目态、常态):用户程序运行时的状态,较低的特权级别。当CPU处于用户状态时,程序只能执行非特权指令。如MSDOS没有双重模式,因而错误用户程序可以会清除整个操作系统,造成灾难性后果。目态 管态(用户态系统态)唯一途径 : 通过系统调用管态目态(系统态用户态) 途径 :设置PSW(修改程序状态字)CPU状态的转换的实现一条特殊的指令:访管指令 供用户调用操作系统的功能(服务)INT,TRAP,SYSCALL程序状态字PSW (Program Status Word )问题: CPU如何知道当前运行的是操作系统还是一般应用软件? 根据PSW中的标识进行判断
13、。在PSW中专门设置一位,根据运行程序使用指令的权限而设置CPU状态PSW:寄存CPU运行状态的寄存器。在PSW中专门设置一位,根据运行程序使用指令的权限而设置,用来说明当前在CPU上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其它的特殊权力CF: 进位标志位 ZF: 结果为零标志位 SF: 符号标志位OF: 溢出标志位标准条件位: TF:陷阱标志位IF:中断允许(中断屏蔽)标志位VIF:虚拟中断标志位VIP:虚拟中断待决标志位IOPL:IO特权级别 例:微处理器Pentium的FLAGS和描述符处理器处于系统模式(管态)时:全部指令(包括特权指令)可以执行可使用所有资源
14、并具有改变处理器状态的能力处理器处于用户模式(目态)时:只有非特权指令能执行特权级别越高,可以运行指令集合越大高特权级别对应的可运行指令集合包含低特权级的实例:x86系列处理器(1/2)386、486、Pentium系列都支持4个处理器特权级别(特权环:R0、R1、R2和R3)从R0到R3特权能力依次降低R0相当于双状态系统的管态R3相当于目态R1和R2则介于两者之间,它们能够运行的指令集合具有包含关系:各个级别有保护性检查(地址校验、I/O限制)特权级别之间的转换方式相似四个级别运行不同类别的程序:R0-运行操作系统核心代码R1-运行关键设备驱动程序和I/O处理例程R2-运行其他受保护共享代
15、码,如语言系统运行环境R3-运行各种用户程序 现有基于x86处理器的操作系统,多数UNIX、Linux以及Windows系列大都只用了R0和R3两个特权级别实例:x86系列处理器(2/2)Linux中断代码分析-供感兴趣的同学中断向量表在哪里?如何保护现场?如何转到中断处理程序?如何返回中断?注意:部分内容来自网络!(见附录)总结中断的概念中断的实现原理作业对所有同学:P.63 习题2.3,2.11p.32 习题1.10,1.12对OS感兴趣的同学:下载linux0.11代码,用Source Insight 阅读在参考书辅助的情况下,阅读OS启动过程的代码,注意中断的调用过程打开电源了中断向量
16、表在哪里BIOS 完成的主要任务:1.检查RAM,键盘,显示器,软硬磁盘;2. 还没有任何软件,只能是硬件决定起点!看看x86 PC开机时,CS=0 xFFFF; IP=0 x0000 x86 PC刚开机时CPU处于实模式寻址0 xFFFF0(ROM BIOS映射区)中断向量表BIOS数据区中断服务程序0 x00000 0 x0FFFE实模式的寻址CS:IP(CS左移4位+IP)38linux中断处理不管引起中断的设备是什么,所有的中断处理程序都执行四个相同的基本操作1,在内核态堆栈保存IRQ的值和寄存器的内容2,为正在给IRQ线服务的PIC发送一个应答,这将允许PIC进一步发出中断3,执行共
17、享这个IRQ的所有设备的中断服务例程4,跳到ret_from_intr()的地址xlanchen2006.6.14Embedded Operating Systems39Linux中的设备中断IRQ号与I/O设备之间的对应关系是在初始化每个设备驱动程序时建立的xlanchen2006.6.14Embedded Operating Systems40中断处理系统初始化时,调用init_IRQ()函数用新的中断门替换临时中断门来更新IDT这段代码在interrupt数组中找到用于建立中断门的中断处理程序地址。xlanchen2006.6.14Embedded Operating Systems41
18、linux中断处理过程在调用do_IRQ之前,要为中断处理程序保存寄存器在interrupt数组中定义的中断处理程序中每个入口地址转换成汇编码是如下的一些指令IRQn_interrupt:pushl $n-256jmp common_interrupt这里对所有的中断处理程序都执行相同的代码common_interrupt:SAVE_ALLcall do_IRQjmp $ret_from_intrxlanchen2006.6.14Embedded Operating Systems42ssespeflagcseip$n-256esdseaxebpediesiedxecxebx返回地址Point
19、er硬件自动保存SAVE_ALLesp进程描述符do_IRQ执行时内核态的堆栈do_IRQ()的函数声明从do_IRQ返回后要执行的指令地址ret_from_intrxlanchen2006.6.14Embedded Operating Systemsxlanchen2006.6.14Embedded Operating Systems43中断处理do_IRQ()函数的等价代码:int irq=regs.orig_eax & 0 xff;/1irq_descirq.handler-ack(irq);/2handle_IRQ_event(irq,®s,irq_descirq.action)
20、;/3irq_descirq.handler-end(irq);/4处理下半部分/51句将$n-255转换成n,取得对应的中断向量2句应答PIC的中断,并禁用这条IRQ线。(为串行处理同类型中断)3句调用handle_IRQ_event()执行中断服务例程4句通知PIC重新激活这条IRQ线,允许处理同类型中断Whose Assembler?leaeax,ecx+ecx*2subesp,8cmpdword ptr ebp-8,0moveax,dword ptr eax*4+100hleal(%ecx,%ecx,2),%eaxsubl$8,%espcmpl$0,-8(%ebp)movl$0 x10
21、0(,%eax,4),%eaxIntel/Microsoft FormatGAS/Gnu FormatIntel/Microsoft Differs from GASOperands listed in opposite ordermov Dest, Src movl Src, DestConstants not preceded by $, Denote hex with h at end100h$0 x100Operand size indicated by operands rather than operator suffixsubsublAddressing format shows
22、 effective address computationeax*4+100h$0 x100(,%eax,4)AT&T Syntax vs. Intel SyntaxOperator size specificationbbyte(8-bit)wword(16-bit)llong(32-bit)qquadruple word(64-bit)SampleIntel : mov bx, axAT&T:movb %al, %bl / byte move movw %ax, %bx / word move movl %eax, %ebx / long word moveSimple Addressi
23、ng ModesNormal(R)MemRegRRegister R specifies memory addressmovl (%ecx),%eaxDisplacement D(R)MemRegR+DRegister R specifies start of memory regionConstant displacement D specifies offset movl 8(%ebp),%edxIndexed Addressing Modes Most General Form D(Rb,Ri,S)MemRegRb+S*RegRi+ DD: Constant “displacement”
24、 1, 2, or 4 bytesRb: Base register: Any of 8 integer registersRi:Index register: Any, except for %espS: Scale: 1, 2, 4, or 8Special Cases(Rb,Ri) MemRegRb+RegRiD(Rb,Ri) MemRegRb+RegRi+D(Rb,Ri,S) MemRegRb+S*RegRiGcc Inline Assembly 内嵌汇编What is Inline Assembly?Low level code written in assembly to be e
25、mbedded in a high level language The benefitsIts handy, speedy and very much useful in system programming Basic Inline Assembly Basic format:asm (statements); asm (nop); /*do nothing of course*/asm (“sti); /*stop interrupts*/_asm_ instead of asm_asm_ (pushl %eaxnt movl $0, %eaxnt popl %eax);Extended
26、 inline assembly Basic Format_asm_ ( statementnt statementnt statement : output_list : input_list : clobbered_list /内容会被修改的寄存器 ); Extended inline assemblyCommon constraint“0”, “1”, “9”: %0, %1, %9 general purpose registersq,r: dynamic allocate register q: eax, ebx, ecx, edxr: eax, ebx, ecx, edx, esi
27、, edia, b, c, d, S, D: eax, ebx, ecx ,edx, esi, edi respectivelyA: eax and edx combined into a 64-bit integer (use long longs) Extended inline assembly_asm_ _volatile_Prevent compiler from modifying the order of your inline assembly code when doing optimization mechanism. Closer Look at Extended ASM
28、Instruction StringSeries of assembly commandsSeparated by “;” or “n”Use “%” where normally would use “%”asm(“Instruction String : Output List : Input List : Clobbers List);void access_counter (unsigned *hi, unsigned *lo) /* Get cycle counter */ asm(rdtsc; movl %edx,%0; movl %eax,%1 : =r (*hi), =r (*
29、lo) : /* No input */ : %edx, %eax);Closer Look at Extended ASMOutput List:Expressions indicating destinations for values %0, %1, , %jEnclosed in parenthesesMust be lvalueTag =r indicates that symbolic value (%0, etc.), should be replaced by registerasm(“Instruction String : Output List : Input List : Clobbers List);void access_counter (unsigned *hi, unsigned *lo) /* Get cycle counter */ asm(rdtsc; movl %edx,%0; movl %eax,%1 : =r (*hi), =r (*lo) : /* No input */ : %edx, %eax);Closer Look at Extended ASMInput L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度茶叶科研与技术推广服务合同4篇
- 2025年度茶叶品牌授权经营合同模板4篇
- 2025年度产业园区配套服务场承包经营合同样本4篇
- 专业广告策划与推广服务协议样本版A版
- 2025年度智能家居系统产品试用体验合同4篇
- 专业拓展训练服务协议范例版
- 专业保安人员派遣合同合同2024年版版
- 专业储油罐租赁服务协议示例版
- 2024年04月恒丰银行合肥分行2024年社会招考笔试历年参考题库附带答案详解
- 2025年度体育场馆场地租赁安全与赛事运营管理合同4篇
- 常用静脉药物溶媒的选择
- 2023-2024学年度人教版一年级语文上册寒假作业
- 2024年预制混凝土制品购销协议3篇
- 2024-2030年中国高端私人会所市场竞争格局及投资经营管理分析报告
- GA/T 1003-2024银行自助服务亭技术规范
- 《消防设备操作使用》培训
- 新交际英语(2024)一年级上册Unit 1~6全册教案
- 2024年度跨境电商平台运营与孵化合同
- 2024年电动汽车充电消费者研究报告-2024-11-新能源
- 湖北省黄冈高级中学2025届物理高一第一学期期末考试试题含解析
- 上海市徐汇中学2025届物理高一第一学期期末学业水平测试试题含解析
评论
0/150
提交评论