计算机硬件---调度与死锁
进程调度原因及调度切换时机,进程调度方式与实现及各种调度算法的个人总结:
1.一般调度概念 1)什么是调度 就是选出待分派的作业或进程。 操作系统管理了系统的有限资源,当有多个进程(或作业)发出请求要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(或作业)来占用资源。这就是调度。
2)调度目的 1.控制资源使用者的数量 2.选取资源使用者 3.许可哪些使用者占用资源 4.让使用者直接占用资源。
二、调度类型 1、高级调度(长程调度)。 即作业调度,选取输入井中的作业,生成根进程。目的是控制使用系统资源的进程数。
2、中级调度(中程调度)。 指选取进程占用内存或有资格占用内存,又称进程滚入滚出,中级调度将在存储管理章节中介绍,有页式调度、段式调度、段页式调度等。
3、低级调度(短程调度) 指选取进程占用处理机,又称进程调度。 4、I/O调度 选取进程占用I/O设备。
三、调度和状态转换 在许多系统中,调度被分为三种:长程、中程和短程。 1)调度和进程状态转换
从状态转换的观点: 1、长程调度(作业调度)就是将一个或一批作业从后备状态变为运行状态。一个作业一旦被高级调度选中,便可获得所需要的基本内存和设备资源,并被装入内存,此后就以进程形式参与并发执行,与其它进程竞争CPU。
从状态转换的观点: 2、中程调度就是将进程从活动态变为静止的挂起态,或者将进程从挂起态变为就绪或阻塞态。 3、短程调度就是将某个进程从就绪态变为(在CPU上运行的)执行态。
2)调度的层次(调度作用的嵌套关系)
3)三级调度示意图 调度从根本上讲,是要使队列延迟的时间最小,并优化系统的执行效率
4.1.2作业调度的功能
①记录系统中各个作业的情况。 ②按照某种调度算法从后备作业队列中挑选作业,即决定接纳多少个作业进入内存和挑选哪些作业进入内存。
③为选中的作业分配内存和外设等资源。 ④为选中的作业建立相应的进程,并把该进程放入就绪队列中。 ⑤作业结束后进行善后处理工作。如输出必要的信息,收回该作业所占用的全部资源,撤消与该作业相关的全部进程和该作业的JCB 。
4.1.3进程调度的功能与调度时机 一、进程调度的功能 (1)保存现场(2)挑选进程(3)恢复现场
二、进程调度的时机 一般在下列事件发生后要执行进程调度。 (1)创建进程。 当进程创建时,要决定是运行父进程还是子进程。 (2)进程终止。 (3)等待事件。 (4)中断发生。 (5)运行到时。
4.1.4进程调度的基本方式 1)非剥夺调度(非抢占) 只有当处理机上的进程主动放弃处理机时,才重新调度。 2)剥夺调度(抢占) 当进程运行时可以被系统以某种原则为由剥夺其处理机。
例:只有一部电话机,小李正在通电话,此时小张有急事也要打电话,此时小张的调度方式有两种: 一种是非抢占,即等待小李打完电话,自己再打电话。 另一种是抢占,不等小李通完电话,抢过话筒就拨打电话。
3)进程调度在核心态进行。 ★CPU状态有两种,目态和管态。 管态——也称核心态或系统态,系统程序在CPU上运行的状态。 目态——用户程序在CPU上运行的状态。
4.2 调度算法 4.2.1 常用的调度算法
1. FCFS 谁先到就绪队列就将处理机分给谁。 2. 短作业优先 取一个下次所需运行时间最短的作业(该算法能使平均等待时间最短)。
3. 优先级调度 选优先级最高的进程占用处理机(优先级可动态改变)。 4.轮转调度法 以先来后到的次序+ 时间片轮转。
5.多队列调度法 按属性将就绪进程分类,不同类进程可有不同的调度算法。 6.多级反馈队列调度法 设置多条就绪队列,进程被调度执行后,在被剥夺或放弃处理机后而在就绪时,可以改变其就绪队列(见下图)。
又一个多级反馈队列调度算法的例子:使用优先权实现调度。做法如下:
(1)以优先级设置多队列。 (2)各队列的调度算法采用FCFS+时间片轮转. (3)进程优先级升降原则是:等待过久升,输入/输出完成时升,运行完一个完整时间片降……
(4)进程最初进入就绪队列以用户初置优先级为参数。 (5)开始调度时,先从最高优先权的就绪队列(RQ0)开始选取一个进程,如果RQ0空,则检查RQ1,如此下去。见下图示:
4.2.2 调度策略的讨论
一、调度性能评价准则 1、CPU利用率。 2、吞吐率。即每单位时间所完成的作业数目。 3、周转时间。即从作业提交直至完成这一作业的时间间隔。
4、等待时间。即作业在就绪队列中等待所花的时间。 5、响应时间。即从作业提交到首次产生回答信息之间的时间。
二、主要的调度算法 下面以表所示的进程集作为范例讨论不同的调度策略。 到达时间:进程或作业提交时间。 服务时间:进程要求服务的时间,或完成作业所需的时间。
一、FCFS调度策略(或先进先出)
FCFS策略更适合于长进程。例:
注:周转时间=完成时间—到达时间 tq/ts :带权周转时间=周转时间/服务时间
(1)进程C的等待标准化时间是不能容忍的。它位于系统的总时间是它所需服务时间的100倍。无论何时,一个长进程到后,一个短进程就会出现较长的等待。 (2)进程D的标准化等待时间尚可容忍,小于2.0。进程D的轮转时间差不多是C的两倍。
总结: FCFS(First Come First Served)即先来先服务,故它的本质是非抢占的。它简单易行,但调度性能较差,有可能使短的、重要的或紧迫的作业等进程长期等待,其实现过程容易,可采用FIFO队列管理。