第三章 进程管理
进程间直接通信方式:管道、共享内存
进程间间接通信方式:消息队列、文件、信箱、信号量
公用队列属于临界资源
CPU繁忙型作业类似于长作业,需要耗费大量处理机时间,故先到先服务算法有利于CPU繁忙型作业;IO繁忙型作业类似于短作业,需要频繁请求IO操作而被阻塞,占用CPU的时间不会太长。一旦放弃CPU,必须重新排队等候,故短作业优先算法有利于IO繁忙型作业
中断向量是中断服务例行程序的入口地址,中断向量地址是程序入口地址的地址
中断发生时,由硬件保护并更新程序计数器PC,而不是软件完成,主要是为了保证系统运行可靠正确
现代操作系统中,不能进行进程的调度与切换的情况如下:
处理中断的过程中
进程在操作系统内核临界区中
其他需要完全屏蔽中断的原子操作过程中
进程切换发生在内核态
设计多级反馈队列时要考虑的因素:
就绪队列的数量,影响长进程的完成时间
就绪队列的优先级,影响进程的执行顺序
各就绪队列的调度算法,影响调度顺序
进程在就绪队列间的迁移条件,影响执行时间
第四章 死锁
死锁定理:S为死锁的条件是当且仅当S状态的资源分配图是不可完全化简的。死锁定理用于死锁检测
引入多道程序技术的前提条件之一是系统具有中断功能
死锁的四个必要条件中,无法破坏的是互斥使用资源
死锁避免方法不会限制用户申请资源的顺序,死锁检测方法(资源分配图)也不需要进程运行所需的资源总量信息
只有当进程提出资源申请且全部进程进入阻塞态时,系统才处于死锁状态
第五章 内存管理
静态装入(绝对装入):编程阶段就把物理地址计算好
可重定位:装入时把逻辑地址转换为物理地址,装入后不能改变
动态重定位:运行到访存指令时,再把逻辑地址转换为物理地址
内存保护需要操作系统和硬件机构合作完成
覆盖技术用于单一进程(作业),交换技术用于不同进程(作业)
分页会产生内部碎片,分段会产生外部碎片,段页式会产生内部碎片
分页或分段管理,提供给用户的物理地址空间不能确定,因为段表和页表长度不能确定
对重定位存储管理方式,在整个系统中设置一个重定位寄存器
操作系统实现分区存储管理的代价最小,因为分区管理是满足多道程序设计最简单的设计方案
对外存对换区的管理应以提高换入、换出速度为主要目标
操作系统采用分页存储管理方式,要求每个进程拥有一张页表,且进程的页表驻留在内存中(无论就绪、运行or阻塞)
虚拟内存管理中,逻辑地址在链接阶段形成,链接后形成的目标程序中的地址就是逻辑地址。
为使虚存系统有效地发挥其预期的作用,所运行的程序应具有的特性:较好的局部性,因为虚拟存储系统就是基于程序的局部性原理
区分:虚拟存储器的最大容量 ≤ 2^(地址寄存器位数),实际容量 ≤ 内存容量 + 外存容量
导致LRU算法实现起来耗费高的原因是:需要对所有的页进行排序
虚拟存储器系统的页表项中,决定是否发生页故障的是:合法位
能加快虚实地址转换的是:增大快表容量(容纳更多页表项,提高命中率)、让页表常驻内存(省去不在内存中的页表的调入过程)
固定分配,全局置换不可共存
工作集的窗口大小为n,表示进程最近n次访问的页面,包括重复访问的页面
第六章 文件管理
第七章 设备管理
- 设备管理的目标:提高设备的利用率,提高CPU与IO设备之间的并行操作程度
IO系统的控制方式
程序直接控制
优点:简单
缺点:CPU效率低
中断控制 eg.键盘、鼠标
优点:提高了CPU利用率,使CPU和外设之间的并行工作成为可能
缺点:只适用于数据传输率低的设备
直接存储访问IO(DMA)
优点:CPU只干预IO操作的开始和结束,适用于高速设备
通道控制方式IO
- 一个CPU可以连接若干个通道,一个通道可以连接若干个控制器,一个控制器可以连接若干个设备
- 不仅能实现CPU和通道的并行操作,而且通道与通道之间也能并行,各通道上的外围设备也能并行,从而可达到提高整个系统效率的根本目的
字节多路通道
- 主通道采用时间片轮转 流量为各个IO设备数据传输率之和
- 仅适用于慢速外围设备
数组选择通道
- 一段时间只能为一台设备服务 流量为各个IO设备数据传输率的最大值
- 可以连接多台高速设备
数组多路通道
结合了字节多路通道能使各个子通道分时并行和选择通道传输速率高的优点,流量为各个IO设备数据传输率的最大值
解决"瓶颈"问题最有效的办法
增加设备到主机的通路
通道地址字和通道状态字
通道地址字(CAW):用来存放通道程序的首地址的单元
通道状态字(CSW):通道向操作系统报告工作情况的状态汇集
IO设备的分类
按数据组织分类
块设备 以数据块为单位 有结构设备
- 传输速率较高;
- 可寻址,随机读写;
- 磁盘设备的IO采用DMA方式
字符设备 以单个字符为单位 无结构设备
- 传输速率较低;
- 不可寻址;
- 字符设备的IO采用中断驱动方式
按数据传输率分类
低速设备 键盘、鼠标、语音的输入
中速设备 打印机
高速设备 磁带、磁盘、光盘
从资源分配角度分类
独占设备 属于临界资源,大多数低速的IO设备,eg.终端、打印机等
共享设备 允许多个进程同时访问 eg.磁盘
虚拟设备 利用假脱机技术(SPOOLing)将一台独占设备变换为若干台供多个用户(进程)共享的逻辑设备
IO软件的组成
- IO软件的结构:用户->用户级软件->与设备无关的系统软件->设备驱动程序->中断处理程序->外部IO设备
- 设置中断的目的:解决高速设备和低速IO设备之间的矛盾,提高系统工作效率
设备驱动程序
直接同硬件打交道的软件模块
任务:接受来自与设备无关的上层软件的抽象请求,进行与设备相关的处理
与设备无关的系统软件
建立在设备驱动程序之上,与具体设备无关的IO功能的集合
功能:统一命名、设备保护、提供与设备无关的逻辑块、缓冲管理、存储设备的块分配、独占设备的分配和释放、出错处理
用户空间的IO软件
IO系统调用、Spooling系统:构成虚拟设备
缓冲技术
引入缓冲的主要原因:缓和CPU与IO设备间速度不匹配的矛盾,减少对CPU中断频率,提高并行性
单缓冲
从磁盘把数据读入到缓冲区,花费时间为T;缓冲区数据传送到用户区,花费时间为M;最后由CPU对数据进行计算,花费时间为C
每批数据的处理时间为MAX(C,T) + M
双缓冲
双缓冲可以实现对缓冲区中数据的输入和输出,以及CPU的计算,这三者并行工作。要求CPU和外设的速度相近
系统处理一块数据的处理时间可粗略地认为是MAX(C,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):每个系统一张,记录所有设备状态及控制表的入口
设备的分配与回收
- 先来先服务
- 基于优先级