操作系统

中断 & 异常

总览

中断的概念与与作用

中断的分类

【中断源—处理器硬件故障中断事件】

  • 由处理器、内存储器、总线等硬件故障引起

  • 处理原则为:保护现场,停止设备,停止CPU,向操作员报告,等待人工干预

【中断源—程序性中断事件】

  • 处理器执行机器指令引起

    1. 除数为零、操作数溢出等算术异常:简单处理,报告用户;也可以由用户编写中断续元程序处理

    2. 非法指令、用户态使用特权指令、地址越界、非法存取等指令异常:终止进程

    3. 终止进程指令:终止进程

    4. 虚拟地址异常:调整内存后重新执行指令

【中断源—自愿性中断事件】

  • 处理器执行陷入指令请求OS服务引起;在操作系统中,它一般又被称作系统调用

    1. 请求分配外设、请求I/O、等等

    2. 处理流程是:陷入OS,保护现场,根据功能号查入口地址,跳转具体处理程序

【中断源—I/O中断事件】

  • 来源于外围设备报告I/O状态的中断事件

    1. I/O完成:调整进程状态,释放等待进程

    2. I/O出错:等到人工干预

    3. I/O异常:等待人工干预

【中断源—外部中断事件】

  • 由外围设备发出的信号引起的中断事件

    1. 时钟中断、间隔时钟中断:记时时间片处理

    2. 设备报到与结束中断:调整设备表

    3. 键盘/鼠标信号中断:根据信号做出相应反映

    4. 关机/重启动中断:写回文件,停止设备与CPU

外中断的处理过程

总结

基本分段储存管理

分段

段表

地址变换

分段 VS 分页

总结

段页式管理

分段+分页

段表、页表

地址变换

图中页表存放块号为页表始址.

总结

请求分页管理方式

虚拟内存技术

 100多G的大表哥是怎么运行在4G内存的电脑上的呢?虚拟内存技术.

页表机制

缺页中断机构

需要访问页号为0的页面,此时该页面不在内存中

①若此时内存中有空闲内存块,将页面放入内存的a号块,同时页表中的内存块号更改为a,状态位为1

②若此时内存中无空闲内存块,在内存中选择页号为2的页面淘汰后执行①.若页号为2的页面在内存期间被修改过,则要将其写回外存,未修改过则不用.

地址变换机构

总结

页面置换算法

总览

最佳置换算法(OPT)

需要将页面2放入内存块中, 因为该进程的内存块已满, 需要从已存在于内存块中的页面[0,1,7]中选择以后永不使用最长时间内不再被访问的页面换出内存块.

因为页面7是最长时间内不再被访问的页面, 因此将页面7从内存块1中换出.

此时需要访问页面3, 将最长时间内不再被访问的页面1从内存块3中换出

先进先出置换算法(FIFO)

页面[3,2,1]需要依次访问内存块, 此时有空闲内存块, 队列为[3,2,1]

此时需要访问页面0, 从队列中换出最先进入的页面3, 队列更新为[2,1,0]

此时需要访问页面3, 从队列中换出最先进入内存的页面2, 队列更新为[1,0,3]

最近最久未使用置换算法(LRU)

页面[1,8,7,2]依次需要被访问, 此时有空闲内存块.

需要访问页面3, 无空闲内存块, 页面7最近最久未使用, 因此被换出内存块3

需要访问页面7, 从已在内存中的页面[1,8,3,2]中将最近最久未被使用的页面8换出内存块2

时钟置换算法(CLOCK)

已在内存中的页面[1,3,4,2,5], 访问位均为0,

循环队列为: 1(0) -> 3(0) -> 4(0) -> 2(0) -> 5(0) -> 1(0) , 1(0)表示一号页访问位为0

需要访问页面6, 因为1(0), 将1号页从内存中换出

循环队列更新为: 6(1) -> 3(0) -> 4(0) -> 2(0) -> 5(0) -> 6(1)

接下来需要访问页面[3,4], 因为页面[3,4]均已在内存中, 将访问位更新为1

循环队列更新为: 6(1) -> 3(1) -> 4(1) -> 2(0) -> 5(0) -> 6(1)

接下来需要访问页面7, 将页面[3,4]的访问位更新为3, 因为2(0), 所以将页面2换出

循环队列更新为: 6(1) -> 3(1) -> 4(1) -> 7(1) -> 5(0) -> 6(1)

改进型的时钟置换算法

只需要扫描1轮的情况

需要扫描2轮的情况

第一轮没有找到 (0,0)

第二轮, 将 (0,0) 更新为 (0,1), 找到第一个更新前是 (0,1) 的帧

需要扫描3轮的情况

第一轮没有找到 (0,0)

第二轮将所有扫描过的帧的访问位更新为0, 没有找到更新前是 (0,1) 的帧

第三轮找到第一个 (0,0)

需要4轮的情况

第一轮

第二轮

第三轮

第四轮

总结

页面分配策略

总览

页面分配 & 置换策略

调入页面时机

从何处调页

抖动颠簸现象

工作集

总结