操作系统复试笔记
第二章 作业管理
- 短作业优先调度算法使得作业平均周转时间、平均等待时间最短
第三章 进程管理
进程间直接通信方式:管道、共享内存
进程间间接通信方式:消息队列、文件、信箱、信号量
公用队列属于临界资源
CPU繁忙型作业类似于长作业,需要耗费大量处理机时间,故先到先服务算法有利于CPU繁忙型作业;IO繁忙型作业类似于短作业,需要频繁请求IO操作而被阻塞,占用CPU的时间不会太长。一旦放弃CPU,必须重新排队等候,故短作业优先算法有利于IO繁忙型作业
中断向量是中断服务例行程序的入口地址,中断向量地址是程序入口地址的地址
中断发生时,由硬件保护并更新程序计数器PC,而不是软件完成,主要是为了保证系统运行可靠正确
现代操作系统中,不能进行进程的调度与切换的情况如下:
处理中断的过程中
进程在操作系统内核临界区中
其他需要完全屏蔽中断的原子操作过程中
进程切换发生在内核态
设计多级反馈队列时要考虑的因素:
就绪队列的数量,影响长进程的完成时间
就绪队列的优先级,影响进程的执行顺序
各就绪队列的调度算法,影响调度顺序
进程在就绪队列间的迁移条件,影响执行时间
第四章 死锁
死锁的预防 破坏死锁产生的4个必要条件之一即可
破坏互斥条件
一般无法破坏,但可使用SPOOLING假脱机技术将部分独占设备改为共享设备
破坏不可剥夺条件
常用于状态易于保存和恢复的资源,如CPU寄存器及内存
破坏零散请求条件
采用预先静态分配方法,但可能导致系统资源的浪费
破坏循环等待条件
采用顺序资源分配法。给每个资源编号,并且每个进程必须按编号递增的顺序请求资源,同类资源一次申请完
死锁的避免 在资源分配过程中,防止系统进入不安全状态
- 银行家算法,找到一个安全序列,则系统是安全状态。
- 银行家算法第二问:若进程P1要求(0,4,2,0),系统能否立即满足进程的要求?
此类问题一般修改资源分配表的已分配资源矩阵、可用资源向量,重新使用银行家算法处理即可 - 并非所有不安全状态都是死锁状态,只是不安全状态可能进入死锁。
死锁的检测和解除
死锁定理
- S为死锁的条件是当且仅当S状态的资源分配图是不可完全化简的。死锁定理用于死锁检测
临时资源的资源分配图
- 由资源指向进程的箭头表示该进程产生这种资源,由进程指向资源的表示该进程申请这种资源
- 一个箭头可表示产生一到多个资源,每个资源类至少有一个生产者进程
- 判断系统是否死锁的关键在于判断生产者进程的状态
- 从那些没有阻塞的进程入手,删除那些没有阻塞的进程的请求边,并使资源类中资源数减1。重复以上步骤直至图中所有的请求边都已经删除,则不会死锁。
死锁解除
- 资源剥夺法:挂起某些死锁进程,并抢占它的资源
- 撤销进程法:强制撤销部分甚至全部死锁进程
- 进程回退法:让一个或多个进程回退到足以回避死锁的地步
引入多道程序技术的前提条件之一是系统具有中断功能
死锁的四个必要条件中,无法破坏的是互斥使用资源
死锁避免方法不会限制用户申请资源的顺序,死锁检测方法(资源分配图)也不需要进程运行所需的资源总量信息
只有当进程提出资源申请且全部进程进入阻塞态时,系统才处于死锁状态
第五章 内存管理
静态装入(绝对装入):编程阶段就把物理地址计算好
可重定位:装入时把逻辑地址转换为物理地址,装入后不能改变
动态重定位:运行到访存指令时,再把逻辑地址转换为物理地址
内存保护需要操作系统和硬件机构合作完成
覆盖技术用于单一进程(作业),交换技术用于不同进程(作业)
分页会产生内部碎片,分段会产生外部碎片,段页式会产生内部碎片
分页或分段管理,提供给用户的物理地址空间不能确定,因为段表和页表长度不能确定
对重定位存储管理方式,在整个系统中设置一个重定位寄存器
操作系统实现分区存储管理的代价最小,因为分区管理是满足多道程序设计最简单的设计方案
对外存对换区的管理应以提高换入、换出速度为主要目标
操作系统采用分页存储管理方式,要求每个进程拥有一张页表,且进程的页表驻留在内存中(无论就绪、运行or阻塞)
虚拟内存管理中,逻辑地址在链接阶段形成,链接后形成的目标程序中的地址就是逻辑地址。
为使虚存系统有效地发挥其预期的作用,所运行的程序应具有的特性:较好的局部性,因为虚拟存储系统就是基于程序的局部性原理
区分:虚拟存储器的最大容量 ≤ 2^(地址寄存器位数),实际容量 ≤ 内存容量 + 外存容量
导致LRU算法实现起来耗费高的原因是:需要对所有的页进行排序
虚拟存储器系统的页表项中,决定是否发生页故障的是:合法位
能加快虚实地址转换的是:增大快表容量(容纳更多页表项,提高命中率)、让页表常驻内存(省去不在内存中的页表的调入过程)
固定分配,全局置换不可共存
工作集的窗口大小为n,表示进程最近n次访问的页面,包括重复访问的页面

第六章 文件管理 操作系统中负责管理和存储文件信息的软件机构
- 文件系统中,文件访问控制信息存储的合理位置是文件控制块
- 适合随机访问且易于文件扩展的文件物理结构是索引结构
- FAT是显式链接分配,其页表项大小取决于块数
- 打开文件操作的主要工作是 把指定文件的目录项(FCB)复制到内存指定区域
- 文件目录项即FCB,一般由文件基本信息(文件名、物理地址)、存取控制信息和使用信息组成
- 利用顺序检索法查找目录完成后,即可得到文件的逻辑地址
- 文件索引表大的主要内容包括关键字和记录逻辑地址

外存空闲空间管理
空闲表法 连续分配方式
将所有空闲区按其起始盘块号递增的次序排列
空闲链表法
空闲盘块链:将磁盘上所有空闲空间以盘块为单位拉成一条链
空闲盘区链:将磁盘上所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链
位示图法
利用二进制的一位来表示磁盘中一个盘块的使用情况
成组链接法 UNIX系统 结合了空闲表和空闲链表两种方法
第七章 设备管理
- 设备管理的目标:提高设备的利用率,提高CPU与IO设备之间的并行操作程度
IO系统的控制方式
程序直接控制
优点:简单
缺点:CPU效率低
中断控制 eg.键盘、鼠标
优点:提高了CPU利用率,使CPU和外设之间的并行工作成为可能
缺点:只适用于数据传输率低的设备
直接存储访问IO(DMA)
优点:CPU只干预IO操作的开始和结束,适用于高速设备
通道控制方式IO
- 一个CPU可以连接若干个通道,一个通道可以连接若干个控制器,一个控制器可以连接若干个设备
- 不仅能实现CPU和通道的并行操作,而且通道与通道之间也能并行,各通道上的外围设备也能并行,从而可达到提高整个系统效率的根本目的
通道按信息交换方式和连接的设备类型不同,可分为以下3种
字节多路通道
- 主通道采用时间片轮转 流量为各个IO设备数据传输率之和
- 仅适用于慢速外围设备
数组选择通道
- 一段时间只能为一台设备服务 流量为各个IO设备数据传输率的最大值
- 可以连接多台高速设备
数组多路通道
结合了字节多路通道能使各个子通道分时并行和选择通道传输速率高的优点,流量为各个IO设备数据传输率的最大值
解决"瓶颈"问题最有效的办法
增加设备到主机的通路
通道地址字和通道状态字
通道地址字(CAW):用来存放通道程序的首地址的单元
通道状态字(CSW):通道向操作系统报告工作情况的状态汇集
IO设备的分类
按数据组织分类
块设备 以数据块为单位 有结构设备 可寻址 DMA方式
- 传输速率较高;
- 可寻址,随机读写;
- 磁盘设备的IO采用DMA方式
字符设备 以单个字符为单位 无结构设备 不可寻址 中断方式
- 传输速率较低;
- 不可寻址;
- 字符设备的IO采用中断驱动方式
按数据传输率分类
低速设备 键盘、鼠标、语音的输入
中速设备 打印机
高速设备 磁带、磁盘、光盘
从资源分配角度分类
独占设备 属于临界资源,大多数低速的IO设备,eg.终端、打印机等
共享设备 允许多个进程同时访问 eg.磁盘
虚拟设备 利用假脱机技术(SPOOLing)将一台独占设备变换为若干台供多个用户(进程)共享的逻辑设备
IO软件的组成
- IO软件的结构:用户->用户级软件->与设备无关的系统软件->设备驱动程序->中断处理程序->外部IO设备
- 设置中断的目的:解决高速设备和低速IO设备之间的矛盾,提高系统工作效率
设备驱动程序 与具体IO设备密切相关
直接同硬件打交道的软件模块
任务:接受来自与设备无关的上层软件的抽象请求,进行与设备相关的处理
与设备无关的系统软件
建立在设备驱动程序之上,与具体设备无关的IO功能的集合
功能:统一命名、设备保护、提供与设备无关的逻辑块、缓冲管理、存储设备的块分配、独占设备的分配和释放、出错处理
设备独立性
用户在编制程序时所使用的设备与物理设备无关,它的优点是可以提高设备分配的灵活性和可扩展性
用户空间的IO软件
IO系统调用、Spooling系统:构成虚拟设备
缓冲技术
引入缓冲的主要原因:缓和CPU与IO设备间速度不匹配的矛盾,减少对CPU中断频率,提高并行性
单缓冲
从磁盘把数据读入到缓冲区,花费时间为T;缓冲区数据传送到用户区,花费时间为M;最后由CPU对数据进行计算,花费时间为C
每批数据的处理时间为MAX(C,T) + M
假设状态:用户区满,缓冲区空。
注意:计算多个块读取时间时,按照流水线思想来计算,即第一个块T+M+C,其余块MAX(C,T)+M
双缓冲
双缓冲可以实现对缓冲区中数据的输入和输出,以及CPU的计算,这三者并行工作。要求CPU和外设的速度相近
系统处理一块数据的处理时间可粗略地认为是MAX(M + C,T)
假设状态:一个缓冲区满,用户区空。
注意:计算多个块读取时间时,按照流水线思想来计算,即第一个块T+M+C,其余块MAX(C+M,T)
环形缓冲
三种缓冲区
- 空缓冲区R:用于存放输入数据
- 满缓冲区G:其中数据提供给计算进程使用
- 现行工作缓冲区C:计算进程正在使用的缓冲区
三个指针
- Nextg,指示计算进程下一个可用的缓冲区G
- Nexti,指示输入进程下一个可用的空缓冲区R
- Current,计算进程正在使用的缓冲区单元
缓冲区的使用
Getbuf过程:对于计算进程,将Nextg所指缓冲区提供给进程使用,并改为现行工作缓冲区,同时Nextg指向下一个G缓冲区;对于输入进程,将Nexti所指缓冲区提供给进程使用,同时Nexti指向下一个R缓冲区
Releasebuf过程:当计算进程把G缓冲区的数据提取完,将其改为空缓冲区R。当输入进程将缓冲区装满时,将该缓冲区释放,并改为G缓冲区
进程的同步
- Nexti指针追赶上Nextg指针,意味着输入速度大于计算速度,已把可用空缓冲装满。此时,输入进程应该阻塞,直至计算进程处理完某个缓冲区的全部数据。这种情况称为“系统受限计算(计算速度慢)”
- Nextg指针追赶上Nexti指针,意味着计算速度大于输入速度,已把全部已有数据的缓冲区抽空。此时,计算进程应该阻塞,直至输入进程装满某个缓冲区。这种情况称为“系统受限IO(IO速度慢)”
缓冲池
三个队列
- 空缓冲队列emq,由空缓冲区所链成的队列
- 输入队列inq,由装满输入数据的缓冲区所链成的队列
- 输出队列outq,由装满输出数据的缓冲区所链成的队列
四种工作方式
- 设备输入:Getbuf(emq)->hin->Putbuf(inq,hin)
- CPU输入:Getbuf(inq)->sin->Putbuf(emq,sin)
- 设备输出:Getbuf(emq)->hout->Putbuf(outq,hout)
- CPU输出:Getbuf(outq)->sout->Putbuf(emq,sout)
总线技术
单总线:用一条系统总线将各个部件连接起来
双总线:在单总线的基础上,在CPU和主存之间专门架设一组高速的存储总线
三总线:在双总线的基础上,增加了IO总线
设备管理中的数据结构
- 设备控制表(DCT):每个设备一张,描述设备特性和状态
- 控制器控制表(COCT):每个设备控制器一张,描述IO控制器的配置和状态
- 通道控制表(CHCT):每个通道一张,描述通道工作状态
- 系统设备表(SDT):每个系统一张,记录所有设备状态及控制表的入口
设备的分配与回收
- 先来先服务
- 基于优先级
本章易错点总结
- 共享设备必须是一段时间内允许多个进程同时访问的设备,但每个时刻只有一个进程使用,共享设备必须是可寻址的和可随机访问的
- 设备控制器通常需要提供控制寄存器、状态寄存器和控制命令
- 设备控制器中用于实现设备控制功能的是IO逻辑
- 将系统中的每台设备按某种原则统一进行编号,作为区分硬件和识别设备的代号,该编号成为设备的绝对号
- 缓冲技术的缓冲池在主存中
- 缓冲区管理着重考虑的问题是 实现进程访问缓冲区的同步
- SPOOLing技术的系统中,用户的打印结果首先被送到磁盘(输出井),而输入设备的数据可以直接处理或保存到磁盘(输入井)中
- SPOOLing系统由预输入程序、井管理程序和缓输出程序组成
- 扇区是磁盘可寻址的最小单位
- SSD固态硬盘优势主要体现在随机存取的速度,写速度较慢,但读写性能高于常规硬盘,缺点是容易磨损
- 大多操作系统为改善磁盘访问时间,以簇为单位进行空间分配
- UNIX的块设备缓冲区管理采用缓冲池管理的方法。缓冲区动态地组织成多个队列,包括:空闲缓冲区队列、设备缓冲区队列和设备IO请求队列
- 一个磁盘的转速为100r/s,设寻道时间为10ms,一个磁盘包含8个扇区,每个扇区大小为1KB,若要读取一个大小为16KB的顺序文件,则磁盘访问时间为?
访问时间 = 寻道时间 + 旋转时间 + 传输时间
寻道时间 = 10ms,旋转时间 = 1/2 * 旋转周期
传输时间:16KB文件,每个扇区1KB,要访问16个扇区,一个盘包含8个扇区,因此要转2圈,传输时间 = 2 * 旋转周期

浙公网安备 33010602011771号