当前位置:文档之家› 2操作系统硬件机制

2操作系统硬件机制

CPU检测到的异常,包括:错误Fault、 陷阱Trap和中止Abort,例如:算术溢出、 被零除、用户态下使用了特权指令等;
程序设定的异常,即程序员通过int、int3等 指令来发出的中断请求,也称为软中断,主 要用来实现系统调用服务。
20
20
• 异步中断:指由其他的硬件设备在任意的时刻 所发出的中断,简称为“中断” ;
流和任务切换
23
中断优先级
• 中断优先级是中断响应的优先级别。 • 当多个中断发生时,系统根据优先级决
定响应中断的次序,优先响应高优先级 的中断,同级中断则按硬件规定的次序 响应。 • 中断优先级由高到低的顺序为:硬件故 障中断、访管中断、程序性中断、外部 中断、输入/输出中断。
24
中断屏蔽
• 中断屏蔽表示暂时封锁对中断的响应,待屏 蔽消除后再响应。
操作系统硬件机制
1. 处理器状态、特权指令、非特权指 令;
2. 中断概念、中断系统、中断向量表、 中断响应处理过程;
3. 系统调用、处理过程、分类
1
操作系统的硬件环境
任何系统软件都是对硬件功能的延伸,都是 建立在硬件基础上的,离不开硬件设施的支 持。而操作系统更是直接依赖于硬件,与硬 件的关系尤为密切。
int sys_fork(); int sys_read();
创建进程 读文件
int sys_write(); int sys_open(); int sys_execve(); int sys_time(); int sys_chdir(); int sys_mount();
写文件 打开文件 执行程序 取当前时间 更改当前目录 安装文件系统
那么用户程序如何才能去做一些带有“特权”的 事情(如I/O)呢? 解决之道是 ————
பைடு நூலகம்11
11
二、系统调用
用户程序通过特殊的访管指令,来请求操作系统 为其提供某种功能的服务。系统调用指令的实现 过程一般是:
当CPU执行访管指令时,即引起访管中断;
处理器保存中断点的程序执行上下文环境(PSW, PC和其他的一些寄存器),CPU切换到管态。
中断处理程序开始工作,调用相应的系统服务;
中断处理结束后,恢复被中断程序的上下文环境, CPU恢复为目态,回到中断点继续执行。
12
12
中断处理程序
陷入到 管态
OS内核
系统服务程序
恢复到 目态
管态(系统态) 目态(用户态)
系统调用(汇编指令)
用户程序
13
13
Linux0.11版本中的系统调用(72个)


数组sys_call_table[]记录了每个系统调用函数的入 口地址,系统调用中断int 0x80,eax中是调用号。14
14
OS需要的硬件特性
✓ 受保护的指令; ✓ 系统调用;
内存保护; 中断机制; I/O系统; 时钟操作。
15
15
三、内存保护
Why 内存保护?
You can’t hurt me, I can’t hurt you
26
中断响应流程图
取 执行一条指令

指令结束?

Y

有中断请求? N 令
Y
Y 响应中断
开中断?
N
27
中断响应过程
• 中断响应过程一般包含以下几步:
– 发现中断源 – 保护现场 – 引出中断处理程序
28
发现中断源
• 发现中断源:通过扫描中断寄存器检查有无 中断请求。
– 中断装置:发现中断源而产生中断过程的设备 称为中断装置。中断由软硬件协同完成,软硬 件部分合称中断系统。中断系统的职能是实现 中断进入。
17
17
四、中断机制
中断对于操作系统的重要性 就像机器中的驱动齿轮一样
有人把操作系统称为是由 “中断驱动”或者 “(中断)事件驱动”
18
18
什么是中断(interrupt)? • 指的是由于某个事件的发生,改变了正在CPU上
执行的指令的顺序; • 这种事件对应于CPU芯片内部或外部的硬件电路
所生成的电信号。
访问某些硬件资源的指令,这些硬件资源 禁止用户程序直接访问;
对I/O设备的直接访问指令,如磁盘、打印 机等;
对内存管理状态进行操作的指令(页表指 针、刷新TLB等); 某些特殊的状态位的设置指令;
停机指令。 5 5
如何从硬件上实现OS的这个要求?
处理器的状态
根据运行程序对资源和机器指令的使用权限, 把处理器设置为不同状态。 多数系统将处理器工作状态划分为管态和目态。
31
中断处理过程
• 中断处理功能由硬件和软件配合完成。 硬件负责中断的发现及进入,软件负责 中断的分析处理及恢复工作。
• 软件中断处理过程主要有三项工作:
– 保护被中断程序的现场并传递参数 – 执行相应的中断服务程序 – 恢复被中断程序的现场并退出中断
32
中断处理例程简介1
• 硬件故障中断的处理:这类故障一般需要人工
– 断点及恢复点:发现中断时刚执行完的那条指 令所在的单元号称为断点,断点的逻辑后继指 令的单元号称为恢复点。
29
保护现场
• 保护现场:当中断发生时,将现场信息保存 到内存中。
– 现场:指中断那一刻能确保程序继续运行的信 息,主要包括:后继指令单元号、程序运行时 CPU状态、指令执行情况、程序执行中间结果 。
21
21
中断嵌套
• 在处理一个中断事件时,系统又响应了 新的中断事件。
程序执行 中断处理 嵌套中断处理
中断
再次中断
返回
返回
22
中断的作用
• CPU与I/O设备并行工作:设备传输结束发中断 • 硬件故障处理:出现故障发中断 • 实现人机联系:干预机器运行,了解机器状态,下达临时命

• 实现多道程序和分时系统:切换 • 实现实时处理:以中断方式传送实时信号 • 实现应用程序与OS联系:如软中断 • 多处理机间的联系:以中断方式实现多处理机间的信息交
可屏蔽中断,即I/O中断,它是当外部设备 或通道操作正常结束或发生错误时所发生 的中断。例如:打印机打印完成、缺纸, 读磁盘时驱动器中没有磁盘等;
不可屏蔽中断,例如:由掉电、存储器校 验错等硬件故障引起的硬件中断;
• 每一个中断或异常都用一个0-255之间的整数 来标识,称为中断向量,系统根据中断向量, 来为每一个中断或异常指定相应的处理程序。
– 恢复现场:被中断程序恢复运行之前,将保存 的现场信息恢复到内存中。
30
引出中断处理程序
• 引出中断处理程序:中断发生时,中断系统 将程序状态字的内容保存到主存约定单元中 ,再将中断处理程序的程序状态字送入相应 的寄存器,于是引出了中断处理程序。
– 中断响应的本质是交换程序状态字的内容以保 留程序断点信息、自动转入相应的中断处理程 序。
33
中断处理例程简介2
• 外部中断的处理:对不同中断分别进行处理。
如时钟中断完成增加时钟计数。
• 外部设备中断的处理:分为以下情况
– 传输结束:决定传输是否结束。若未结束则启 动下一次传输,否则置设备状态为空闲。
– 传输错误:置设备空闲,报告传输错误。 – 故障:置设备空闲,报告设备错误。
• 访管中断的处理:根据系统调用号查得系统 调用程序的入口地址,并转入执行。
管态:操作系统的管理程序运行时的状态,较高的
特权级别,又称为特权态、系统态、内核态
处理器处于管态时:可以执行所有的指令(包括特权 指令)、使用所有的资源,并具有改变处理器状态的 能力。
Supervisor mode == “Superuser” privileg6e ?
6
目态:用户程序运行时的状态,较低的特权级别,
现有基于x86处理器的操作系统,多数UNIX、Linux以 及Windows系列大都只用了R0和R3两个特权级别
9
9
问题一:CPU怎么来判断当前运行的程序是 系统程序还是用户程序呢?
程序状态字PSW
一个专门的寄存器,用来指示处理器的状态, PSW (Program Status Word ),通常包括:
• CPU的工作状态码——指明管态还是目态,用来 说明当前在CPU上执行的是操作系统还是一般用 户,从而决定其是否可以使用特权指令或拥有其
它的特殊权力;
• 条件码——反映指令执行后的结果特征;
• 中断屏蔽码——指出是否允许中断
10
10
问题二:状态之间如何转换?
管态 → 目态 通过设置PSW(修改程序状态字)来实现; 目态 → 管态 用户程序无法直接修改程序状态字;
干预,OS所做工作是:保护现场、防止事故蔓延 、向操作员报告并提供故障信息。
• 程序性中断的处理:大体有以下处理方法
– 对纯程序性错误,如地址越界,OS将出错程序 名、出错地址、错误性质报告给操作员
– 对其他程序性错,如溢出,可交给用户自行处理 ,若用户没有提出处理办法, 则OS将出错程序 名、出错地址、错误性质报告给操作员。
防止一个用户程序去访问其他用户 程序的数据; 保护操作系统免受用户程序的破坏。
16
16
在硬件上如何支持? 最简单的做法:基址寄存器和边界寄存器
内存 程序C 程序A 程序B
基址寄存器 边界寄存器
在开始运行一 个程序时,由 操作系统负责 给基址寄存器 和边界寄存器 设置相应的值
虚拟存储技术:把内存和外存结合起来使用,硬件 提供虚、实地址映射的机制。
又称为普通态(普态)、用户态。 在此状态下禁止使用特权指令,不能直接使用系统 资源与改变CPU状态,并且只能访问用户程序所在 的存储空间。 有些系统将处理器状态划分核心状态,管理状态和 用户程序状态(目标状态)三种。
相关主题