第三章 处理机调度与死锁
一、处理机调度的层次
1. 高级调度
1)作业和作业步
2)作业控制块JCB
3)作业调度:决定①接纳多少个作业。②接纳哪些作业
2. 低级调度:进程调度或短程调度
1)功能 :决定就绪对立中的哪个进程应获得处理机。
(1)保存处理机的现场信息。(2)按某种算法选取进程。(3)把处理机分配给进程。
2)三个基本机制
(1)排队器、(2)、分派器(3)上下文切换机制。
3)进程调度方式
(1)非抢占方式:适用于大多数的多道批处理系统环境
(2)抢占方式:能满足对响应时间有着较严格要求的实时任务的需求。
原则:优先权原则、短作业优先原则、时间片原则。
- 中级调度:中程调度
引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。
二、调度队列模型和调度准则
1.调度队列模型
1)仅有进程调度的调度队列模型
2)具有高级和低级调度的调度队列模型。具有进程和作业调度
3)同时具有三级调度的调度队列模型
2. 选择调度方式和调度算法的若干准则
1)面向用户的准则:周转时间短、响应时间快、截止时间的保证、优先权准则
2)面向系统的准则:系统吞吐量高、处理机利用率好、各类资源的平衡利用。
三.调度算法※
1)先来先服务和短作业(进程)优先调度算法(FCFS)
①先来先服务调度算法 :FCFS调度算法有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业(进程)。
②短作业(进程)优先调度算法:这说明SJF调度算法能有效地降低作业的平均等待时间,提高系统吞吐量。
(1) 该算法对长作业不利。
(2) 该算法完全未考虑作业的紧迫程度
(3) 不一定能真正做到短作业优先调度
2)高优先权优先调度算法
1.优先权调度算法的类型,分为两种:
(1) 非抢占式优先权算法
(2) 抢占式优先权调度算法
2.优先权的类型
(1) 静态优先权:静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变。
(2) 动态优先权:动态优先权是指在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的。
3. 高响应比优先调度算法
3)基于时间片的轮转调度算法
1.时间片轮转法
2.多级反馈队列调度算法
(1)应设置多个就绪队列,并为各个队列赋予不同的优先级。
(2)算法赋予各个队列中进程执行时间片的大小也各不相同
(3)当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。
(4)仅当第一队列空闲时,调度程序才调度第二队列中的进程运行
5)如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列,则此时新进程将抢占正在运行进程的处理机。
适合用户:终端型作业用户;短批、长批处理作业用户。
四、实时调度※
1)实现实时调度的基本条件
(1)提供必要的信息
①就绪时间(到达时间)
② 开始截止时间和完成截止时间
③ 处理时间
④ 资源要求
⑤ 优先级:绝对、相对优先级
(2)系统处理能力强
(3)采用抢占式调度机制
(4)具有快速切换机制
2)实时调度算法的分类
(1)非抢占式调度算法
①非抢占式优先调度算法
②非抢占式优先调度算法
(2)抢占式优先调度算法
①基于时钟中断的抢占式优先权调度算法
②立即抢占的优先权调度算法
3)常用的几种实时调度算法
(1) 最早截止时间优先即EDF(Earliest Deadline First)算法
(2) 最低松弛度优先即LLF(Least Laxity First)算法
五、产生死锁的原因和必要条件※
1. 产生死锁的原因
(1)竞争资源
①可剥夺和非剥夺性资源
②竞争非剥夺性资源
③竞争临时性资源
(2)进程间推进顺序非法
①进程推进顺序合法
②进程推进顺序非法
2.产生死锁的必要条件
1)互斥条件:指进程对所分配到的资源进行排它性使用
·· 2)请求和保持条件(部分分配):
3)不可剥夺条件(不可强占)
4)环路等待条件
3.处理死锁的基本方法
1) 预防死锁
2) 避免死锁
3) 检测死锁
4) 解除死锁
六、预防死锁的方法
1.预防死锁
1)摒弃“请求和保持(部分分配)”条件:规定所有进程在开始运行之前,都必须一次性地申请其在整个运行过程所需的全部资源。
2)摒弃“不可剥夺”条件:提出新的资源请求而不能立即得到满足时,必须释放它已经保持了的所有资源,即它的资源是可以被剥夺的
3)摒弃“环路等待”条件:规定系统将所有资源按类型进行线性排队,并赋予不同的序号
2.系统安全状态
1)安全状态
2)由安全状态向不安全状态的转换
如果不按照安全序列分配资源,则系统可能会由安全状态进入不安全状态。
- 3. 利用银行家算法避免死锁
(1).银行家算法中的数据结构
1)可利用资源向量Available
2)最大需求矩阵Max
3)分配矩阵Allocation
4)需求矩阵Need
Need[i, j]=Max[i, j]-Allocation[i, j]
5)工作向量Work:在执行安全性检查开始时,Work:=Available。
6)状态标志Finish:初始值为false,达到上述要求时其值为true
7)进程申请资源向量Request
七、.死锁的检测与解除
1.死锁的检测
1)资源分配图
2)死锁定理
3)死锁检测中的数据结构
2.死锁的解除
1) 剥夺资源
2) 撤消进程
第四章 存储器管理
4.1 存储器的层次结构
4.1.1.多级存储器结构
最高层:CPU寄存器
中间:主存
最底层:辅存
4.1.2.主存储器与寄存器
1.主存储器:用于保存进程运行时的程序和数据,也称可执行存储器
2.寄存器:寄存器用于加速存储器的访问速度
4.1.3 高速缓存和磁盘缓存
1.高速缓存
2.磁盘缓存
4.2 程序的装入和链接
用户源程序变为一个可在内存中执行的程序步骤:(1)编译、 (2)链接、 (3)装入
4.2.1 程序的装入
1.绝对装入方式
2.可重定位装入方式: 根据内存的当前情况,将装入模块装入到内存的适当位置。地址变换通常是在装入时一次完成的,以后不再改变,故称为静态重定位。
·· 3.动态运行时装入方式
4.2.2 程序的链接
根据链接时间的不同,可把链接分成如下三种:静态,装入时动态、运行时动态。
1.静态链接方式: (1) 对相对地址进行修改。 (2) 变换外部调用符号。
2.装入时动态链接 (1) 便于修改和更新 (2) 便于实现对目标模块的共享
3.运行时动态链接
4.3 连续分配方式
4.3.1 单一连续分配:只能用于单用户、单任务的操作系统中。
4.3.2 固定分区分配
1.划分分区的方法:(1) 分区大小相等 (2) 分区大小不等
2.内存分配
4.3.3 动态分区分配
1.分区分配中的数据结构:(1) 空闲分区表(2) 空闲分区链
2. 分区分配算法
1) 首次适应算法(first fit):增加查找可用空闲分区时的开销。
2) 循环首次适应算法(next fit)
3) 最佳适应算法(best fit):避免“大材小用”。
4) 最坏适应算法(worst fit)
5) 快速适应算法(quick fit)
3.分区分配操作
1) 分配内存
2) 回收内存
4.3.6 可重定位分区分配
1.动态重定位的引入
2.动态重定位的实现
3.动态重定位分区分配算法
4.3.7 对换
1.对换(Swapping)的引入
整体对换(进程对换)、页面对换(分段对换、部分对换)
2.对换空间的管理
文件区:用于存放文件
对换区(外存):用于存放从内存换出的进程。
3.进程的换出与换入
(1)进程的换出
(2)进程的换入
4.4 基本分页存储管理方式※
4.4.1 页面与页表
1.页面
(1) 页面和物理块
将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页
把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框
(2) 页面大小:大小应适中。
2.地址结构
3.页表
在分页系统中,为每个进程建立了一张页面映像表,简称页表。
4.4.2 地址变换机构
1.基本的地址变换机构:在系统中只设置一个页表寄存器PTR
2.具有快表的地址变换机构
4.4.3 两级页表
为离散分配的页表再建立一张页表,称为外层页表。
1.5 基本分段存储管理方式※
4.5.1 分段存储管理方式的引入
(1) 方便编程:用户把自己的作业按照逻辑关系划分为若干个段,每个段都是从0开始编址,并有自己的名字和长度。
(2) 信息共享:在实现对程序和数据的共享时,是以信息的逻辑单位为基础的。
(3) 信息保护:信息保护同样是对信息的逻辑单位进行保护
(4) 动态增长
(5) 动态链接:当运行过程中又需要调用某段时,才将该段(目标程序)调入内存并进行链接
4.5.2 分段系统的基本原理
1. 分段:在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。
2.段表:为每个分段分配一个连续的分区,进程中的各个段可以离散地移入内存中不同的分区中。
3.地址变换机构:段表寄存器,用于存放段表始址和段表长度TL。
4.分页和分段的主要区别
(1) 页是信息的物理单位,段则是信息的逻辑单位
(2) 页的大小固定且由系统决定,段的长度却不固定决定于用户所编写的程序
(3) 分页的作业地址空间是一维的,分段的作业地址空间则是二维的
4.5.3 信息共享
可重入代码:绝对不允许可重入代码在执行中有任何改变。
4.5.4 段页式存储管理方式
1.基本原理:先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名
2.地址变换过程:在段页式系统中,为了获得一条指令或数据,须三次访问内存。
4.6 虚拟存储器的基本概念※
4.6.1 虚拟存储器的引入
1.常规存储器管理方式的特征(1) 一次性 、 (2) 驻留性
2.局部性原理(1) 时间局限性(2) 空间局限性。
3.虚拟存储器的定义
4.6.2 虚拟存储器的实现方法
1.分页请求系统:这是在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。
(1) 硬件支持:① 请求分页的页表机制② 缺页中断机构③ 地址变换机构
(2)实现请求分页的软件:
2.请求分段系统:在分段系统的基础上,增加了请求调段及分段置换功能后所形成的段式虚拟存储系统。
(1) 请求分段的段表机制
(2) 缺段中断机构
(3) 地址变换机构
4.6.3 虚拟存储器的特征
1.多次性
2.对换性
3.虚拟性
4.7 请求分页存储管理方式※
4.7.1 请求分页中的硬件支持
1.页表机制
2.缺页中断机构
(1) 在指令执行期间产生和处理中断信号
(2) 一条指令在执行期间,可能产生多次缺页中断
3.地址变换机构
4.7.2 内存分配策略和分配算法
1.最小物理块数:指能保证进程正常运行所需的最小物理块数
2.物理块的分配策略
(1) 固定分配局部置换
(2) 可变分配全局置换
(3) 可变分配局部置换
4.7.3 调页策略
1.调入页面的时机
(1)预调页策略
(2) 请求调页策略
2.确定从何处调入页面
3.页面调入过程
4.8 页面置换算法※
4.8.1 最佳置换算法和先进先出置换算法
1.最佳(Optimal)置换算法
以后永不使用的,或许是在最长(未来)时间内不再被访问的页面
2.先进先出(FIFO)页面置换算法
4.8.2 最近最久未使用(LRU)置换算法
(1) 寄存器
(2) 栈
4.8.3 Clock置换算法
1.简单的Clock置换算法
2.改进型Clock置换算法
4.8.4 其它置换算法
1.最少使用(LFU:Least Frequently Used)置换算法
2.页面缓冲算法
4.9 请求分段存储管理方式
4.9.1 请求分段中的硬件支持
1.段表机制
2.缺段中断机构
3.地址变换机构
4.9.2 分段的共享与保护
1.共享段表:(1) 共享进程计数count、(2) 存取控制字段、(3) 段号
2.共享段的分配与回收
1) 共享段的分配
2) 共享段的回收
3.分段保护
1) 越界检查
2)存取控制检查:只读、只执行、读写。
3) 环保护机构