操作系统期末复习
1|0第一章 操作系统引论
1|1操作系统的目标和作用
-
目标
- 方便高效
-
作用
- 用户与计算机硬件系统之间的接口
- 计算机系统资源的管理者
- 实现对计算机资源的抽象
1|2操作系统的发展过程
- 1 无操作系统的计算机系统
- 2 单道批处理系统
- 3 多道批处理系统
- 4 分时系统
- 5 实时系统
- 6 微机操作系统
- 7 嵌入式操作系统
- 8 网络操作系统
- 9 分布式操作系统
1|3操作系统的基本特征
-
并发
-
并发vs并行
-
并行性
- 两个或多个事件在同一时刻发生
-
并发性
- 两个或多个事件在同一时间间隔内发生
-
-
引入进程(任务):动态、并发
-
-
共享
-
概念
- 系统中的资源可供内存中多个并发执行的进程共同使用
-
分类
- 互斥共享方式(临界资源)
- 同时访问方式
-
-
虚拟
-
时分复用技术
- 虚拟处理机
- 虚拟设备
-
空分复用技术
- 虚拟存储
-
-
异步
程是以人们不可预知的速度向前推进的
1|4操作系统的运行环境
-
硬件支持
-
内核
-
概念
- 常驻内存,通常与硬件紧密相关的部分
-
支撑功能
- 中断处理
- 时钟管理
- 原语操作
-
资源管理功能
- 进程管理
- 存储器管理
- 设备管理
-
-
处理机的双重工作模式
-
操作系统是中断驱动的
-
中断
- 由硬件引起
-
异常/陷阱
- 由软件引起
-
1|5操作系统的主要功能
-
处理机管理功能
- 进程控制
- 进程同步
- 进程通信
- 调度
-
存储器管理功能
- 内存分配和回收
- 内存保护
- 地址映射
- 内存扩充(虚拟存储技术)
-
设备管理功能
- 缓冲管理
- 设备分配
- 设备处理
-
文件管理功能
-
用户接口功能
1|6操作系统的结构设计
- 简单结构
- 模块化结构
- 分层式结构
- 微内核系统
- 外核结构
1|7系统调用
-
概念
- 应用程序请求OS内核完成某功能时的一种过程调用
- 用户与内核的接口
-
分类
- 进程控制类
- 进程通信类
- 文件操纵类
- 设备管理类
- 信息维护类
2|0第二章 进程的描述与控制
2|1前趋图和程序执行
2|2进程
-
进程的描述
-
定义
- 进程是进程实体的运行过程,是系统进行资源分配调度的一个独立单位
-
特征
- 动态性
- 并发性
- 独立性
- 异步性
-
进程 vs 程序
- 进程是程序的一个实例,
是程序的一次执行 - 进程是活动的,
程序是静态的 - 程序是进程的代码部分
- 进程在内存中,
程序在外存中
- 进程是程序的一个实例,
-
进程的状态及转换
-
进程控制块(PCB)
-
-
进程的控制
-
概念
- 进程管理最基本的功能,一般由OS内核中的原语实现
-
分类
-
进程创建
-
过程
- 申请空白PCB
- 分配所需资源
- 初始化PCB
- 插入就绪队列
-
引起事件
- 用户登录、作业调度、提供服务、应用请求
-
-
进程终止
-
引起事件
- 正常结束、异常结束、外界干预
-
过程
- 读进程
- 中止该进程,重新调度
- 中止子孙进程
- 归还资源
- 移出所在队列
-
-
进程阻塞与唤醒
-
引起事件
- 向系统请求共享资源失败;等待某种操作的完成;数据尚未到达;等待新任务的到达。
-
进程阻塞过程
- 阻塞原语Block()。 进程的阻塞是进程自身的一主动行为。
- 具体过程:停止执行;状态由执行改为阻塞;将PCB插入阻塞队列
-
进程唤醒过程
- 唤醒原语Wakeup()
- 具体过程:从阻塞队列中移出;状态由阻塞改为绪;将PCB插入就绪队列。
- 必须成对使用Block和Wakeup原语
-
-
进程挂起与激活
-
挂起
- Suspend()原语
-
激活
- Active()原语
-
-
-
-
进程通信
-
概念
- 进程通信是指进程之间的信息交换
-
分类
-
低级进程通信
- 示例:进程的同步和互斥
- 效率低,通信对用户不透明
-
高级进程通信
- 使用方便,高效地传送大量数据
-
-
类型
-
共享存储器系统
- 基于共享数据结构的通信方式(效率低)
- 基于共享存储区的通信方式(高级)
-
管道通信
- 用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件
- 管道机制的协调能力:互斥、同步、对方是否存在
-
消息传递系统
-
直接通信方式
- 发送原语:send(receiver, message)
- 接收原语:receive(sender, message)
-
间接通信方式(通过邮箱)
-
信箱结构
-
发送原语:send(mailbox, message)
-
接收原语:receive(mailbox, message)
-
信箱类型
- 私用邮箱
- 公共邮箱
- 共享邮箱
-
-
-
客户机-服务器系统
- 套接字(Socket)
- 远程过程调用(RPC)和远程方法调用(RMI,Java)
-
-
Linux进程通信方式
-
方式
- 管道
- 信号
- 消息队列
- 共享内存
- 信号量
- 套接字
-
-
2|3线程
-
线程的基本概念
-
进程 vs 线程
-
进程是拥有资源的基本单位
-
线程作为调度和分派的基本单位
-
调度的基本单位
- 在同一进程中,线程的切换不会引起进程切换,在一个进程中的线程切换到另一个进程中的线程时,将会引起进程切换
-
并发性
- 在引入线程的操作系统中,不仅进程之间可以并发行,而且在一个进程中的多个线程之间,也可并发执行
-
拥有资源
- 进程是系统中拥有资源的一个基本单位,它可以拥有资源
- 线程本身不拥有系统资源,仅有一点保证独立运行的资源
- 允许多个线程共享其隶属进程所拥有的资源
-
独立性
- 同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多
-
系统开销
- 在创建或撤消进程时OS所付出的开销将显著大于创建或撤消线程时的开销
- 线程切换的代价远低于进程切换的代价
- 同一进程中的多个线程之间的同步和通信也比进程的简单
-
支持多处理机系统
-
-
线程状态
- 执行态
- 就绪态
- 阻塞态
-
线程控制块TCB
-
-
线程的实现
-
内核支持线程KST
-
内核支持线程的实现(利用系统调用)
-
优点
- 在多处理机系统中,内核可同时调度同一进程的多个线程
- 如一个线程阻塞了,内核可调度其他线程(同一或其他进程)
- 线程的切换比较快,开销小
- 内核本身可采用多线程技术,提高执行速度和效率
-
缺点
- 对用户线程切换,开销较大
-
-
用户级线程ULT
-
用户级线程的实现(借助中间系统)
-
优点
- 线程切换不需要转换到内核空间
- 调度算法可以是进程专用的
- 线程的实现与OS平台无关
-
缺点
- 系统调用的阻塞问题
- 多线程应用不能利用多处理机进行多重处理的优点
-
-
组合方式
-
多对一模型
- 多个用户级线程映射到一个内核线程
-
一对一模型
- 每个用户级线程映射到一个内核线程
-
多对多模型
- 多个用户级线程映射为相等或小于数目的内核线程
-
-
3|0第三章 处理机调度与死锁
3|1处理机调度
-
概述
-
分类
-
高级调度(长程调度/作业调度)
- 调度对象:作业
- 主要用于多道批处理系统中
- 根据某种算法,决定将外存上处于后备队列中的作业调入内存,并为它们创建进程和分配必要的资源。然后,将新创建的进程排在就绪队列上等待调度。
-
低级调度(短程调度/进程调度)
- 调度对象:进程
- 根据某种调度算法,决定就绪队列中的哪个进程应获得处理机
- 应用在于多道批处理、分时和实时OS
-
中级调度(中程调度/内存调度)
- 即“对换” 功能
-
-
进程调度的任务和方式
-
进程调度的任务
- 保存处理机的现场信息
- 按某种算法选取进程
- 把处理器分配给进程
-
进程调度机制(调度程序分为三部分)
- 排队器:用于将就绪进程插入相应的就绪队列
- 分派器:用于将选定的进程移出就绪队列
- 上下文切换器:进行新旧进程之间的上下文切换
-
进程调度的方式
-
非抢占方式
-
抢占方式
-
允许调度程序根据某种原则,去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。(现代OS广泛采用)
-
三种原则
- 优先权原则:允许优先权高的新到进程抢占当前进程的处理机
- 短作业优先原则:短作业可以抢占当前较长作业的处理机
- 时间片原则:各进程按时间片运行,当一个时间片用完后,便停止该进程的执行而重新进行调度
-
-
-
评价指标
-
周转时间
-
定义
- 从作业提交给系统开始,到作业完成为止的这段时间隔
-
平均周转时间
-
带权周转时间
- 权值为作业周转时间T与系统为之服务时间TS之比
-
-
响应时间
- 从用户通过键盘提交请求开始,直到系统首次显示出处理结果为止的一段时间。
-
等待时间
- 进程在就绪队列中等待调度的所有时间之和
-
-
-
-
作业调度算法
-
先来先服务调度算法(FCFS)
-
短作业优先调度算法(SJF)
-
优先级调度算法(PR)
-
高响应比优先调度算法(HRRN)
-
时间片轮转(RR)调度算法
-
多级队列调度算法
-
多级反馈队列调度算法
-
基于公平原则的调度算法
-
-
实时调度
-
实时调度是针对实时任务的调度
-
实时任务,都联系着一个截止时间
- 硬实时HRT任务
- 软实时SRT任务
-
实时调度应具备一定的条件
-
-
实现实时调度的基本条件
-
- 提供必要的信息
-
- 系统处理能力强
-
- 采用抢占式调度机制
-
- 采用快速切换机制
-
-
实时调度算法分类
-
根据实时任务性质
- HRT调度算法
- SRT调度算法
-
根据调度方式
-
非抢占式调度算法
- 非抢占式轮转调度算法
- 非抢占式优先调度算法
-
抢占式调度算法
- 基于时钟中断的抢占式优先级调度
- 立即抢占的优先级调度
-
-
-
最早截止时间优先(EDF)调度算法
-
最低松弛度优先LLF算法
-
优先级倒置
-
采用优先级调度和抢占方式,可能产生优先级倒置。现象:高优先级进程被低优先级进程延迟或阻塞。
-
解决方法
- 制定一些规定,如规定低优先级进程执行后,其所占用的处理机不允许被抢占
- 建立动态优先级继承
-
-
-
Linux进程调度
3|2死锁
-
概述
-
概念
- 一组等待的进程,其中每一个进程都持有资源,并且等待着由
这个组中其他进程所持有的资源
- 一组等待的进程,其中每一个进程都持有资源,并且等待着由
-
资源问题
-
可抢占性和不可抢占性资源
- 可抢占性资源:某进程在获得这类资源后,该资源可以再被其他进程或系统抢占,CPU(处理机)和主存区
- 不可抢占资源:当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自行释放,打印机、磁带机
-
可重用性资源和可消耗性资源
- 可重用性资源:一次只能分配给一个进程,不允许多个进程共享
- 可消耗性资源:由进程动态创建和消耗
-
-
死锁原因
-
必要条件
-
互斥
- 一段时间内某资源只能被一个进程占用
-
请求和保持
- 一个至少持有一个资源的进程等待获得外的由其他进程所持有的资源
-
不可抢占
- 一个资源只有当持有它的进程完成任务后,自由的释放
-
循环等待
- 等待资源的进程之间存在环
-
-
处理死锁的方法
-
确保系统永远不会进入死锁状态
-
死锁预防
- 破坏死锁的四个必要条件中一个或几个
-
死锁避免
- 在资源动态分配时,防止系统进入不安全状态
-
-
允许系统进入死锁状态,然后恢复系统
-
死锁检测
- 事先不采取任何措施,允许死锁发生,但及时检测死锁发发生
-
死锁恢复
- 检测到死锁发生时,采取相应措施,将进程从死锁状态中解脱出来
-
-
忽略这个问题,假装系统中从未出现过死锁。这个方法被大部分的操作系统采用,包括UNIX
-
-
-
预防死锁
-
破坏死锁的四个必要条件中的一个或几个
-
互斥
- 互斥条件是共享资源必须的,不仅不能改变,还应加以保证
-
请求和保持
- 要求进程在执行前一次性申请全部的资源,只有没占有资源时才可以分配资源
- 改进:进程只获得运行初期所需的资源后,便开始运行;其后在运行过程中逐步释放已分配的且用毕的全部资源,然后再请求新资源
- 资源利用率低,可能出现饥饿
-
非抢占
- 如果一个进程的申请没有实现,它要释放所有占有的资源
- 先占的资源放入进程等待资源列表中
- 进程在重新得到旧的资源的时候可以重新开始
-
循环等待
- 对所有的资源类型排序进行线性排序,并赋予不同的序号,要求进程按照递增顺序申请资源
- 如何规定每种资源的序号是十分重要的
- 限制新类型设备的增加
- 作业使用资源的顺序与系统规定的顺序不同
- 限制用户简单、自主的编程
-
-
避免死锁
-
死锁避免算法
-
动态检查资源分配状态以确保不会出现循环等待的情况
-
安全状态
- 当进程申请一个有效的资源的时候,系统必须确定分配后是安全的
- 如果存在一个安全序列,则系统处于安全态
- 进程序列<P1, P2, …, Pn>是安全的,如果每一个进程Pi所申请的可以被满足的资源数加上其他进程所持有的该资源数小于系统总数
- 死锁避免 => 确保系统永远不会进入不安全状态
-
-
银行家算法
-
系统模型
-
-
死锁的检测与解除
4|0第四章 进程同步
4|1进程同步基本概念
-
主要任务
- 使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性
-
互斥与同步
-
间接相互制约关系(互斥关系)
- 进程互斥使用临界资源
-
直接相互制约关系(同步关系)
- 进程间相互合作
-
-
临界区问题
4|2进程同步机制
-
软件同步机制
-
硬件同步机制
-
信号量机制
-
信号量机制介绍
-
一种有效的进程同步机制,已被广泛应用
-
过程
- 保证两个或多个代码段不被并发调用
- 在进入关键代码段前,进程必须获取一个信号量,否则不能运行
- 执行完该关键代码段,必须释放信号量
- 信号量有值,为正说明它空闲,为负说明其忙碌
-
分类
-
整型信号量
-
记录型信号量
-
AND型信号量
- 将进程在整个运行过程中需要的所有资源,一次性全部分配给进程,待进程使用完后再一起释放
-
信号量集
-
-
-
信号量的应用
-
-
管程机制
-
新的进程同步机制
-
信号量的问题
- 需要程序员实现,编程困难
- 维护困难
- 容易出错
-
信号量vs管程
- 信号量:分散式
- 管程:集中式
-
定义
-
一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据
-
-
功能
- 互斥
- 同步
-
条件变量问题
- 管程内可能存在不止1个进程
-
4|3经典的进程同步问题
-
生产者-消费者问题
-
哲学家进餐问题
-
写者-读者问题
4|4信号量的总结
-
信号量的使用
- 信号量必须置一次且只能置一次初值,初值不能为负数
- 除了初始化,只能通过执行P、V操作来访问信号量
-
使用中存在的问题
-
死锁
- 两个或多个进程无限期地等待一个事件的发生,而该事件正是由其中的一个等待进程引起的
-
饥饿
- 无限期地阻塞,进程可能永远无法从它等待的信号量队列中移去(只涉及一个进程)
-
-
互斥分析基本方法
- 查找临界资源
- 划分临界区
- 定义互斥信号量并赋初值
- 在临界区前的进入区加wait操作;退出区加signal操作
-
同步分析
- 找出需要同步的代码片段(关键代码)
- 分析这些代码片段的执行次序
- 增加同步信号量并赋初始值
- 在关键代码前后加wait和signal操作
-
信号量的物理含义
- 信号量的初值应该大于等于0
- S>0表示有S个资源可用
- S=0表示无资源可用
- S<0则| S |表示S等待队列中的进程个数
- P(S):表示申请一个资源
- V(S)表示释放一个资源
-
PV操作的使用
- P.V操作必须成对出现,有一个P操作就一定有一个V操作
- 当为互斥操作时,它们同处于同一进程
- 当为同步操作时,则不在同一进程中出现
- 如果P(S1)和P(S2)两个操作在一起,那么P操作的顺序至关重要,一个同步P操作与一个互斥P操作在一起时同步P操作在互斥P操作前,而两个V操作无关紧要
-
缺点
- 同步操作分散
- 不利于修改和维护
- 易读性差
- 正确性难以保证
4|5Linux进程同步机制
-
同步方法
- 原子操作
- 自旋锁
- 信号量
- 互斥锁
- 禁止中断
5|0第五章 存储器管理
5|1存储器的层次结构
-
- 可执行存储器:寄存器和主存储器
- 主存储器:内存或主存
- 高速缓存:介于寄存器和存储器之间
-
层次越高,访问速度越快,价格也越高,存储容量也最小
-
寄存器和主存掉电后存储的信息不再存在,辅存的信息长期保存
5|2程序的装入与链接
-
程序的运行过程
- 编译
- 链接
- 装入
-
地址绑定和内存保护
-
逻辑地址
- 由CPU产生的地址,即程序编译后使用的相对于0字节的地址
-
物理地址
- 物理内存的地址,内存以字节为单位编址
-
内存保护
-
目的
- 保护OS不被用户访问
- 保护用户进程不会相互影响
-
实现:硬件
-
基地址寄存器
- 保存最小的合法物理内存地址(基地址)
-
界限寄存器
- 保存合法的地址范围大小(界限地址)
-
判断“基地址≤物理地址<(基地址+界限地址)”是否成立
-
-
-
-
程序的装入
-
三种装入方式
-
绝对装入方式
- 编译时产生的地址使用绝对地址
- 程序或数据被修改时,需要重新编译程序
-
可重定位装入方式
- 编译后的目标模块使用相对地址
- 在装入时,完成重定位(静态重定位)
- 需硬件支持
-
动态运行时装入方式
- 编译后的目标模块使用相对地址
- 在运行时,完成重定位(动态重定位)
-
-
-
程序的链接
-
三种链接方式
-
静态链接
- 在程序运行前,将各目标模块及它们所需的库函数链接成一个完整的装配模块,以后不再拆开
-
装入时动态链接
- 在装入内存时,采用边装入边链接的链接方式
-
运行时动态链接
- 将某些目标模块的链接推迟到执行时才执行。即在执行过程中,若发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将它装入内存,并把它链接到调用者模块上
-
-
5|3对换与覆盖
-
对换
-
概念
- 把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需的程序或数据,调入内存
- 对换是提高内存利用率的有效措施,广泛应用于OS中(时间换空间
-
对换的类型
-
整体对换
-
概念
- 对换以整个进程为单位,也称为进程对换
- 被广泛应用于多道程序系统,并作为处理机中级调度
-
必须能实现三方面的功能
- 对换空间的管理
- 进程的换出
- 进程的换入
-
-
页面(分段)对换
-
概念
- 对换是以“页”或“段”为单位进行的,又统称为“部分对换”
- 目的是为了支持虚拟存储系统
-
-
-
对换区的管理
-
主要目标
- 提高进程换入和换出的速度
- 提高文件存储空间的利用率次之
- 应采用连续分配方式,很少考虑碎片问题
-
盘块管理中的数据结构
- 用于记录外存对换区中的空闲盘块的使用情况
- 与动态分区分配方式相似
- 空闲分区表/空闲分区链:包含对换区首址及大小
-
对换区的分配与回收
- 与动态分区方式的内存分配与回收方法相似
-
-
-
覆盖
-
解决问题
- 程序大小超过物理内存总和
-
程序执行时
- 只在内存中保留那些在任何时间都需要的指令和数据
- 程序的不同部分在内存中相互替换
-
由程序员声明覆盖结构,不需要操作系统的特别支持
-
覆盖结构的程序设计很复杂
-
应用于早期的操作系统
-
5|4连续分配存储管理
-
连续分配概念
- 为一个用户程序分配一个连续的内存空间
-
单一连续分配
-
内存
- 系统区:供OS使用、低址部分
- 用户区:供用户使用
-
分配方式
-
单道程序环境下,仅装有一道用户程序,即整个内存的用户空间由该程序独占。
-
优缺点
-
内存分配管理十分简单,内存利用率低
-
用于单用户、单任务OS
-
未采取存储器保护措施
- 节省硬件
- 方案可行
-
-
-
-
固定分区分配
-
可变分区分配
-
概念
-
又称为可变分区分配,根据进程的实际需要,动态地为之分配内存空间。
-
数据结构
-
分配算法
-
顺序式分配算法
-
依次搜索空闲分区链上的空闲分区,寻找一个其大小能够满足要求的分区
-
分类
-
首次适应算法
- 空闲分区链以地址递增的次序链接
- 从链首开始顺序查找,直到找到一个大小能满足要求的空闲分区为止
- 缺点:低址部分留下许多小碎片
-
循环首次适应算法
- 从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲分区
- 空闲分区分布更均匀,减少了查找的开销
- 缺乏大的空闲分区
-
最佳适应算法
- 搜索整个序列,找到适合条件的最小的分区进行分配
- 空闲分区按其容量从小到大的顺序链接
- 但留下许多难以利用的小碎片
-
最坏适应算法
- 搜索整个序列,寻找最大的分区进行分配
- 空闲分区按其容量从大到小的顺序链接
- 分割后空闲块仍为较大空块;缺乏大的空闲分区
-
-
-
索引式分配算法
-
提高搜索空闲分区的速度,在大、中型系统中采用
-
分类
-
快速适应算法
- 将空闲分区按其容量大小进行分类,具有相同容量的所有空闲分区设有一个空闲分区链表
- 系统设有一张管理索引表,每一项对应一个空闲分区类型
- 分配时,根据进程长度,从索引表中寻找到能容纳它的最小空闲分区链表;从链表中取下第一块进行分配
- 优点:不分割分区,不产生碎片,查找效率高
- 缺点:分区归还主存时算法复杂,系统开销较大,存在浪费
-
伙伴系统
-
哈希算法
- 建立哈希函数,构造一张以空闲分区大小为关键字的哈希表,该表的每一个表项对应于一个空闲分区链表的头指针
- 进行分配时,根据空闲区大小,通过计算哈希函数,得到在哈希表中的位置,找到对应的空闲分区链表
- 优点:查找快速!
-
-
-
-
分配操作
-
优缺点
- 无内碎片
- 并发进程数量不限制
- 存在外碎片,浪费
-
-
动态分区分配
-
动态重定位分区分配
-
连续分配方式存在的问题
- 碎片:不能被利用的小分区
- 解决方案:紧凑,要求代码和数据可以在内存中移动
- 紧凑:通过移动内存中的作业位置,以把原来多个分散的小分区拼接成一个大分区的方法,也叫“拼接
-
动态重定位
- 在指令运行时,实现地址转换(相对地址转换为绝对地址)
-
分配算法
- 类似于动态分区分配算法,增加了紧凑的功能
-
-
5|5离散分配存储管理方式
-
分页式存储管理方式
-
基本概念
-
物理块(frame)
- 把物理内存分成大小固定的块
- 大小为2的幂,通常为1KB~8KB
-
页(page)
- 把逻辑内存也分成固定大小的块
-
运行一个有N页大小的程序,需要找到N个空的页框来装入程序
-
页内碎片
- 进程最后一页经常装不满,而形成不可利用的碎片
-
地址结构
-
页表
-
-
基本的地址变换机构
-
具有快表的地址变换机构
-
有效访问时间EAT
-
页表结构
-
-
分段式存储管理方式
-
目的
- 为了满足用户(程序员)在编程和使用上多方面的要求
-
优点
- 方便编程
- 信息共享
- 信息保护
- 动态链接
- 动态增长
-
基本概念
-
分页 vs 分段
-
信息共享
- 分段的一个突出优点
- 允许若干个进程共享一个或多个分段
- 比分页式实现共享方便
- 可重入代码
-
-
段页式存储管理方式
6|0第六章 虚拟存储器
6|1虚拟存储器概述
-
局部性原理
-
时间局部性
- 一条指令被执行了,则在不久的将来它可能再被执行
-
空间局部性
- 若某一存储单元被使用,则在一定时间内,与该存储单元相邻的单元可能被使用
-
-
定义与特性
-
定义
- 具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统
-
特性
- 多次性
- 对换性
- 虚拟性
-
-
实现方法
-
请求分页系统
- 硬件支持:页表、缺页中断、地址变换机构
- 软件支持:请求调页软件、页面置换软件
-
请求分段系统
- 硬件支持:段表、缺段中断、地址变换机构
- 软件支持:请求调段软件、段置换软件
-
段页式虚拟存储器
- 增加请求调页和页面置换
-
6|2请求分页式存储管理方式
-
请求分页存储管理
-
页面置换算法
-
最佳置换算法(OPT)
-
先进先出置换算法(FIFO)
-
最近最久未使用置换算法(LRU)
-
最少使用算法(LFU)
-
Clock置换算法
-
简单的Clock算法
- 每个页都与一个访问位相关联,初始值位0
- 当页被访问时置访问位为1
- 置换时选择访问位为0的页 ;若为1,重新置为0
- 最多扫描两轮
-
改进的时钟置换算法
-
淘汰时,同时检查访问位A与修改位M
-
第1类(A=0,M=0)
- 表示该页最近既未被访问、又未被修改,是最佳淘汰页。
-
第2类(A=0,M=1)
- 表示该页最近未被访问,但已被修改,并不是很好的淘汰页
-
第3类(A=1,M=0)
- 表示该页最近已被访问,但未被修改,该页有可能再被访问
-
第4类(A=1,M=1)
- 表示该页最近已被访问且被修改,该页有可能再被访问
-
置换时,循环依次查找第1类,并将访问位置0、第2类页,找到为止
-
最多扫描四轮
-
-
-
页面缓冲算法
-
-
页面分配策略
-
驻留集
-
指请求分页存储管理中给进程分配的物理块的集合
-
一般小于进程的总大小
-
如果太小
- 缺页频繁
-
如果太大
- 多道程序并发度下降,资源利率降低
-
固定和可变分配
-
固定分配
- 驻留集大小不变
-
可变分配
- 驻留集大小可变
-
-
局部和全局置换
-
局部置换
- 发生缺页时只能选进程中间的物理块进行置换
-
全局置换
- 可将操作系统保留的空闲物理块分配给缺页进程,也可将别的进程持有的物理块置换到外村,再分配给缺页进程
-
-
-
页面分配、置换策略
-
固定分配局部置换
- 为每个进程分配一固定页数的内存空间,在整个运行期间都不再改变。如果进程在运行中发现缺页,则只能从该进程在内存的固定页面中选出一页换出,然后再调入另一页,保证分配给该进程的内存空间不变
-
可变分配局部置换
- 为每个进程分配一定数目的内存空间;但当某进程发生缺页时,只允许从该进程所在内存的页面中选出一页换出,而不影响其它进程的运行。
- OS不断评估该进程的分配情况,增加或减少分配给它的物理块,以提高整体性能
-
可变分配全局置换
- 系统为每个进程分配一定数目的物理块,OS本身也保持一个空闲物理块队列。
- 当某进程发现缺页时,系统从空闲物理块队列中,取出一物理块分配给该进程,并将欲调入的缺页装入其中。一个发生缺页的进程所拥有的内存物理块数量会逐渐增大。
- 仅当空闲物理块队列中的物理块用完时,OS才能从内存中选择一页调出,该页可能是系统中任一进程的页。
-
-
调入页面的时机
-
预调页策略
- 预先调入一些页面到内存
-
请求调页策略
- 发现需要访问的页面不在内存时,调入内存
-
-
从何处调页
-
-
“抖动”与工作集
-
抖动(Thrashing)
-
一个进程的页面经常换入换出
-
原因
- 分配给进程的物理块不够
-
-
工作集
- 指在某段时间间隔里进程实际要访问页面的集合
- 一般驻留集的大小不能小于工作集的大小
-
6|3请求分段式管理方式
-
硬件支持
-
分段的共享
-
分段保护
- 越界检查
- 存取控制检查
- 环保护机构
7|0第七章 输出/输出系统
7|1I/O系统的功能与概念
-
I/O系统的基本功能
- 能够隐藏物理设备的细节
- 能够保证OS与设备无关
- 能够提高处理机和I/O设备的利用率
- 能够对I/O设备进行控制①轮询 ②中断 ③直接存储器访问DMA ④I/O通道
- 能够确保对设备的正确共享
- 能够处理错误
-
I/O系统的功能,模型和接口
-
I/O系统管理的对象是I/O设备和相应的设备控制器。
-
I/O系统的基本功能
- 隐藏物理设备的细节
- 与设备的无关性
- 提高处理机和I/O设备的利用率
- 对I/O设备进行控制
- 确保对设备的正确共享
- 错误处理
-
I/O软件的层次结构
- 用户层I/O软件
- 设备独立性软件
- 设备驱动程序(厂家开发)
- 中断处理程序
- 硬件
-
I/O系统的分层
- 中断处理程序
- 设备驱动程序
- 设备独立性软件
-
I/O系统接口
-
块设备接口
-
指以数据块为单位来组织和传送数据信息的设备
-
典型的块设备是磁盘、光盘
-
块设备的基本特征
- ①传输速率较高,通常每秒钟为几兆位;
- ②它是可寻址的,即可随机地读/写任意一块;
- ③磁盘设备的I/O采用DMA方式。
-
-
流设备接口
-
又称字符设备指以单个字符为单位来传送数据信息的设备
-
这类设备一般用于数据的输入和输出,有交互式终端、打印机
-
字符设备的基本特征
- ①传输速率较低;
- ②不可寻址,即不能指定输入时的源地址或输出时的目标地址;
- ③字符设备的I/O常采用中断驱动方式。
-
-
网络通信接口
- 提供网络接入功能,使计算机能通过网络与其他计算机进行通信或上网浏览。
-
-
7|2I/O设备和设备控制器
-
分类
-
使用特性分
- 存储设备
- I/O设备
-
传输速率分
-
低速设备(几字节——几百字节)
- 典型的设备有键盘、鼠标、语音的输入
-
中速设备(数千——数万字节)
- 典型的设备有行式打印机、激光打印机
-
高速设备(数十万——千兆字节)
- 典型的设备有磁带机、磁盘机、光盘机
-
-
-
设备并不是直接与CPU进行通信,而是与设备控制器通信。在设备与设备控制器之间应该有一个接口。
-
数据信号:控制器 ← 设备 ← 控制器
- 传送数据信号,输入、输出bit
-
控制信号: 控制器 → 设备
- 执行读、写操作的信号
-
状态信号:设备当前使用状态
-
-
设备控制器
-
主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换
-
基本功能
-
接收和识别命令
- 控制寄存器、命令译码器
-
数据交换
- 实现CPU与控制器,控制器与设备间的数据交换
-
标识和报告设备的状态
-
地址识别
- 配置地址译码器,识别不同的设备
-
数据缓冲区
-
差错控制
-
-
设备控制器的组成
-
设备控制器与处理机(CPU)的接口
- 实现CPU与设备控制器之间的通信
-
设备控制器与设备的接口
- 控制器可连接多个设备
-
I/O逻辑
- 实现对设备的控制
- CPU利用该逻辑向控制器发送I/O命令
- 命令、地址译码
-
-
-
内存映像I/O
- 驱动程序将抽象I/O命令转换出的一系列具体的命令,参数等数据装入设备控制器的相应寄存器,由控制器来执行这些命令,具体实施对I/O设备的操作
-
I/O通道
-
目的:建立独立的I/O操作(组织, 管理和结束),使由CPU处理的I/O工作转由通道完成(解放CPU,实现并行)
-
什么是I/O通道?
- 是一种特殊的处理机,具有通过执行通道程序完成I/O操作的指令
- 特点:指令单一(局限于与I/O操作相关的指令),与CPU共享内存
-
基本过程:
- CPU向通道发出I/O指令->通道接收指令->从内存取出通道程序处理I/O->向CPU发出中断
-
通道类型
-
字节多路通道
- 低中速连接子通道时间片轮转方式共享主通道
- 字节多路通道不适于连接高速设备,这推动了按数组方式进行数据传送的数组选择通道的形成。
-
数组选择通道
- 这种通道可以连接多台高速设备,但只含有一个分配型子通道,在一段时间内只能执行一道通道程序, 控制一台设备进行数据传送, 直至该设备传送完毕释放该通道。这种通道的利用率很低。
-
数组多路通道
- 含有多个非分配型子通道,前两种通道的组合,通道利用率较好
-
-
瓶颈问题
- 原因;通道不足
- 解决办法:增加设备到主机间的通路,而不增加通道(结果类似RS触发器)
-
7|3I/O软件
-
中断机构和中断处理程序
-
中断
-
分类
-
中断(外部触发)
- 对外部I/O设备发出的中断信号的响应
-
陷入(内部原因:除0)
- 由CPU内部事件引起的中断
-
-
中断向量表(类比51单片机)
- 中断程序的入口地址表
-
中断优先级
- 对紧急程度不同的中断处理方式
-
对多中断源的处理方式
- 屏蔽中断
- 嵌套中断
-
-
中断处理程序
- 测定是否有未响应的中断信号
- 保护被中断进程的CPU环境
- 转入相应的设备处理程序
- 中断处理
- 恢复CPU 的现场并退出中断
-
-
设备驱动程序
-
是I/O进程与设备控制器之间的通信程序,又由于它常以进程的形式存在,故以后就简称为设备驱动进程
-
主要任务是接受来自它上一层的与设备无关软件的抽象请求,并执行这个请求。
-
功能
-
- 接收由I/O进程发来的命令和参数, 并将命令中的抽象要求转换为具体要求。例如,将磁盘块号转换为磁盘的盘面、 磁道号及扇区号。
-
- 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。
-
- 发出I/O命令,如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。
-
- 及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。
-
- 对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。
-
-
设备驱动程序的处理过程
- 将用户和上层软件对设备控制的抽象要求转换成对设备的具体要求,如对抽象要求的盘块号转换为磁盘的盘面、磁道及扇区。
- 检查I/O请求的合理性。
- 读出和检查设备的状态,确保设备处于就绪态。
- 传送必要的参数,如传送的字节数,数据在主存的首址等。
- 工作方式的设置。
- 启动I/O设备,并检查启动是否成功,如成功则将控制返回给I/O控制系统,在I/O设备忙于传送数据时,该用户进程把自己阻塞,直至中断到来才将它唤醒,而CPU可干别的事。
-
对I/O设备的控制方式
-
I/O控制的宗旨
- 减少CPU对I/O控制的干预
- 充分利用CPU完成数据处理工作
-
I/O 控制方式
- 轮询的可编程I/O方式
- 中断驱动I/O方式
- DMA控制方式
- I/O通道控制方式
-
-
DMA控制器组成
- 主机与DMA控制器的接口
- DMA控制器与块设备的接口
- I/O控制逻辑
-
-
与设备无关的I/O软件
-
基本概念
-
含义: 应用程序独立于具体使用的物理设备。
-
驱动程序是一个与硬件(或设备)紧密相关的软件。为实现设备独立性,须在驱动程序上设置一层软件,称为设备独立性软件。
-
设备独立性(Device Independence)的优点
- 以物理设备名使用设备
- 引入了逻辑设备名
- 逻辑设备名称到物理设备名称的转换(易于实现I/O重定向)
-
-
与设备无关的软件
- 设备驱动程序的统一接口
- 缓存管理
- 差错控制
- 对独立设备的分配与回收
- 独立于设备的逻辑数据块
-
设备分配中的数据结构
-
-
用户层的I/O软件
-
系统调用与库函数
- OS向用户提供的所有功能,用户进程都必须通过系统调用来获取
- 在C语言以及UNIX系统中,系统调用(如read)与各系统调用所使用的库函数(如read)之间几乎是一一对应的。而微软的叫Win32API
-
假脱机系统(spooling)
-
7|4中断机构和中断处理程序
-
中断
-
分类
-
中断(外部触发)
- 对外部I/O设备发出的中断信号的响应
-
陷入(内部原因:除0)
- 由CPU内部事件引起的中断
-
-
中断向量表(类比51单片机)
- 中断程序的入口地址表
-
中断优先级
- 对紧急程度不同的中断处理方式
-
对多中断源的处理方式
- 屏蔽中断
- 嵌套中断
-
-
中断处理程序
- 测定是否有未响应的中断信号
- 保护被中断进程的CPU环境
- 转入相应的设备处理程序
- 中断处理
- 恢复CPU 的现场并退出中断
7|5磁盘存储器的性能和调度
-
磁盘的类型
- 固定头磁盘(贵)
- 移动头磁盘
-
磁盘访问的时间(关键)
- 寻道时间Ts=m*n+s
- 旋转延迟时间Tr
- 传输时间Tt=b/rN
- 总时间Ta=Ts+1/2r+b/rN
-
磁盘的调度算法(掌握图表)
-
先来先服务(FCFS)
- 优点:公平,简单
- 缺点:可能导致某些进程的请求长期得不到满足
-
最短寻道时间优先(SSTF)
- 说明:要求访问的磁道和当前磁头所在的磁道距离最近,以使每次的寻道时间最短
-
扫描算法(SCAN)
- 扫描算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁道当前的移动方向
- 联想电梯的运行
- 可防止低优先级进程出现“饥饿”的现象
-
循环扫描算法(CSCAN)
- 算法规定磁头单向移动,例如,只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描
-
NStepScan算法
- N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次这些子队列。
-
FSCAN算法
-
8|0第八章 文件管理
8|1数据项
- 基本数据项
- 组合数据项
8|2记录
- 记录是一组相关数据项的集合,用于描述一个对象在某个方面的属性
8|3文件
8|4文件操作
8|5文件的逻辑结构
8|6文件目录
-
文件控制块(FCB)
- 文件名+inode(属性)
-
简单的文件目录
-
单级文件目录
- 查找慢
- 不允许重名
- 不便于实现文件共享
-
两级文件目录
- 提高检索速度,从M*N到M+N
-
-
树形结构目录
-
路径名
- “..”是父目录
- “/”是根目录
- 区别绝对路径和相对路径(../.../.../1/2/3/)
-
8|7文件共享
8|8文件保护
9|0第九章 磁盘存储器系统
9|1外存的组织方式
-
连续组织方式
-
为每个文件分配一组相邻接(连续)的磁盘块
-
优点
- 顺序访问容易
- 顺序访问速度快
- 支持随机访问
-
缺点
- 会产生许多外碎片
- 不能灵活地删除和插入记录
- 不能动态增长
-
-
-
链接组织方式
-
为文件分配不连续的盘块,通过链接指针将一个文件的所有盘块链接在一起
-
优点
- 消除了磁盘的外碎片
- 对插入、删除和修改记录都非常容易
- 文件可动态增长
-
分类
-
隐式链接
-
指针存放在每个盘块中,只适合于顺序访问
-
只适合于顺序访问
-
启动磁盘次数过多
- 每次都从第一个盘块开始,假设i=100,则需100次磁盘访问
-
-
-
显式链接
-
指针显式地存放在内存的文件分配表FAT中
- 提高检索速度
- 减少启动磁盘次数
-
-
-
-
-
索引组织方式
-
把所有的磁盘块号放在一个索引块(表)中
-
缺点
- 需要索引表
- 对小文件,其索引块的利用率低
-
优点
- 支持随机访问
- 动态存取没有外碎片,但索引块的负担较重
-
-
9|2文件存储空间的管理
-
基本分配单位是盘块
-
管理方法
-
空闲区表法
-
系统为外存上所有空闲区建立一张空闲表,属于连续分配方式
-
分配与回收
- 分配类似于内存的分区动态分配,如首次适应算法和最佳适应算法等
- 回收时,也类似于内存回收方法
-
-
空闲链表法
-
空闲盘块链
-
以盘块为单位链接起来
-
优点
- 分配和回收简单
-
缺点
- 效率较低
-
-
空闲盘区链
-
将所有空闲盘区(每个盘区可包含若干个盘块)链接起来
-
优点
- 效率较高
-
缺点
- 分配和回收比较复杂
-
-
-
位示图法
-
利用二进制的一位来表示磁盘中一个盘块的使用情况
-
图示
-
分配和回收
- 顺序扫描令map[i,j]=1
- 将回收盘块的盘块号b转换成位示图中的行号和列号修改位示图,令map[i,j]=0
-
-
成组链接法
-
文件区中的所有空闲盘块,被分成若干个组
-
将每一组含有的盘块总数N和该组所有的盘块号,记入其前一组的第一个盘块的S.free(0)~S.free(99)中。
-
将第一组的盘块总数和所有的盘块号,记入空闲盘块号栈中,作为当前可供分配的空闲盘块号
-
最末一组只有99个盘块
-
图示
-
-
9|3提高磁盘I/O速度的途径
-
提高文件的访问速度
- 减少目录查找时间
- 提高对文件的访问速度
- 将文件中的数据快速从磁盘传送到内存
-
磁盘高速缓存
- 在内存中为磁盘盘块设置一个缓冲区,在该缓冲区中保存了某些盘块的副本
-
其他方法
- 提前读
- 延迟写
- 优化物理块的分布
- 虚拟盘
9|4提高磁盘可靠性的技术
-
容错技术
- 设置冗余部件
9|5存储新技术
-
传统存储系统
- 直连式存储DAS
- 网络附加存储NAS
- 存储区域网络SAN
-
新型存储系统
- .分布式存储系统
- 云存储系统
-
硬盘新技术
- 机械磁盘(HDD)技术革新
- 固态硬盘(SSD)
9|6数据一致性控制
- 指保存在多个文件中的同一个数据,在任何情况下都必须能保证相同。
__EOF__

本文链接:https://www.cnblogs.com/xdeyt/p/18285624.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)