2.操作系统运行环境和运行机制
来源:互联网 发布:房屋装修设计软件 编辑:程序博客网 时间:2024/05/16 03:30
2.1处理器状态
中央处理器(CPU):由运算器、控制器、一系列的寄存器和高速缓存构成。
两类寄存器:
(1)用户可见寄存器:高级语言编译器通过优化算法分配并使用之,以减少程序访问内存次数;
(2)控制和状态寄存器:用于控制处理器的操作,通常由操作系统代码使用。
a.用于控制处理器的操作
b.在某种特权级别下可以访问、修改
常见的控制和状态寄存器:
a.程序计数器:记录将要取出的指令的地址
b.指令寄存器:记录最近取出的指令
c.程序状态字:记录处理器的运行状态如条件码、模式、控制位等信息
操作系统对硬件的需求——保护:需要硬件提供基本运行机制:(1)处理器具有特权级别,能在不同的特权级运行的不同指令集合
(2)硬件机制可将os与用户程序隔离
因此,现代处理器通常将CPU状态设计划分为两种、三种或四种。在程序状态字寄存器PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态。
操作系统需要两种CPU状态:(1)内核态:运行操作系统程序——特权指令:只能由操作系统使用,用户程序不能使用的指令
(2)用户态:运行用户程序——非特权指令:用户程序可以使用的指令。
CPU状态之间的转换:(1)用户态——>内核态:唯一途径——>中断/异常/陷入机制,其中陷入指令又称访管指令,提供给用户程序的接口,用于调用操作系统的功能。例如(int,trap,syscall)
(2)内核态——>用户态:设置程序状态字PSW
2.2中断与异常机制
操作系统是由“中断驱动 ”或者“事件驱动”的。
中断/异常机制主要作用:
(1)及时处理设备发来的中断请求
(2)可使OS捕获用户程序提出的服务请求
(3)防止用户程序执行过程中的破坏性活动。
中断/异常的概念:CPU对系统发生的事件作出的一种反应。
中断的引入是为了支持CPU和设备之间的并行操作,设备完成输入/输出后,通过向CPU发送中断报告此次结果。
异常的引入是表示CPU执行命令时本身出现的问题。如算术溢出、除零、取数时的纠错,这是硬件改变了CPU的执行流程,转到相应的错误处理程序或异常处理程序或执行系统调用。
事件:(1)中断(外中断)
a.I/O中断
b.时钟中断
c.硬件故障
(2)异常(内中断)
a.系统调用
b.页故障/页错误
c.保护性异常
d.断点指令
e.其他程序性异常(如算术溢出等)
2.3中断/异常机制工作原理
中断/异常机制:硬件和软件相互配合而使计算机系统得以充分发挥能力。
硬件——中断/异常响应:捕获中断源发出的中断/异常请求,以一定方式响应,将处理器的控制权交给特定的处理程序。
软件——中断/异常处理程序:识别中断/异常类型并完成相应的处理。
中断响应:发现中断、接受中断的过程,由中断硬件部件完成。
处理器控制部件中设有中断寄存器。
中断响应过程:开始——>取下一条指令——>执行指令
中断向量表:由若干中断向量组成,即若干内存单元,存放中断处理程序入口地址和程序运行时所需的处理机状态字。
中断处理程序:设计操作系统时,为每一类中断/异常事件编号相应的处理程序,并设置好中断向量表。
系统运行时若响应中断,终端硬件部件将CPU控制权转给中断处理程序:
(1)保存相关寄存器信息;
(2)分析中断/异常的具体原因;
(3)执行对应的处理功能;
(4)恢复现场,返回被事件打断的程序。
2.4 X86处理器的中断/异常机制
中断:由硬件信号引发,分为可屏蔽中断和不可屏蔽中断。
异常:由指令执行引发的,比如除零异常,80X86处理器发布了大约20种不同的异常,对于某些异常,CPU会在执行异常处理程序之前产生硬件出错码,并压入内核态堆栈。
系统调用:特殊异常,从用户态到内核态的唯一入口
中断控制器(PIC或APIC):负责将硬件的中断信号转换为中断向量,并引发CPU中断。
实模式:中断向量表,存放中断服务程序的入口地址。入口地址=段地址左移4位+偏移地址;不支持CPU运行状态切换;中断处理与一般的过程调用相似。
保护模式:中断向量表改为中断描述符表,采用门描述符数据结构表示中断向量。
中断向量表/中断描述符表:
(1)任务门
(2)中断门:a.给出段选择符,中断/异常程序的段内偏移量
b.通过中断门后系统会自动禁止中断
(3)陷阱门:a.与中断门类似,但通过陷阱门后系统不会自动禁止中断。
(4)调用门
中断/异常的硬件处理过程:(1)确定与中断或异常关联的向量i;
(2)通过IDTR寄存器找到IDT表,获得中断描述符
(3)从GDTR寄存器获得GDT的地址;结合中断描述符中的段选择符,在GDT表获取对应的段描述符;从该段描述符中得到中断或异常处理程序所在的段基址
(4)特权级检查
(5)检查是否发生了特权级的变化,如果是,则进行堆栈切换(必须使用与新的特权级相关的栈)
(6)硬件压栈,保存上下文环境;如果一场产生了硬件出错码,也将它保存在栈中
(7)如果是中断,清IF位
(8)通过中断描述符中的段内偏移量和段描述符中的基地址,找到中断/异常处理程序的入口地址,执行其第一条指令。
2.5系统调用机制——操作系统向用户程序提供的接口
系统调用:用户在编程时可以调用的操作系统功能。
系统调用的作用:
(1)系统调用是操作系统提供给编程人员的唯一接口
(2)使CPU状态从用户态陷入内核态
典型系统调用举例:每个操作系统都提供几百种系统调用(进程控制、进程通信、文件使用、目录操作、设备管理、信息维护等)
系统调用机制的设计:
(1)中断/异常机制:支持系统调用服务的实现
(2)选择一条特殊指令:陷入指令(亦称访管指令):引发异常,完成用户态到内核态的切换
(3)系统调用号和参数:每个系统调用都事先给定一个编号(功能号)
(4)系统调用表:存放系统调用服务例程的入口地址
参数传递过程问题:常用以下三种方法实现用户程序的参数传递给内核 :
(1)由陷入指令自带参数:陷入指令的长度有限,且还要携带系统调用功能号,只能自带有限的参数
(2)通过通用寄存器传递参数:这些寄存器是操作系统和用户程序都能访问的,但寄存器的个数会限制传递参数的数量,常用。
(3)在内存中开辟专用堆栈区来传递参数
系统调用的执行过程:当CPU执行到特殊的陷入指令时:
(1)中断/异常机制:硬件保护现场,通过查中断向量表,把控制权转给系统调用总入口程序;
(2)系统调用总入口程序:保存现场,将参数保存在堆栈里,通过查系统调用表把控制权转给相应的系统处理例程或内核函数;
(3)执行系统调用例程;
(4)恢复现场,返回用户程序。
- 2.操作系统运行环境和运行机制
- 操作系统运行环境和运行机制
- 操作系统--运行环境与运行机制
- 操作系统--操作系统运行环境与运行机制
- (2)操作系统运行环境与运行机制
- 巩固基础——操作系统(2)操作系统的运行环境与运行机制
- 【JAVA-基础】—运行机制与运行环境
- 操作系统运行机制
- 操作系统运行机制
- 操作系统的运行环境
- 操作系统的运行环境
- ASP.NETt运行原理和运行机制
- C++/JAVA运行机制和运行效率
- ASP.NET运行原理和运行机制
- 操作系统原理第二周:操作系统运行环境
- 操作系统复习-1.3操作系统的运行环境
- 操作系统之我见-运行环境
- 第二讲:操作系统运行环境
- echarts 北京地图+热力图
- String.split丢失结尾空字符串的问题
- chrome防止自动填充密码
- 文章标题 POJ 3734 : Blocks (矩阵快速幂)
- http://www.cnblogs.com/jihua/archive/2012/09/28/yanzheng.html
- 2.操作系统运行环境和运行机制
- @RequestParam
- 如何在win10配置(python)虚拟环境 anaconda
- Linux上搭建SVN服务器以及使用SVN服务
- 一键校对梁
- UVALive 4945 Free Goodies
- Android BuildConfig.DEBUG的妙用
- 查看SQL SERVER 资源占用情况
- Java按照对象属性排序的两种方法