【408预推免复习】操作系统之处理机调度与死锁
【408&预推免复习】操作系统之处理机调度与死锁
文章目录
1 作业调度和进程调度
2 实时调度和死锁概述
3 预防死锁和避免死锁
1 作业调度和进程调度
什么是处理机调度?
处理机调度:如何从众多的作业队列中选择一道或几道进入内存,进入内存的若干进程又如何去竞争CPU的使用权,这称为处理机调度。
非抢占方式:一旦把处理机分配给某进程后,便让该进程一直执行,直至该进程完成或阻塞时,才再把处理机分配给其他进程。
抢占方式:允许暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。
抢占原则:
(1)优先级原则。优先级高的进程抢占处理机。
(2)短进程优先原则。短作业(进程)抢占当前较长作业(进程)的处理机。
(3)时间片原则。各进程按时间片运行,当一个时间片用完后重新调度。
先来先服务(first-come first-served,FCFS)调度算法
算法思想:
对于作业调度,从后备作业中选择最先进入该队列的作业,将他们调入内存,为它们分配资源、创建进程,然后放入就绪队列。
对于进程调度,从就绪队列中选择最先进入该队列的进程,分配处理机,使之运行。
短作业优先(short job first,SJF)的调度算法
算法思想:
短作业优先是从后备队列中选择估计运行时间最短的作业,将它们调入内存。
短进程优先是从就绪队列中选择估计运行时间最短的进程,将处理机分配给它,使之执行并一直到完成或因发生某事件而阻塞放弃处理机时,再重新调度。
特点
极端情况下,长作业得不到调度。
作业或进程的长短只能估计,不准确。
完全不考虑紧迫程度,使紧急事件得不到处理。
优先级调度算法分类:
非抢占式优先级调度算法
把处理机分配给就绪队列中优先权最高的进程后,便一直执行下去直至完成;或发生某事件使该进程放弃处理机时,可再将处理机重新分配给另一优先级最高的进程。
用于批处理系统和某些对实时性要求不严的实时系统中。
抢占式优先级调度算法
把处理机分配给优先级最高的进程,使之执行。在执行期间,只要又出现优先权更高的进程,就重新将处理机分配给新到的优先级最高的进程。
能更好地满足紧迫作业的要求,常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中。
优先级的类型
静态优先级:创建进程时确定,在进程的整个运行期间保持不变。
动态优先级: 优先级随进程推进或随其等待时间的增加而改变的,以便获得更好的调度性能。
高响应比优先调度算法(Highest Response Ratio Next,HRRN)
FCFS算法所考虑的只是作业的等待时间,而忽视了作业的运行时间。而SJF算法正好与之相反,只考虑作业的运行时间,而忽视了作业的等待时间。
高响应比优先调度算法则是既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。
高响应比优先算法为每个作业引入一个动态优先级,它随等待时间延长而增加,这将使长作业的优先级在等待期间不断地增加,等到足够的时间后,必然有机会获得处理机。该优先级的变化规律可描述为:
时间片轮转调度算法
算法思想:
进程按FCFS在就绪队列排队,调度程序把CPU分配给队首进程,令其执行一个时间片,一个时间片执行完毕将进程排在队尾。
时间片太大,交互性差,甚至退化为FCFS算法
时间片太小,进程切换频繁,系统开销增加
多级反馈队列调度算法(multilevel Feedback Queue,MFQ)
算法思想:
根据作业的性质和类型不同,将就绪队列再分为若干个子队列,每个进程分属于一个队列。
在多级队列的基础上,不但设多个队列,且为每个队列赋予不同的优先权,第一个队列的优先权最高,第二个队列次之,其余队列的优先权逐个降低。
各个队列中的进程执行时间片大小逐渐增大。
2 实时调度和死锁概述
在实时系统中,可能存在着两类不同性质的实时任务,即HRT任务和SRT任务,它们都联系着一个截止时间。为保证系统能正常工作,实时调度必须能满足实时任务对截止时间的要求。为此,实现实时调度应具备一定的条件。
1.提供必要的信息
(1) 就绪时间,是指某任务成为就绪状态的起始时间
(2) 开始截止时间和完成截止时间
(3) 处理时间
(4) 资源要求
(5) 优先级,如果某任务的开始截止时间错过,势必引起故障,则应为该任务赋予“绝对”优先级;如果其开始截止时间的错过,对任务的继续运行无重大影响,则可为其赋予“相对”优先级,供调度程序参考。
根据不同方式对实时调度算法加以分类:
根据实时任务性质,分为硬实时调度算法和软实时调度算法
根据调度方式,分为非抢占调度算法和抢占调度算法
最早截止时间优先EDF(Earliest Deadline First)算法
算法思想:根据任务的截止时间确定任务的优先级,任务的截止时间越早,其优先级越高,具有最早截止时间的任务排在队列的队首。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机。
最早截止时间优先算法即可用于抢占式调度方式中,也可用于非抢占式调度方式中。
最低松弛度优先LLF(Least Laxity First)算法
该算法在确定任务的优先级时,根据的是任务的紧急(或松弛)程度。任务紧急程度愈高,赋予该任务的优先级就愈高,以使之优先执行。
例如,任务A在200ms时必须完成,本身运行时间100ms,则必须在100ms之前调度执行,A任务的紧急(松弛)程度为100ms,又如任务B在400ms是必须完成,需运行150ms,其松弛程度为250ms.
主要用于抢占式调度。
3 预防死锁和避免死锁
消耗性资源
可消耗性资源又称为临时性资源,它是在进程运行期间,由进程动态地创建和消耗的,它具有如下性质:
① 每一类可消耗性资源在进程运行期间其单元数目是可以不断变化的,有时它可以有许多,有时可能为0;
② 进程在运行过程中,可以不断地创造可消耗性资源的单元,将它们放入该资源类的缓冲区中,以增加该资源类的单元数目。
③ 进程在运行过程中,可以请求若干个可消耗性资源单元,用于进程自己的消耗,不再将它们返回给该资源类中。
可抢占性资源
可抢占性资源,是指某进程在获得这类资源后,该资源可以再被其它进程或系统抢占,抢占后不会产生异常或错误。
如:CPU、主存
不可抢占性资源
不可抢占性资源,即一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。
如刻录机、打印机。
和死锁有关
预防死锁的方法是通过破坏产生死锁的四个必要条件中的一个或几个,以避免发生死锁。
安全状态
指系统能按某种顺序如(P1,P2,…,Pn) ,来为每个进程分配其所需资源,直至最大需求,使每个进程都可顺序完成。若系统不存在这样一个安全序列、则称系统处于不安全状态。
系统进入不安全状态后可能进入死锁
只要系统处于安全状态,系统便可避免进入死锁状态。
避免死锁的实质:如何使系统不进入不安全状态。
利用银行家算法避免死锁
银行家算法中的数据结构
为了实现银行家算法,在系统中必须设置这样四个数据结构,分别用来描述系统中可利用的资源、所有进程对资源的最大需求、系统中的资源分配,以及所有进程还需要多少资源的情况。 (1) 可利用资源向量Available。 (2) 最大需求矩阵Max。 (3) 分配矩阵Allocation。 (4) 需求矩阵Need。
存在关系:Need=Max-Allocation
可用资源向量 available[m]: available[i]
代表资源i的可用资源数。初值为系统中所配置的该类资源的全部可用资源数。available[j]=k表示Rj类可用资源有k个。
最大需求矩阵Max[m,n]: Max[i,j]=k 表示进程i最多需要k个Rj资源。
分配矩阵Allocation[m,n]: Allocation[i,j]=k 表示进程i已分得k个Rj资源。
需求矩阵Need[m,n]: Need[i,j]=k 表示进程i还需要k个Rj资源。
安全性算法 系统所执行的安全性算法可描述如下: (1) 设置两个向量:① 工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work := Available;② Finish:它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i] := false;当有足够资源分配给进程时,再令Finish[i] := true。
(2) 从进程集合中找到一个能满足下述条件的进程: ① Finish[i]=false; ② Need[i, j]≤Work[j]; 若找到,执行步骤(3),否则,执行步骤(4)。(3) 当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: Work[j] = Work[j]+Allocation[i, j]; Finish[i] =true; go to step 2;(4) 如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态。
死锁检测算法:检测系统状态,以确定系统中是否发生死锁
死锁解除算法:当系统中发生了死锁,利用该算法将系统从死锁中解除出来。
终止进程的方法 1) 终止所有死锁进程 这是一种最简单的方法,即是终止所有的死锁进程,死锁自然也就解除了,但所付出的代价可能会很大。
2) 逐个终止进程 稍微温和的方法是,按照某种顺序,逐个地终止进程,直至有足够的资源,以打破循环等待,把系统从死锁状态解脱出来为止。
【408预推免复习】操作系统之处理机调度与死锁相关推荐
- 【408预推免复习】操作系统之IO层次结构和IO控制方式
[408&预推免复习]操作系统之IO层次结构和IO控制方式 文章目录 1 I/O设备 2 I/O系统的层次结构 3 I/O控制方式 4 IO设备分配与回收 文章目录 1 I/O设备 2 I/O ...
- 【408预推免复习】操作系统之虚拟存储器
[408&预推免复习]操作系统之虚拟存储器 文章目录 1 虚拟存储器概述 2 请求分页存储管理方式 3 页面置换算法3.1 最佳(Optimal)置换算法3.2 先进先出(FIFO)页面置换算 ...
- 【408预推免复习】操作系统之存储器管理
[408&预推免复习]操作系统之存储器管理 文章目录 1 基础部分 2 分页存储管理 3 分段存储管理 1 基础部分 物理地址空间(或物理空间.绝对空间):由内存一系列存储单元所限定的地址范围 ...
- 【408预推免复习】操作系统引论
[408&预推免复习]操作系统引论 文章目录 1 操作系统的目标和作用 2 单道批处理系统 3 多道批处理系统 4 操作系统基本特性 1 操作系统的目标和作用 2 单道批处理系统 3 多道批处 ...
- 【408预推免复习】操作系统之进程的描述与控制
文章目录 1 进程的基本概念 2 进程控制与进程同步 3 经典进程同步问题 4 进程通信与线程 1 进程的基本概念 前趋图(Precedence Graph),是指一个有向无循环图,可记为DAG(Di ...
- 【408预推免复习】操作系统之文件管理
文章目录 1 文件和文件系统 2 文件的逻辑结构 3 文件目录 4 文件共享 1 文件和文件系统 文件是具有文件名的一组相关信息的集合. 文件需要有文件名.基本内容和相关属性,如文件类型.文件长度.文 ...
- 【408预推免复习】计算机网络(谢希仁第七版)第六章——应用层
文章目录 1 域名系统 DNS 2 文件传送协议 3 远程终端协议 TELNET 4 万维网 WWW 5 电子邮件 6 动态主机配置协议 DHCP 7 简单网络管理协议 SNMP 8 应用进程跨越网络 ...
- 【408预推免复习】计算机网络(谢希仁第七版)第五章——运输层
文章目录 1 运输层协议概述 2 用户数据报协议 UDP 3 传输控制协议 TCP 概述 5 可靠传输的工作原理 6 TCP 报文段的首部格式 7 TCP 可靠传输的实现 8 TCP 的流量控制 9 ...
- 【408预推免复习】计算机组成原理之系统总线
文章目录 1 总线的基本概念 2 总线的分类 3 总线特性及性能指标 4 总线结构 5 总线控制 1 总线的基本概念 什么是总线 总线是连接各个部件的信息传输线, 是各个部件共享的传输介质 单总线结构 ...
最新文章
- C++尽量在operater=中处理“自我赋值”
- js学习日记-new Object和Object.create到底干了啥
- 通过Chocolatey软件包管理器安装.NET Core
- 蜕变!网易轻舟微服务这波操作,始于异构融合、源于中台!
- 当relative遇上z-index,半透明度不阻断事件捕获
- NoSQL Manager for MongoDB 破解
- python argparse(参数解析)模块学习(二)
- 华为HCNA之配置RIPv2认证实验
- jQuery 仿抖音时钟罗盘转动效果
- 离散数学及其应用(第七版黑书)笔记
- mysql数据库去重
- wps 2003 给WPS设置保护眼睛的淡绿色呢?
- python破解网易反爬虫机制
- 电商小程序实战教程-商品详情页开发
- 9月第2周业务风控关注 |国家计算机病毒应急处理中心:这十款App存在危险行为代码
- 计算机主板里的电池有什么用,电脑冷知识,你知道电脑主板上的小电池是做什么用的吗?...
- python画心形代码大全_还在为 520 发愁吗?教你用 Python 写个表白神器!
- linux中history命令
- 滨州学院计算机陈志,滨州学院院系介绍
- RabbitMQ重试机制