处理机调度与死锁

一、处理机调度

在多道程序中,调度的实质是一种资源分配,处理机调度是依据某种算法对处理机资源进行分配。

1.处理机调度的层次
1).高级调度:
 高级调度又称作业调度。其主要功能是根据某种算法,决定将外存上处于后背队列中的哪几个作业(多道程序度)调入内存,为他们创建进程,分配必要的资源,并将他们放入就绪队列。
2).低级调度:
 低级调度又叫进程调度。根据某种算法,决定就绪队列中的哪个进程应该获得处理机
3).中级调度
 中级调度又叫内存调度。主要目的是,提高内存利用率和系统吞吐量。为此,应该把那些暂时不能运行的进程,调至外存等待,此时进程的状态称为挂起状态。

2.进程调度方式
1)非剥夺式调度:指当一个进程正在处理机上运行时,即使有一个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到进程完后或发生某种事件进入阻塞状态,才会把处理机分配给更重要的进程。
2)剥夺调度方式:指当一个进程正在处理机上运行时,当有一个更为重要或紧迫的进程进入就绪队列,应该立即暂停正在执行的进程,将处理机分配给更重要的。

3.调度的基本准则
1)cpu利用率:CPU是计算机最重要的资源之一,所以应尽可能让CPU处于忙状态。
2)系统吞吐量:表示单位时间CPU完成的作业的数量。
3)周转时间:是指作业提交到作业完成所经历的时间。
  周转时间=作业完成时间-作业提交时间
  带权周转时间=作业周转时间/作业实际运行时间
4)等待时间:指进程处于等处理机状态的时间之和
5)响应时间:响应时间是指用户提交请求到系统首次产生响应所用的时间

4.典型的调度算法

画甘特图容易理解,直观,醒目。

1)先来先服务算法(FIFO)
 每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。

特性:FIFO算法属于不可剥夺算法。算法简单,但效率低,对长作业有利,有利于CPU繁忙型作业,不利于io繁忙型作业。
2)短作业优先
 短作业(进程)优先调度算法SJ§F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。


缺点:

  1. 该算法对长作业不利,优先调度短作业,导致长作业长期不被调度(饥饿),饥饿是调度策略问题,死锁是系统环形等待
  2. 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理。
  3. 由于作业的长短只是根据用户所提供的估计执行时间而定的,估计短程序执行不完,因此一般都会偏长估计

3)高响应比优先调度
 主要用于作业调度,同时考虑了每个作业的等待时间和估计的运行时间,每次先计算后背队列中每个作业的响应比,从中选出响应比最高的作业投入运行。

   响应比R。=(等待时间+要求服务时间)/要求服务时间
 由公式可以得出:

  1. 作业的等待时间相同时,要求服务时间越短,响应比越高,有利于短作业
  2. 要求服务时间相同,作业的响应比由等待时间决定,等待时间越长,先执行,实现的是FIFO
  3. 对于长作业,作业的响应比可以随着等待的时间增加而提高,等待时间足够长时,也可以获得处理机执行。

4)优先级调度算法
 优先级用于描述作业的紧迫程度。优先级调度算法每次从后背队列中选择优先级最高的一个或几个作业,将他们调入内存,分配必要的资源,创建进程放入就绪队列,在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配之,投入运行。
 静态优先级:优先级在创建进程时确定的
 动态优先级:根据进程情况的变化动态调整优先级
5)时间片轮转
 用于分时系统中的进程调度。每次调度时,总是选择就绪队列的队首进程,让其在CPU上运行一个系统预先设置好的时间片。一个时间片内没有完成运行的进程,返回到绪队列末尾重新排队,等待下一次调度。


二、死锁

在一组进程发生死锁的情况下,这组死锁进程中的每一个进程,都在等待另一个死锁进程所占有的资源。

 如果一组进程中的每一个进程都在等待仅有该组进程中的其它进程才能引发的事件,那么该组进程是死锁的。
 S死锁的充分条件:当且仅当S状态的资源分配图是不可完全简化的
1.产生死锁的原因:
1)竞争不可抢占式资源引起的死锁:通常系统拥有的不可抢占资源数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。
2)竞争可消耗型资源引起死锁
3)进程推进不当引起死锁
2.产生死锁的必要条件
1)互斥条件:进程对所分配的资源进行排他性使用,在一段时间内某资源仅为一个进程所占有,此时若有其它进程请求该资源,则请求进程只能等待。
2)不剥夺条件:经常所获得的资源在未使用完之前,不能被其它进程强行夺走,而该资源只能由获得资源的进程自己释放。
3)请求与保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放、
4)循环等待条件:存在一种进程资源的循环等待链。

3.处理死锁的方法
预防、避免、检测、解除死锁
1)预防死锁:破坏四必要条件之一

  • 互斥条件是共享设备必须的,不能改变,需要保持。

  • 破坏“请求和保持“条件
    a.所有进程在开始运行之前,必须一次性的申请其在整个运行过程中所需的全部资源。
    b.进程只获得运行初期所需要的资源后,便开始运行。进程运行过程中再逐步释放已分配给自己的,且已用毕的全部资源,然后再请求新的所需的资源。

  • 破坏“不可抢占”条件
    当一个已经保持了某些不可抢占资源的进程,提出新的资源请求而不能得到满足时,它必须释放已经保持的所有资源,待以后需要时重新申请。

  • 破坏“循环等待”条件
    规定每个进程必须按照递增的顺序请求资源

2)避免死锁:银行家算法
在资源分配的过程中,防止系统进入不安全状态,以避免发生死锁。

  • 系统安全状态
    作为安全状态,是指系统能按某种进程推进顺序(p1,p2,—,pn)为每个进程
    pi分配其所需的资源,直至满足每个进程对资源的最大需求,使每个进程都可以顺序完成。此时将顺序称为安全序列,若系统无法找到一个安全序列,则称系统处于不安全状态。
    并非所有的不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态,反之,只要系统处于安全状态,系统便可以避免进入死锁状态。
  • 银行家算法

一、银行家算法

在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。

银行家算法的基本思想是分配资源之前, 判断系统是否是安全的; 若是, 才分配。它是最具有 代表性的避免死锁的算法。

设进程cusneed 提出请求REQUEST [i] ,则银行家算法按如下规则进行判断。

(1) 如果REQUEST [cusneed] [i]<= NEED[cusneed][i] ,则转(2) ;否则,出错。

(2) 如果REQUEST [cusneed] [i]<= AVAILABLE[cusneed][i] ,则转(3) ;否则,出错。

(3) 系统试探分配资源,修改相关数据:

     AVAILABLE[i]-=REQUEST[cusneed][i];ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];NEED[cusneed][i]-=REQUEST[cusneed][i];

(4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复 原状, 进程等待。

二、安全性检查算法

(1) 设置两个工作向量Work=AVAILABLE;FINISH

(2) 从进程集合中找到一个满足下述条件的进 程,
FINISH==false;
NEED<=Work;
如找到,执行(3) ; 否则,执行(4)

(3) 设进程获得资源,可顺利执行,直至完 成,从而释放资源。

Work+=ALLOCATION;
Finish=true;
GOTO 2

(4) 如所有的进程Finish= true ,则表 示安全;否则系统不安全。

【例】

3)检测死锁:死锁检测算法、资源分配图

  • 死锁定理:S为死锁状态的充分条件是:当且仅当S状态的资源分配图是不可完全简化的。

4)解除死锁:死锁解除算法

  • 抢占资源:从一个或者多个进程中抢占足够数量的资源,分配给死锁进程,以解除死锁状态。
  • 终止进程:(终止所有,或者一个一个终止直至解除死锁)终止系统中的一个或者多个死锁进程,直至打破循环环路,使系统从死锁状态解脱出来。

操作系统基本概念梳理(3)---处理机调度与死锁相关推荐

  1. 6 操作系统第二章 进程管理 处理机调度

    文章目录 1 处理机调度 1.1 处理机调度概念 1.2 处理机调度三大层次 1.3 处理机三层调度的联系.对比 1.4 处理机调度小结 2 进程调度 2.1 进程调度.进程切换时机 2.2 进程调度 ...

  2. 操作系统学习笔记 第三章:处理机调度与死锁(王道考研)

    本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...

  3. 【408预推免复习】操作系统之处理机调度与死锁

    [408&预推免复习]操作系统之处理机调度与死锁 文章目录 1 作业调度和进程调度 2 实时调度和死锁概述 3 预防死锁和避免死锁 1 作业调度和进程调度 什么是处理机调度? 处理机调度:如何 ...

  4. 【操作系统】处理机调度与死锁(三)

    [操作系统]处理机调度与死锁(三) 一.前言 二.处理机调度的层次 2.1 高级调度 2.2 低级调度 2.3 中级调度 三.调度队列模型和调度准则 3.1 仅有进程调度的调度队列模型 3.2 具有高 ...

  5. 操作系统 综合应用题知识点更新【章节考试重点(进程同步、处理机调度与死锁、存储管理、设备管理、文件管理)】

    知识点 目录 第二章:进程同步 第三章:处理机调度与死锁 第四.五章:存储管理 第六章:设备管理 第七.八章:文件管理 第二章:进程同步 (1) 前驱图 (2) 互斥同步都有的 第三章:处理机调度与死 ...

  6. ======第三章处理机调度与死锁======

    目录 第三章 处理机调度与死锁 3.1处理机调度的层次 3.1.1 高级调度 3.1.2 低级调度 3.1.3 中级调度 3.2 调度队列模型和调度准则 3.2.1 调度队列模型 3.2.2 选择调度 ...

  7. 第三章 处理机调度与死锁

    第三章 处理机调度与死锁 3.1 处理机调度的层次和调度算法的目标 3.1.1 处理机调度的层次 3.1 处理机调度的层次和调度算法的目标 3.1.1 处理机调度的层次

  8. 【王道操作系统】2.2.1 处理机调度的概念与层次

    处理机调度的概念与层次 文章目录 处理机调度的概念与层次 1.调度的基本概念 2.调度的三个层次 2.1 高级调度(作业调度) 2.2 中级调度(内存调度) 2.3 进程的挂起状态与七状态模型 2.4 ...

  9. 三、处理机调度与死锁

      上一章介绍的进程主要从概念出发,但程序执行终归是动态的.进程如何参与程序的动态执行过程呢?在多道程序下,进程的数量远大于处理机的数量.那如何对进程进行安排(处于就绪状态的进程有好多,选哪些进程给处 ...

最新文章

  1. c语言第五章循环控制实验报告,C语言实验报告5《循环控制》.doc
  2. 【转】摄像头编程实例
  3. 泰拉瑞亚服务器权限文件,泰拉瑞亚云服务器权限
  4. OpenResty 通过二级域名做跳转
  5. dat文件打开乱码_5.2 实战1:解决在Linux下打开Windows汉字文本的乱码问题
  6. 在线便携小电视源码 云电视源码
  7. snort 使用mysql的安装
  8. Web Service随笔
  9. Eclipse调试Java的10个技巧
  10. 实例验证WEB浏览器智能应对节点失效
  11. 日常生活 之 有哪些道理是你慢慢才明白的?
  12. 二手华为p40手机现在多少钱
  13. 1015: C基础-同因查找
  14. 第一次接触,两眼一抹黑。我只是想下载个小小小的文件而已啊,脑壳疼。。
  15. 盘点Sui生态20个值得关注的项目,其中8个已进入测试阶段
  16. 迅雷数据平台建设和应用案例
  17. shell特殊符号 命令
  18. 计算机桌面打不开原因,电脑桌面图标打不开怎么办?
  19. resnet 20 和resnet 56
  20. 桌面图标计算机文字,怎么把电脑界面图标下面的文字给去掉

热门文章

  1. 中国实践对接新营销时代 ,腾讯刘胜义对话“营销学之父”科特勒
  2. 记一次批量插入数据库脚本练习
  3. php文件夹压缩视频教程,php压缩文件的方法教程
  4. 2019FME博客大赛——为数据而生的FME - 腾讯人口迁徙数据爬取与分析
  5. 为什么在Word里面打字把后面的字都删除了
  6. admi后台 vue_GitHub - jiangshanmeta/vue-admin: 基于vue的通用管理后台
  7. Node.js 应用全链路追踪技术——全链路信息存储
  8. 电商系统优惠券测试点
  9. 小技巧大作用:让模糊照片变得清晰的简单方法
  10. linux实验报告ALU,20135316王剑桥 linux第五周课实验笔记