进程调度的因素
引起进程调度的原因有:进程结束;时间片用完;被抢占;调用原语被阻塞;I/O请求
某进程被唤醒后立即进入运行,我们就说这个系统采用的是抢占调度方法,对吗?为什么?
不对,抢占调度方法定义:允许调度程序根据某种原则,将已分配给该进程的处理机,重新分配给另一进程,由题不能判断CPU是否处于空闲状态
高级调度和低级调度的主要任务是什么?为什么引入中级调度?
(1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中
(2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU
(3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态
何谓死锁?产生死锁的原因和必要条件是什么?
何谓死锁:
死锁是指多个进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,当进程处于这种状态时,若无外力作用,它们都将无法再向前推进。
产生死锁的原因:
(1)竞争资源
(2) 进程间推进顺序不当
产生死锁的必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
在银行家算法中,若出现下面的资源分配情况:
试问: (1)该状态是否安全? (2)当进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?
【答案】
解:(1)利用银行家算法对此时刻的资源分配情况进行分析,可得此时刻的安全性分析情况:
Work Need Allocation Work+Allocation Finish
P0 1622 0012 0032 1654 true
P3 1654 0652 0332 1986 true
P4 1986 0656 0014 19910 true
P1 19910 1750 1000 29910 true
P2 29910 2356 1 3 5 4 3 12 14 14 true
从上述分析中可以看出,此时存在一个安全序列{P0,P3,P4,P1,P2},故该状态是安全的。
(2)P2提出请求Request2(1,2,2,2),按银行家算法进行检查:
·Request2(1,2,2,2) ≤Need(2,3,5,6)
·Request2(1,2,2,2) ≤Available(1,6,2,2)
·试分配并修改相应数据结构,资源分配情况如下:
Allocation Need Available
P0 0032 0012 0400
P1 1000 1750
P2 2576 1134
P3 0332 0652
P4 0014 0656
再利用安全性算法检查系统是否安全,可知系统资源Available(0,4,0,0)已不能满足任何进程的需要,故系统进入不安全状态,此时系统不能将资源分配给P2
系统中有五个进程P1,P2,P3,P4,P5,如表。规定进程的优先数越小优先级越高。试描述在采用下述内种调度算法时,各个进程运行过程,并计算采用每种算法的进程平均周转时间。假设忽略进程的调度时间。
(1)先来先服务调度算法
(2)短进程优先调度算法
(3)剥夺式优先级调度算法
(4)非剥夺式优先级调度算法
【答案】