操作系统思维导图
暑假期间总结的,内容都比较基础,可用作基础复习!文章最下方有思维导图PDF版本下载链接!
再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。
01计算机系统概述
01操作系统的基本概念
-
概念
- 操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理组织和调度计算机的工作和资源分配,是最基本的系统软件。
-
特征
-
并发-两个或多个事件在同一时间间隔内发生
- 注意同一时间间隔(并发)和同一时刻(并行)的区别
- 宏观并行,微观串行
- 并行性是指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作。
-
共享-系统中的资源可供内存中多个并发执行的进程共同使用
- 互斥共享方式-一段时间内只允许一个进程访问该资源。把在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。
- 同时访问方式-允许在一段时间内由多个进程“同时”访问
-
虚拟-把一个物理上的实体变成若干逻辑上的对应物。
-
时分复用技术
- 处理器的分时共享
-
空分复用技术
- 虚拟存储器
-
-
异步
- 多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它已,不可以预知的速度向前推进,这就是进程的异步性。
-
-
操作系统的目标和功能
-
作为计算机系统资源的管理者
-
处理机管理
- 进程管理,包括进程控制、进程同步、进程通信、死锁处理、处理机调度。
-
存储器管理
- 内存分配、地址映射、内存保护与共享和内存扩充等。
-
文件管理
- 文件存储空间的管理、目录管理、文件读写管理和保护
-
设备管理
- 主要完成用户的I/O请求,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。
-
-
作为用户与计算机硬件系统之间的接口
-
命令接口-利用这些操作命令来组织和控制作业的执行
-
联机命令
- 又称为交互式命令接口,适用于分时和实时系统的接口。
-
脱机命令
- 又称为批处理命令接口,适用于批处理系统,它由一组作业控制命令(或作业控制语句)组成
-
-
程序接口-编程人员可以使用它们请求操作系统服务
- 程序接口由一组系统调用命令(简称系统调用,也称广义指令)组成
-
-
操作系统用作扩充机器
- 操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强、使用更方便的机器。
-
02操作系统的发展和分类
-
1.手工操作阶段(此阶段无操作系统)
-
缺点
- (1)用户独占全机,不会出现因资源已被其他用户占用而等待的现象,但资源利用率低。
- (2)CPU等待手工操作,CPU的利用不充分
-
-
2.批处理阶段(操作系统开始出现)
-
1.单道批处理系统-系统对作业的处理时成批进行的,但内存中始终保持一道作业。
- 自动性
- 顺序性
- 单道性
-
2.多道批处理系统-多道程序设计技术允许多个程序同时进入内存并允许这些他们在CPU中交替地运行,这些程序共享系统中的各种硬/软件资源。
-
特点
- 多道
- 宏观上并行
- 微观上串行
-
优点
- 资源利用率高,多道程序共享计算机资源,从而使各种资源得到充分利用
- 系统吞吐量大,CPU和其他资源保持“忙碌”特点
-
缺点
- 用户响应的时间较长
- 不提供人机交互能力
- 用户即不能了解自己的程序的运行情况,又不能控制计算机
-
-
-
3.分时操作系统-分是技术,是指把处理器的运行时间分成很短的时间片,按时间片轮转把处理器分配给各联机作业使用。
- 同时性
- 交互性
- 独立性
- 及时性
-
4.实时操作系统-能在某个时间限制内完成某些紧急任务而不需要时间片排队
-
硬实时系统
- 某个动作必须绝对地在规定的时刻(或规定的时间范围)发生
-
软实时系统
- 能接受偶尔违反时间规定且不会引起任何永久性的损害
-
-
5.网络操作系统
-
把计算机网络中的各台计算机有机地结合起来,提供一种统一、经济而有效的使用各台计算机的方法,实现各台计算机之间数据的相互传送
- 特点-网络中各种资源的共享及各台计算机之间的通信
-
-
6.分布式计算及系统
- 任何工作都可以分布在几台计算机上,由他们并行工作、协同完成。用于管理分布式计算及系统的操作系统称为分布式计算及系统。
03操作系统的运行环境
-
操作系统的运行机制
-
操作系统内核程序(核心态)
-
用户自编程序(即系统外层的应用程序)
(用户态) -
特权指令
- -指计算机中不允许用户直接使用的指令,如I/O指令、置中断指令,存取用户内存保护的寄存器、送程序状态(管态、内核态)
-
-
系统内核
-
时钟管理
- 计时、通过时钟中断的管理实现进程的切换
-
中断机制
- 提高多道程序运行环境中CPU的利用率
-
原语
- 处于操作系统的最低层,是最接近硬件的部分
- 这些程序的运行具有原子性,其操作只能一气呵成
- 这些程序的运行时间都较短,而且调用频繁
-
系统控制的数据结构及处理
-
进程管理
- 进程状态管理、进程调用和分派、创建与撤销进程控制块等
-
存储器管理
- 存储器的空间分配和回收,内存信息保护程序、代码对换程序等
-
设备管理
- 缓冲区管理、设备分配和回收
-
-
-
中断和异常的概念
-
中断(外中断),指来自CPU执行指令以外的事件的发生
-
异常(内中断)、例外或陷入,指源自CPU执行指令内部的事件
-
中断
-
内中断
-
自愿中断
- 指令中断
-
强迫中断
- 硬件故障
- 软件中断
-
-
外中断(强迫中断)
- 外设请求
- 人工干预
-
-
-
系统调用-指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序
-
设备管理
- 完成设备的请求或释放,以及设备启动等功能
-
文件管理
- 完成文件的读、写、创建及删除等功能
-
进程控制
- 完成进程的创建、撤销、阻塞及唤醒等功能
-
进程通信
- 完成进程之间的消息传递或信号传递等功能
-
内存管理
- 完成内存的分配、回收以及获取作业占用内存区大小及始址等功能
-
04操作系统的体系结构
-
大内核
- 将操作系统的主要功能模块都作为系统内核,运行在核心态
- 优点:高性能
- 缺点:内核代码庞大,结构混乱,难以维护
-
微内核
- 只把最基本的功能保留在内核态
- 优点:内核功能少,结构清晰,方便维护
- 缺点:需要频繁的在核心态和用户态之间切换,性能低
02进程管理
01进程与线程
-
目的
- 更好地描述和控制程序并发执行
-
定义
- 进程是进程实体地一次运行,是系统进行资源分配和调度的一个独立单位
-
组成
-
PCB
- 保存进程运行期间相关的数据,是进程存在的唯一标志
-
程序段
- 能被进程调度程序调度到CPU运行的程序的代码段
-
数据段
- 存储程序运行期间的相关数据,可以是原始数据也可以是相关结果
-
-
进程状态
-
状态种类
-
运行状态
- 进程正在处理机上运行
-
就绪状态
- 进程已获得了除处理及之外的一切所需资源
-
阻塞状态
- 进程正在等待某一事件而暂停运行
-
创建状态
- 进程正在被创建,尚未转到就绪状态
-
结束状态
- 进程正从系统中消失,分为正常结束和异常退出
-
-
状态变化
-
就绪状态-运行状态
- 经过处理机调度,就绪进程得到处理机资源
-
运行状态-就绪状态
- 时间片用完或在可剥夺系统中有更高优先级进程进入
-
运行状态-阻塞状态
- 进程需要的某一资源还每准备好
-
阻塞状态-就绪状态
- 进程需要的资源已准备好
-
-
-
进程控制
-
创建
-
终端用户登录系统、作业调度、系统提供服务、用户程序的应用请求等
-
创建进程的过程
- (1)为新进程分配一个唯一的进程标识号,并申请一个空白的PCB(PCB是有限的)。
- (2)为进程分配资源,为新进程的程序和数据及用户占分配必要的内存空间(在PCB中体现)。
- (3)初始化PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等。
- (4)若进程就绪队列能够接纳新进程,则将新进程插入就绪队列,等待被调度运行。
-
-
-
终止
-
正常结束
- 表示进程任务已经完成并准备推出运行
-
发生异常
- 表示进程在运行时,发生了某种异常事件,使程序无法继续运行,如存储区越界、保护错、非法指令、特权指令错、I/O故障等。
-
外界干预
- 进程应外界的请求而终止运行,如操作员或操作系统干预、父进程请求和父进程终止
-
-
阻塞
-
等待资源
-
阻塞原语的执行过程
- (1)找到将要被阻塞进程的标识号对应的PCB
- (2)若该进程为运行态,则保护其现场,将其状态转为阻塞态,停止运行
- (3)把该PCB插入响应时间的等待队列
-
-
-
唤醒
-
资源到达
-
唤醒原语的执行过程
- (1)在该事件的等待队列中找到相应进程PCB
- (2)将其从等待队列中移出,并置其状态为就绪态
- (3)把该PCB插入就绪队列,等待调度程序调度
-
-
-
切换
-
时间片用完、主动放弃处理机、被更高优选级的进程剥夺处理机
-
切换过程
- (1)保存处理机上下文,包括程序计数器和其他寄存器
- (2)更新PCB信息
- (3)把进程的PCB移入相应的队列,如就绪、在某事件阻塞等队列
- (4)选择另一个进程执行,并更新其PCB
- (5)更新内存管理的数据结构
- (6)恢复处理机上下文
-
-
-
-
进程通信
-
共享存储
-
低级方式
- 基于数据结构的共享
-
高级方式
- 基于存储区的共享
-
-
消息传递
-
直接通信方式
- 直接把消息挂到接收进程的消息队列
-
间接通信方式
- 挂到某个中间实体,接收进程找实体接收消息,类似电子邮件
-
-
管道通信
- 利用一种特殊的pipe文件连接两个进程
-
-
代价
-
时间代价
- 进程控制块及协调各运行机构所占用的内存空间开销
-
空间代价
- 进行进程间的切换、同步及通信等所付出的时间开销
-
-
线程
-
引入目的
- 为了更好的使多道程序并发执行,以提高资源利用率和系统吞吐量,增加程序的并发性
-
特点
- 是程序执行的最小单位,基本不拥有任何系统资源
-
实现方式
- 用户级线程
- 内核级线程
-
多线程模式
-
(1)多对一模型
- 将多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。此模式中,用户级线程对操作系统不可见。
-
(2)一对一模型
- 将每个用户级线程映射到一个内核线程。
-
(3)多对多模型
- 将n个用户级县城映射到m个内核级线程上,要求m<n
-
-
02处理机调度
-
调度概念
- 处理机调度是对处理机进行分配,即从就绪对垒中按照一定的算法(公平、高效)选择一个进程,并将处理机分配给它运行,以实现进程并发地执行
-
调度层次
-
作业调度(高级调度)
- 选择处于后被状态的作业分配资源,发生频率最低
-
内存调度(中级调度)
- 选择暂时不能运行的进程调出内存,发生频率中等
-
进程调度(低级调度)
- 选择就绪队列中合适的进程分配处理机,发生频率最高
-
-
进程调度原因
- 合理的处理计算机软硬件资源
-
进程调度方式
-
剥夺式(抢占式)
- 有更为重要或紧迫的进程需要使用处理机,立即分配
-
非剥夺式(非抢占式)
- 有更为重要或紧迫的进程需要使用处理机,仍让当前进程继续执行
-
-
典型调度算法
-
先来先服务
-
选择最先进入队列的
-
优点
- 公平,实现简单
-
缺点
- 不利于短作业
-
-
-
短作业优先
-
选择完成时间最短的
-
优点
- 平均等待时间最少,效率最高
-
缺点
- 长作业会饥饿,估计时间不易缺点
-
-
-
优先级调度
-
选择优先级别最高的
-
根据新的最高优先级进程能否抢占正在执行的进程
- 非剥夺式优先级调度算法
- 剥夺式优先级调度算法
-
根据进程创建后其优先级是否可以改变
-
静态优先级
- 优先级是在创建进程时确定的,且在进程的整个运行期间保持不变。
-
动态优先级
- 在进程运行过程中,根据进程情况的变化动态调整优先级。
-
-
-
-
高响应比优先
-
选择相应比最高的
-
优点
- 兼顾长短作业
-
缺点
- 计算响应比的开销大
-
-
-
时间片轮转
-
总是选择就绪队列中第一个进程,但仅能运行一个时间片
-
优点
- 兼顾长短作业
-
缺点
- 平均等待时间较长,上下文切换浪费时间
-
-
-
多级反馈队列
-
时间片轮转调度算法和优先级调度算法的综合和发展
-
优点
- 兼顾长短作业,有较好的响应时间,可执行性强
-
缺点
- 无
-
-
-
-
调度的基本准则
-
CPU利用率
-
系统的吞吐量
- 表示单位时间内CPU完成作业的数量。长作业需要消耗较长的处理机时间,因此会降低系统的吞吐量。而对于短作业,他们所需要消耗的处理及时间较短,因此能提高系统的吞吐量。
-
周转时间
- 周转时间是指从作业提交到作业完成所经历的时间,是作业等待、在就绪队列中排队、在处理机上运行及进行输入/输出操作所花费的时间总和
-
等待时间
- 等待时间指进程处于等处理机状态的时间之和,等待时间越长,用户满意度月底。
-
响应时间
- 响应时间指从用户提交请求到系统首次产生相应所用的时间
-
03进程同步
-
引入原因
- 协调进程之间的相互制约关系
-
制约关系
-
同步
- 需要在某些位置上协调进程之间的工作次序而等待、传递信息所产生的制约关系
-
互斥
- 当一个进程进入临界区使用临界资源时,其他要求“进入临界区”或“进区”必须等待
-
-
临界资源
- 一次仅允许一个进程使用的资源
-
临界区互斥
-
原则
- 空闲让进、忙则等待、有限等待、让权等待
-
基本方法
-
软件实现
-
单标志法
- 违背了“空闲让进”原则
-
双标标志法先检查
- 违背了“忙则等待”原则
-
双标标志法后检查
- 会导致“饥饿”现象
-
皮特森算法
- 单标志法和双标志法后检查的结合
-
-
硬件实现
-
中断屏蔽法
- 进区关中断,出区开中断
-
硬件指令法
- 设立原子操作指令
-
-
信号量
- 利用PV操作实现互斥
-
-
-
管程
-
定义
- 由一组数据以及定义在这组数据之上的对这组数据的操作组成的软件模块
-
组成
- 局部于莞城的共享结构数据说明
- 对该数据结构进行操作的一组过程
- 对局部于广成的共享数据设置初始值的语句
-
04死锁
-
定义
- 多个进程因竞争资源而造成的一种僵局(互相等带),若无外力作用,这些进程都将无法向前推进
-
产生原因
- 非剥夺式资源的竞争和进程的不恰当推进顺序
-
产生的必要条件
- 互斥条件
- 不剥夺条件
- 请求并保持条件
- 循环等待条件
-
解决方案
-
预防死锁
-
破坏互斥条件
- 有些资源必须互斥使用
-
破坏不剥夺条件
- 增加系统开销,降低吞吐量
-
破坏请求和保持条件
- 严重浪费系统资源,还可能导致饥饿现象
-
破坏循环等待条件
- 浪费系统资源,并造成编程不便
-
-
避免死锁
-
安全状态
- 能找到一个分配资源的序列能让所有进程都顺序完成
-
银行家算法
- 采用预分配
-
-
检测死锁
- 利用死锁定理化简资源分配图以检测死锁的存在
-
解除死锁
-
资源剥夺法
- 挂起某些死锁进程并抢夺它的资源,以便让其他进程继续推进
-
撤销进程法
- 强制撤销部分、甚至全部死锁进程并剥夺这些进程的资源
-
进程回退法
- 让一个或多个进程回退到足以回避死锁的地步
-
-
03内存管理
内存管理概念
-
01内存管理概念
-
概念
- 操作系统对内存的划分和动态分配,就是内存管理的概念。
-
内存管理的功能
-
内存空间的分配和回收
- 由操作系统完成主存储器空间的分配和管理。
-
地址的转换
- 在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。
-
内存空间的扩充
- 利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存。
-
存储保护
- 保证各道作业在各自的存储空间内运行,互不干扰。
-
-
01程序装入和链接
-
编译-由编译程序将用户源代码编译成若干目标模块
-
链接-由链接程序将编译后形成的一组目标模块及所需的库文件连接在一起,形成一个完整的装入模块
-
静态链接
- 装入前连接成一个完整装入模块
-
装入时动态链接
- 运行前装入边链接
-
运行时动态链接
- 运行时需要目标模块才装入并链接
-
-
装入-由装入程序将装入模块装入内存运行
-
绝对装入
- 编译时产生绝对地址
-
可重定位装入
- 装入时将逻辑地址转换为逻辑地址
-
动态运行时装入
- 运行时将逻辑地址转换为物理地址,需设置重定位寄存器
-
-
-
02逻辑地址空间与物理地址空间
-
逻辑地址空间
- 每个目标模块都从0号单元开始编址,这称为该目标模块的相对地址(逻辑地址)
-
物理地址空间
- 内存中物理单元的集合,它是地址转换的最终地址,进程在运行时执行指令和访问数据,最后都要通过物理地址从主存中存取。
-
地址重定向
- 当装入程序将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成物理地址,这个过程称为地址重定位。
-
三种方式
-
绝对装入
- 编译器负责地址转换(弹道程序阶段,无操作系统)
-
可重定位装入
- 装入程序负责地址转换(早期多道批处理阶段)
-
动态运行时装入
- 运行时才进行地址转换(现代操作系统)
-
-
-
03内存保护
- (1)在CPU中设置一对上、下限寄存器,存放用户作业在主存中的下限和上限地址,每当CPU要访问一个地址时,分别和两个寄存器的值相比,判断有无越界。
- (2)采用重定位寄存器(或基址寄存器)和界地址寄存器(限长寄存器)来实现这种保护。重定位寄存器含最小的物理地址值,界地址寄存器含逻辑地址的最大值。
-
-
02覆盖与交换
-
覆盖
-
一个固定区
- 存放最活跃的程序段
- 固定区中的程序段在运行过程中不会调入调出
-
若干覆盖区
- 不可能同时被访问程序段可共享一个覆盖区
- 覆盖区中的程序段在运行过程中会根据需要调入调出
-
必须由程序员声明覆盖结构,操作系统完成自动覆盖
-
缺点:对用户不透明,增加了用户编程负担
-
-
交换
- 内存紧张时,换出某些进程以腾出内存空间,再换入某些进程
- 磁盘分为文件区和对换区,换出的进程放在对换区
-
覆盖和交换的区别
- 覆盖是在同一程序或进程中的
- 交换是在不同进程(或作业之间的)
-
-
03连续分配管理
-
为用户进程分配的必须是一个连续的内存空间
-
单一连续分配
- 只支持单道程序,内存分为系统区和用户区,用户程序放在用户区
- 无外部碎片,有内部碎片
-
固定分区分配
-
支持多道程序,内存用户空间分为若干个固定大小的分区,每个分区只能装一道作业
-
无外部碎片,有内部碎片
-
两种分区方式
- 分区大小相等
- 分区大小不等
-
-
动态分区分配
-
支持多道程序,在进程装入内存时,根据进程的大小动态地建立分区
-
无内部碎片,有外部碎片
-
外部碎片可用"紧凑"技术来解决
-
回收内存分区时,可能遇到四种情况
- 回收区之后有相邻的空闲分区
- 回收区之前有相邻的空闲分区
- 回收区前、后都有相邻的空闲分区
- 回收区前、后都没有相邻的空闲分区
-
分区算法
-
首次适应算法
- 空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的第一个空闲分区。
-
最佳适应算法
- 空闲分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区。
-
最坏适应算法
- 空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,即挑选出最大的分区。
-
临近适应算法
- 由首次适应算法演变而成。不同之处是,分配内存时从上次查找结束的位置开始继续查找。
-
-
-
-
-
04非连续分配管理方式
-
基本分页存储管理
-
基本思想-把进程分页,各个页面可离散地放到各个地内存块中
-
易混概念
- “页框、页帧、内存块、物理块、物理页”VS“页、页面”
- “页框号、页帧号、内存块号、物理块号、物理页号”VS“页号、页面号”
-
页表
- 页表记录了页面和实际存放的内存块之间地映射关系
- 一个进程对应一张页表,进程的每一页对应一个页表项,每个页表项由“页号”和“块号”组成
- 每个页表项的大小是相同的,页号是“隐含”的
- i号页表项存放地址=页表始址+i*页表项大小
-
逻辑地址结构–可拆分为[页号p,页内偏移量w]
- 页号=逻辑地址/页面大小;页内偏移量=逻辑地址%页面大小
- 如果页面大小刚好是2的整数次幂
-
如何实现地址转换
- 1、计算出逻辑地址对应的[页号,页内偏移量]
- 2、找出对应页面在内存中的存放位置(查页表)
- 3、物理地址=页面始址+页内偏移量
-
-
段页式存储管理
- 在段页式系统中,作业的地址空间首先被分成若干逻辑段,每段都有自己的段号,然后将每段分成若干大小固定的页。
-
基本分段存储管理
- 将地址空间按照程序自身的逻辑关系划分为若干个段,每段从0开始编址
- 每个段在内存中占据连续空间,但每段之间可以不相邻
- 逻辑地址结构:(段号,段内地址)
-
虚拟内存管理
-
01虚拟内存的基本概念
-
传统存储管理方式的特征、缺点
-
一次性
- 作业数据必须一次全部调入内存
-
驻留性
- 作业数据在整个运行期间都会常驻内存
-
-
局部性原理
-
时间局部性
- 现在访问的指令、数据在不久后很可能会被再次访问
-
空间局部性
- 现在访问的内存单元周围的内存空间,很可能在不久后会被访问
-
高速缓存技术
- 使用频繁的数据放到更高速的存储器中
-
-
虚拟内存的定义和特征
-
程序不需要全部装入即可运行,运行时根据需要动态调入数据,若内存不够,还需换出一些数据
-
特征
-
多次行
- 无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存
-
对换性
- 无需再作业运行时一直常驻内存,而是允许在作业运行过程中,将作业换入,换出
-
虚拟性
- 从逻辑上扩充了内存的容量,使用户看到的内存容量,远大于实际的容量
-
-
-
如何实现虚拟内存技术
-
访问信息不在内存时,有操作系统负责将所需信息从外存调入内存(请求调页功能)
-
内存空间不够时,将内存中暂时用不到的信息换出到外村(页面置换功能)
-
虚拟内存的实现
- 请求分页存储管理
- 请求分段存储管理
- 请求段页式存储管理
-
-
-
02请求分页管理方式
-
页表机制
- 在基本分页的基础上增加了几个表项
- 状态位:表示页面是否已在内存中
- 访问字段:记录最近被访问过几次,或记录上次访问的时间,供置换算法选择换出页面时参考
- 修改位:表示页面调入内存后是否被修改过,只由修改过的页面才需在置换时写回外存
- 外存地址:页面在外存中存放的位置
-
缺页中断机构
- 找到页表项后检查页面是否已在内存,若没有内存,产生缺页中断
- 缺页中断处理中,需要将目标页面调入内存,有必要时还要换出页面
- 缺页中断属于内中断,属于内中断中的“故障”,即可能被系统修复的异常
- 一条指令在执行过程中可能产生多次缺页中断
-
地址变换机构(重点关注与基本分页不同的地方)
- 找到页表项是需要检查页面是否在内存中
- 若页面不在内存中,需要请求调页
- 若内存空间不够,还需换出页面
- 页面调入内存后,需要修改相应页表项
-
-
03页面置换算法
-
最佳置换算法(OPT)
-
优先淘汰最长时间内不会被访问的页面
-
优缺点
- 缺页率最小,性能最好;但无法实现
-
-
先进先出置换算法(FIFO)
-
优先淘汰最先进入内存的页面
-
优缺点
- 实现简单;但性能很差,可能出现Belady异常
-
-
最近最久未使用置换算法(LRU)
-
优先淘汰最近最久没访问的页面
-
优缺点
- 性能很好;但需要硬件支持,算法开销大
-
-
时钟置换算法(CLOCK)
-
循环扫描各页面
第一轮淘汰访问位=0的,并将扫描过的页面访问位改为1。若第一轮没选中,则进行第二轮扫描。 -
优缺点
- 实现简单,算法开销小,但未考虑页面是否被修改过
-
-
改进型的时钟置换算法
-
若用(访问位,修改位)的形式表述,则
第一轮:淘汰(0,0)
第二轮:淘汰(0,1),并将扫描过的页面访问位都置为0
第三轮:淘汰(0,0)
第四轮:淘汰(0,1) -
优缺点
- 算法开销较小,性能也不错
-
-
-
04页面分配策略
-
驻留集
- 指请求分页存储管理中给进程分配的内存块的集合
-
页面分配、置换策略
-
固定分配VS可变分配
- 区别在于进程运行期间驻留集大小是否可变
-
局部置换VS全局置换
- 区别在于发生缺页时是否只能从进程自己的页面中选择一个换出
-
固定分配局部置换
- 进程运行前就分配一定数量物理块,缺页时只能换出进程自己的某一页
-
可变分配全局置换
- 只要缺页就分配新的物理块,可能来自空闲物理块,也可能需换出别的进程页面
-
可变分配局部置换
- 频繁缺页的进程,多分配一些物理块;缺页率很低的进程,回收一些物理块,直到缺页率合适
-
-
何时调入页面
-
预调页策略
- 一般用于进程运行前
-
请求调页策略
- 进程运行时,发生缺页再调页
-
-
从何处调页
- 对换区-采用连续存储方式、速度更快;文件区-采用离散存储方式,速度更慢
- 对换区足够大:运行将数据从文件区复制到对换区,之后所有的页面调入、调出都是再内存和对换区之间进行
- 对换区不够大:不会修改的数据每次都从文件区调入;会修改的数据调出对换区,需要时再从对换区调入
- UNIX方式:第一次使用的页面都从文件区调入;调出的页面都写回对换区,再次使用时从对换区调入
-
抖动(颠簸)现象
- 页面频繁换入换出的现象。主要原因是分配给进程的物理块不够
-
工作集
- 在某段时间间隔里,进程实际访问页面的集合。驻留集大小一般不能小于工作集大小。
-
04文件系统
01文件系统管理
-
01初识文件管理
-
文件的定义
- 一组有意义的信息的集合
-
文件的属性
- 文件名、标识符、类型、位置、大小、保护信息
-
文件内部应该如何被组织起来(文件的逻辑结构)
-
文件之间应该如何被组织起来(目录结构)
-
操作系统应向上提供哪些功能(create、delete、open、close、read、write系统调用)
-
文件应如何存放在外存中(文件的物理结构)
-
操作系统如何管理外存中的空闲块(存储空间的管理操作系统需要提供)
-
操作系统需要提供的其他文件管理功能
- 文件共享
- 文件保护
-
-
02文件的逻辑结构
-
无结构文件
- 由二进制流或字符流组成,无明显的逻辑结构
-
有结构文件
-
由记录组成,分成定长记录、可变长记录
-
逻辑结构
-
顺序文件
-
串结构
- 记录顺序与关键字无关
-
顺序结构
- 记录按关键字顺序排列
-
可变长记录的顺序文件无法实现随机存取,定长记录可以
-
定长记录、顺序结构的顺序文件可以快速检索(根据关键字快速找到记录)
-
最大缺点:不方便增加/删除 记录
-
-
索引文件
- 建立一张索引表,每个记录对应一个表项。各记录不用保持顺序,方便增加/删除记录
- 索引表本身就是定长记录的顺序文件 一个索引表项就是一条定长记录,因此索引文件可支持随机存取
- 若索引表按关键字顺序排列,则可支持快速检索
- 解决了顺序文件不方便增/删记录的问题,同时让不定长记录的文件实现了随机存取。但索引表可能占用很多空间
-
索引顺序文件
- 将记录分组,每组对应一个索引表项
- 检索记录时先顺序查索引表,找到分组,再顺序查找分组
- 当记录过多时,可建立多级索引表
-
-
-
-
03文件目录
-
文件目录的实现
- 一个文件对应一个FCB,一个FCB就是一个目录项,多个FCB组成文件目录
- 对目录的操作:搜索、创建文件、删除文件、显示文件、修改文件
-
目录结构
-
单级目录结构
- 一个系统只有一张目录表,不允许文件重名
-
两级目录结构
- 不同用户的文件可以重名,但不能对文件进行分类
-
多级(树形)目录结构
- 不同目录下的文件可以崇明,可以对文件进行分类,不方便文件共享
- 系统根据“文件路径”找到目标文件
- 从根目录出发的路径是“绝对路径”
- 从“当前目录”出发的路径是“相对路径”
-
无环图目录结构
- 在树形目录结构的基础上,增加一些指向同一节点的有向边,使整个目录成为一个有向无环图
- 为共享节点设置一个共享计数器,计数器为0时才真正删除该结点
-
-
索引结点
- 除了文件名之外的所有信息都放在索引节点中,每个文件对应一个索引结点
- 目录项只包含文件名、索引节点指针,因此每个目录项的长度大幅减小
- 由于目录项长度减小,因此每个磁盘块可以存放更多个目录项,因此检索文件时磁盘I/O的次数就少了很多
-
-
04文件共享
-
硬链接
- 每个用户的目录指向同一个索引结点
- 索引结点中需要有链接计数count
- 某用户想删除文件时,只是删除该用户的目录项,且count–
- 只有count==0时才能真正删除文件数据和索引结点,否则会导致指针悬空
-
软链接(符号链接)
- 在一个link型的文件中记录共享文件的存放路径(windows快捷方式)
- 操作系统根据路径一层层查找目录,最终找到共享文件
- 即使软链接指向的共享文件已被删除,link型文件依然存在,只是通过link型文件中的路径去查找共享文件会失败(找不到对应目录项)
- 由于用软连接的方式访问共享文件时要查询多级目录,会有多次磁盘I/O,因此用软链接访问共享文件的速度要比硬链接更慢
-
-
05文件保护
-
口令保护
- 为文件设置一个“口令”,用户想要访问文件需要提供口令,由系统验证口令是否正确
- 实现开销小,但“口令”一般存放在FCB或索引结点中(也就是存放在系统中)因此不太安全
-
加密保护
- 用一个“密码”对文件加密,用户想要访问文件时,需要提供相同的“密码”才能正确的解密
- 安全性高,但加密/解密需要耗费一定的时间(异或加密)
-
访问 控制
- 用一个访问控制表(ACL)记录各个用户(或各组用户)对文件的访问权限
- 对文件的访问类型可以分为:读/写/执行/删除等
- 实现灵活,可以实现复杂的文件保护功能
-
02文件系统实现
-
01文件系统层次结构
-
0用户调用接口
- 文件系统为用户提供与文件及目录有关的调用,如新建、打开、读写、关闭、删除文件、建立、删除目录等
-
1文件目录系统
- 主要功能是管理文件目录,其任务有管理活跃文件目录表、管理读写状态信息表、管理用户进程等
-
2存取控制验证
- 实现文件保护主要由该级软件完成,它把用户的访问要求与FCP中指示的访问控制权限进行比较,以确定访问的合法性
-
3逻辑文件与文件信息缓冲区
- 根据文件的逻辑结构将用户要读写的逻辑记录转换成文件逻辑结构内的相应块号
-
4物理文件系统
- 物理文件系统的主要功能是把逻辑记录所在的相对块号转换成实际的物理地址
-
5辅助分配模块
- 管理辅存空间,即负责分配辅存空闲空间和回收辅存空间
-
6设备管理程序模块
- 分配设备、分配设备读写用缓冲区、磁盘调度、启动设备、处理设备中断、释放设备读写缓冲区、释放设备
-
-
02目录实现
-
1线性列表
- 无序:查找文件较慢,新建文件较快
- 有序:查找文件较快,新建文件较慢
- 优点:实现简单;缺点:比较费时
-
2哈希表
- 根据文件名得到一个值,并返回一个指向线性列表中元素的指针
- 查找非常迅速,插入和删除也较简单
-
-
03文件实现
-
连续分配
- 在磁盘上连续存放文件
-
连接分配
-
隐式
- 采用类似链表的结构
-
显式
- 把隐式文件中的指针单独抽离出来
-
-
索引分配
- 每个文件所有的盘块号都集中存放,建立索引表
-
-
04存储空间管理
-
空闲表
- 把所有空闲块组织成表
-
空闲链表法
- 把所有空闲块组织成链表
-
位示图
- 利用二进制的每位记录空闲块
-
成组链接
- 空闲表和空闲链表的结合,适合大的文件系统
-
03磁盘组织与 管理
-
01磁盘的结构
-
磁盘、磁道、扇区的概念
- 磁盘由表面涂有磁性物质的圆形盘片组成
- 每个盘片被划分为一个个磁道,每个磁道又划分为一个个扇区
-
如何在磁盘中读/写数据
- 磁头移动到目标位置,盘片旋转,对应扇区划过磁道才能完成读/写
-
盘面、柱面的概念
- 磁盘有多个盘片“摞”起来,每个盘片有两个盘面
- 所有盘面中相对位置相同的磁道组成柱面
-
磁盘的物理地址
- (柱面号,盘面号,扇区号)
-
磁盘的分类
-
根据磁头是否可移动
- 固定头磁盘(每个磁道有一个磁头)
- 移动头磁盘(每个盘面只有一个磁头)
-
根据盘片是否可更换
- 固定盘磁盘
- 可换盘磁盘
-
-
-
02磁盘调度算法
-
一次磁盘读/写操作需要的时间
-
寻找时间(寻道时间)
- 启动磁臂、移动磁头所花的时间
-
延迟时间
- 将目标扇区转到磁头下面所花的时间
-
传输时间
- 读/写 数据花费的时间
-
启动时间
- 控制器的启动时间
-
-
磁盘调度算法
-
先来先服务(FCFS)
- 按访问请求到达的先后顺序进行处理
-
最短寻找时间优先(SSTF)
- 每次都优先响应距离磁头最近的磁道访问请求
- 贪心算法的思想,能保证眼前最优,但无法保证总的寻道时间最短
- 缺点:可能导致饥饿
-
扫描算法(电梯算法、SCAN)
- 只有磁头移动到最边缘的磁道时才可以改变磁头移动方向
- 缺点:对各个位置磁道的响应频率不平均
-
循环扫描算法(C-SCAN)
- 只有磁头朝某个方向移动时才会响应请求,移动到边缘后立即让磁头返回起点,返回途中不响应任何请求
-
LOOK算法
- SCAN算法的改进,只要在磁头移动方向上不再有请求,就立即改变磁头的方向
-
C-LOOK算法
- C-SCAN算法的改进,只要在磁头移动方向上不再有请求,就立即让磁头返回
-
-
减少延迟时间的方法
-
交替编号
- 具体做法:让编号相邻的扇区在物理上不相邻
- 原理:读取完一个扇区后需要一段时间处理才可以继续读入下一个扇区
-
错位命名
- 具体做法:让相邻扇面的扇区编号“错位”
- 原理:与“交替编号”的原理相同。“错位命名法”可降低延迟时间
-
磁盘地址结构的设计
- 理解为什么要用(柱面号,盘面号,扇区号)的结构
- 理解为什么不用(扇面号,柱面号,扇区号)的结构
- 原因:在读取地址连续的磁盘块时,前者更不需要移动磁头
-
-
-
03磁盘的管理
-
初始化
- 对磁盘进行低级格式化和逻辑格式化
-
引导块
- 存放自举程序,初始化CPU、寄存器、设备控制器和内存等,接着启动操作系统
-
坏块
- 对于损坏扇区的处理
-
05输入/输出(I/O)管理
I/O管理
-
I/O设备的基本概念与分类
-
什么是I/O设备
- 将数据Input/output(输入/输出)计算机的外部设备
-
按使用特性分类
- 人机交互类外部设备
- 存储设备
- 网络通信设备
-
按传输速率分类
- 低速设备
- 中速设备
- 高速设备
-
按信息交换的单位分类
- 块设备(传输快,可寻址)
- 字符设备(传输慢,不可寻址,常采用中断驱动方式)
-
-
控制方式
-
程序直接控制
- 程序直接对设备循环测试
-
中断驱动
- 引入中断机制,当设备准备完成时发生中断
-
DMA
- 在I/O设备与内存之间开辟之间数据通路
-
通道控制
- 引入专门的I/O处理机进行管理
-
-
I/O子系统层次
-
用户层I/O软件
- 实现了用户交互的接口,用户可直接使用该层提供的,与I/O操作相关的库函数对设备进行操作
-
设备独立性软件
- 实现用户程序与设备驱动器的统一接口、设备命令、设备保以及设备分配与释放
-
设备驱动程序
- 与硬件直接关系,负责具体实现系统对设备发出的操作指令
-
中断处理程序
- 用于处理中断相关事项
-
硬件设备
- 包括一个机械部件(设备本身)和一个电子部件(控制器)
-
I/O核心子系统
-
I/O调度
- 确定一个好的顺序来执行这些I/O请求
-
磁盘高速缓存
- 1在内存中开辟一个单独的存储空间作为磁盘高速缓存
- 2把未使用的内存空间作为一个缓冲池,供请求分页系统和磁盘I/O分时共享
-
缓冲区管理
-
缓冲区的概念
- 一般利用内存作为缓冲区
- 缓解CPU与设备的速度矛盾、减少对CPU的中断频率、解决数据速度不匹配的问题,提高CPU与I/O设备之间的并行性
-
单缓冲
- 设备-(T)-缓冲区-(M)-工作区-(C)-处理
- 处理一块数据平均耗时Max(C,T)+M
- 分析问题的初始状态:工作区满,缓冲区空
-
双缓冲
- 处理一块数据平均耗时Max(T,C+M)
- 分析问题的初始状态:工作区空,一个缓冲区满,另一个缓冲区空
-
循环缓冲
- 多个缓冲区链接成循环队列,in指针指向第一个空缓冲区,cut指针指向第一个满缓冲区
-
缓冲池
-
三个队列:空缓冲队列、输入队列、输出队列
-
四种工作缓冲区
- 用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区
- 用于收容输出数据的工作缓冲区,用于提取输出数据工作缓冲区
-
-
-
设备的分配与回收
-
应考虑的因素
-
固有属性
- 独占设备、共享设备、虚拟设备
-
分配算法
- 先来先服务、优先级高者优先、短任务优先等
-
安全性
- 安全分配方式、不安全分配方式
-
-
静态分配与动态分配
-
静态分配
- 进程运行前为其分配全部所需资源,运行结束后归还资源
-
动态分配
- 进程运行过程中动态申请设备资源
-
-
设备分配管理中的数据结构
-
设备控制表(DCT)
- 每个设备对应一张DCT,关键字段:类型/标识符/状态/指向COCT的指针/等待队列指针
-
控制器控制表(COCT)
- 每个控制器对应一张COCT,关键字段:状态/指向CHCT的指针/等待队列指针
-
通道控制表(CHCT)
- 每个控制器对应一张CHCT,关键字段:状态/等待队列指针
-
系统设备表(SDT)
- 记录整个系统中所有设备的情况,每个设备对应一个表目,关键字段:设备类型/标识符/DCT/驱动程序入口
-
-
设备分配的步骤
- (1)根据进程请求的物理设备名查找SDT;
(2)根据SDT找到DCT并分配设备;
(3)根据DCT找到COCT并分配控制器
(4)根据COCT找到CHCT并分配通道 - 注:只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功,之后便可启动I/O设备进行数据传送
- 缺点:用户编程时必须使用“物理设备名”,若换一个物理设备,则程序无法运行。若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待。
- (1)根据进程请求的物理设备名查找SDT;
-
设备分配步骤的改进
-
用户编程时使用逻辑设备名申请设备,操作系统负责实现从逻辑设备名到物理设备名的映射(通过LUT)
-
逻辑设备表的设置问题
- 整个系统只有一张LUT:各用户所用的逻辑设备名不允许重复
- 每个用户一张LUT:各个用户的逻辑设备名可重复
-
-
百度网盘链接:
链接:https://pan.baidu.com/s/1MdU7KtNno1BuYNsIpMQsNg
提取码:ivsu
(需要请自取)