P4 0 0 2 4 2 0 利用安全性检查算法检查,可知可用资源向量(1, 1, 1)已不能满足任何进程的需求,故若分配给P1,系统将进入不安全状态,因此此时不能将资源分配给P1。
若此时P2发出资源请求Request2 (1, 0, 1),按银行家算法进行检查: Request2 (1, 0, 1)≤Need2 (2, 0, 2) Request2 (1, 0, 1)≤Available (2, 1, 2)
试分配并修改相应的数据结构,资源分配情况如下: 进程 P1 P2 P3 P4
1 5 2 0
Allocation
0 1 1 0
0 2 1 2
2 1 1 4
Need 2 0 0 2
2 1 3 0
1
Available 1
1
利用安全性检查算法,可得此时刻的安全性分析情况如下: 进程 P2 P3 P4 P1
Work 1 1 1 6 2 3 8 3 4 8 3 6
Need 1 0 1 1 0 3 4 2 0 2 2 2
Allocation 5 1 2 2 1 1 0 0 2 1 0 0
Work+Allocation 6 2 3 8 3 4 8 3 6 9 3 6
Finish true true true true
从上面分析可知,存在一个安全序列{P2, P3, P4, P1},故该状态时安全的,可以立即将P2所申请的资源分配给它。
(3) 如果(2)中两个请求立即得到满足后,系统此时并没有立即进入死锁状态,因为此时所有进程没有提
出新的资源请求,全部进程都没有因资源请求没有得到满足而进入阻塞状态。只有当进程提出新的资源请求且全部进程(指P1-P4)都进入阻塞状态时,系统才处于死锁状态。 12.在单处理机系统中,有多个进程运行:一些以计算为主,一些以输入/输出为主。如何赋予进程占有处理
器的优先级才能提高系统的效率,使系统的平均周转时间减少?
答:若计算型进程的优先级高于I/O型进程的优先级,计算型进程一旦占有了CPU便忙于计算,使I/O型进程得不到运行的机会,导致I/O设备空闲,达不到CPU与I/O操作并行的目的;多个I/O型进程在系统中停留时间增加,系统的平均周转时间增加。
若I/O型进程的优先级高于计算型进程的优先级,当它完成一项I/O操作后,便能立即获得CPU,为下次I/O作准备工作,并启动外设。当设备被启动后,它便主动交出CPU,由系统将CPU分配给计算型进程,从而使CPU与I/O设备并行操作,获得较好的运行效率。
因此,应赋予以I/O为主的进程更高的优先级。
11