处理机调度与死锁

1.处理机调度的层次和调度算法的目标

       (1)处理机调度分为三个层次:高级调度、低级调度、中级调度。

              高级调度:又称为作业调度,它的调度的对象是作业。主要功能是根据某种算法,决定将外存上处于后备队列中的哪个作业放入内存,为他们创建进程、分配资源、并放入就绪队列。主要用于多道批处理系统。

              低级调度:又称进程调度,其所调度的对象是进程。主要功能是:根据某种算法决定就绪队列中的哪个进程获得处理机,并由分派程序将处理机分配给选中的进程。进程调度是最基本的一种调度。

              中级调度:又称内存调度。主要目的是提高内存利用率和系统吞吐量。系统会将暂时不能运行的进程,调到外存等待,此时进程的状态是挂起状态。当进程具备了运行条件且内存有空间时,有中级调度决定把外存上那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态。

       上述三种调度中,进程调度运行频率最高;作业调度往往发生再一批作业已运行完毕并退出系统,又需要重新调入一批作业进入内存时,周期较长;内存调度则介于两者之间。

       (2)处理机调度算法的目标

              处理机调度算法的共同目标:资源利用率、公平性、平衡性、策略强制执行

              批处理系统的目标:平均周转时间短、系统吞吐量高、处理机利用率高

              分时系统的目标:响应时间快、均衡性

              实时系统的目标:截止时间的保证、可预测性

 

2.作业与作业调度

       (1)批处理系统的作业

              作业:不仅包含了通常的程序和数据,还有一份作业说明书,系统根据该说明书来对程序的运行进行控制。

              作业步:把每一个加工步骤叫做一个作业步,往往是上一个作业步的输出作为下一个作业步的输入。例如:一个典型的作业可分为:“编译”作业步,“连接装配”作业步和“运行”作业步

              作业控制块:包含作业标识、用户名称、用户账号、作业类型、作业状态、调度信息、资源需求、资源使用情况等。

       作业运行的三个阶段和三个状态:作业从进入系统到运行结束,通常经历收容、运行和完成三个阶段。相应的也就有“后备状态”,“运行状态”,“完成状态”。

       (2)作业调度的主要任务

              根据作业控制块中的信息,检查系统中的资源是否满足作业对资源的需求,按照一定的算法,从外存的后备队列中选取某些作业调度到内存中,为它们创建进程,分配资源,然后将创建的进程加到就绪队列等待调度。

       (3)作业调度算法

              先来先服务调度算法(FCFS):该算法既可用于作业调度,也可用于进程调度。该算法会优先考虑在系统中等待时间最长的作业。

              短作业优先(SJF):由于在实际情况中,短进程占有很大的比例,为了能使它们能比长作业优先执行,而产生了短作业优先调度算法。作业越短,其优先级越高。SJF算法分别可用于作业调度和进程调度。但它同样存在缺点:①必须预知作业的运行时间。②对长作业非常不利,可能出现饥饿现象。③在采用SJF算法时,人机交互无法实现。④该算法没考虑作业的紧迫程度。

              优先级调度算法(PSA):上述两种算法无法反映作业的紧迫程度。而在优先级算法中,则基于作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度的。同样该算法既可以作为作业调度算法,也可以作为进程调度算法。

              高响应比优先调度算法(HRRN):该算法既考虑了作业的等待时间,也考虑作业运行时间的调度算法,因此既照顾了短作业,又不至于是长作业饥饿,从而改善了处理机的调度性能。它的优先级可表示为:

                                  优先权=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间

              在利用高响应比算法时,每次要进行调度之前,都要先做响应比的计算,显然会增加系统开销。

 

3.进程调度

       (1)在以下几种情况下进程无法切换:

              在处理中断过程中;在操作系统内核程序临界区;其他需要完全屏蔽中断的原子操作过程中。

       应该进行进程调度与切换的情况有:

              当发生引起调度条件,且当前进程无法继续运行下去时,可以马上进行调度与切换。

              当中断处理结束或自陷处理结束后,返回被中断进程的用户态程序执行现场前,若置上请求调度标志,即可马上进行进程调度与切换。

       (2)进程有以下两种进程调度方式:非剥夺调度方式,剥夺调度方式。采用剥夺调度方式需要遵循一定的原则,主要有:优先权、短进程优先和时间片原则等。

       (3)调度的基本准则:

              CPU利用率、系统吞吐量、周转时间、等待时间、响应时间。

              周转时间:从作业提交到作业完成所经历的时间,包括作业等待、在就绪队列中排队、在处理机上运行以及输入/输出操作所花费时间的总和。

              周转时间=作业完成时间-作业提交时间

              平均周转时间=(作业1的周转时间+作业2的周转时间+...+作业n的时间周期)/n

              带权周转时间=作业周转时间/作业实际运行时间       带权周转时间>=1

              平均带权周转时间=(作业1的带权周转时间+...+作业n的带权周转时间)/n

       (4)调度算法

              上述介绍的FCFS调度算法、SJF调度算法、优先级调度算法都是通用于进程调度的

              时间片轮转调度算法:系统将所有就绪进程按到达时间的先后次序拍成一个队列,进程总是选择就绪队列中的第一个进程,也就是FCFS算法,但只能运行一个时间片,若进程还未完成则被剥夺处理机,重新在就绪队列排队。

              多级反馈队列调度算法:是时间片轮转调度算法和优先级调度算法的综合和发展。设置多个就绪队列,为每个队列赋予不同的优先级,第一级队列的优先级最高,以后的逐级下降。赋予各个队列中进程执行时间片的大小各不相同,优先级越高,时间片越短。每个队列采用FCFS算法。若在一个时间片内未完成则调度程序会将其转入二级队列。按照队列优先级调度,仅在一级队列空闲时才会调度第二队列的进程运行,以此类推。

 

4.死锁概述

       死锁的起因通常源于多个进程对资源的抢夺。如果在一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的进程,那么该组进程是死锁的。

       产生死锁的必要条件:互斥条件、请求和保持条件、不可抢占条件、循环等待条件。

              互斥条件:在一段时间内,某资源只能被一个进程占用。

              请求和保持条件:进程已经保持了一个资源,但又提出了新的资源请求,而该资源被其他进程占用,此时,进程被阻塞,但对自己保持的资源不放。

              不可抢占条件:进程在已获得的资源未使用完之前不能被抢断,只能在进程使用完由自己释放。

              循环等待条件:在发生死锁时,必然存在一个进程——资源的循环链。

       处理死锁的四种方法:

              预防死锁:设置某昔日限制条件,破坏产生死锁的四条件一个或几个来预防产生死锁

              避免死锁:在资源动态分配的过程中,用某种方法防止系统进入不安全状态

              检测死锁:允许进程在运行时发生死锁,但可通过检测机构及时检测出死锁的发生,然后采取措施,把进程从死锁中解脱出来。

               解除死锁:当检测到死锁发生后,采取相应措施,把进程从死锁状态中解脱出来。常用的方法时撤销一些进程,回收它们的资源,将资源分配给已处于阻塞状态的进程。

 

5.预防死锁

       破坏“请求和保持”条件:有两种协议,第一种:在所有进程开始运行之前,一次性申请其在运行过程中所需的全部资源。第二种:允许一个进程只获得运行初期的资源,便开始运行。进程运行过程中逐步释放自己用完的全部资源,然后再请求新的所需资源。

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

       破坏“循环等待”条件:规定每个进程必须按照序号递增的顺序请求资源。假如某进程已请求到一些序号较高的资源,现需要申请一个较低序号的资源,则需要释放所有具有相同或更高序号的资源后,才能申请序号低的资源,所有该种协议不可能出现环路。

 

6.避免死锁

       当系统进入不安全状态时有可能进入死锁状态,只要系统处于安全状态,则不会发生死锁。

       可以利用银行家算法避免发生死锁。

7.死锁的检测与解除

       (1)死锁的检测

              为了能对系统中是否已经发生死锁进行检测,系统必须保存有关资源的请求和分配信息;提供一种算法,它利用这些信息检测是否发生死锁。

              分配图:该图由一组结点N和一组边E所组成的一个对偶,那N分为两个互斥的子集,一组进程结点P和一组资源结点R。资源结点指向进程结点则表示资源分配边,反之称为资源请求边。

              死锁定理:在资源分配图中,找出一个既不阻塞又非独立的进程结点。在顺利的情况下获得资源直到运行完成,释放所有资源,变成一个孤立的结点。再使其他进程依次如第一个进程一样,若最后能消去所有的边则说明资源分配图可以完全简化,否则则是不能完全简化的。当且仅当资源分配图是不可完全简化的是死锁状态的充分条件。

              死锁的解除:常采用的两种解除死锁的方法是①抢占资源②终止进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值