搜索
您的当前位置:首页正文

《操作系统》试题库-综合题

来源:抵帆知识网
1、 设有三个进程,它们的提交时间及运行时间如下表,若采用短进程优先调度策略,试给出进程串

行运行时的调度次序及平均周转时间。 作业 提交时间 运行时间 J1 0 4 J2 2 8 J3 3 5 答:

进程 提交时间 开始时间 完成时间 周转时间 J1 0 0 4 4 J2 2 9 17 15 J3 3 4 9 6 平均周转时间=(4+15+6)/3=25/3=8.33 各进程的调度次序: J1,J3,J2

2、 设有三道作业,它们的提交时间及运行时间如下表,若采用短作业优先调度策略,试给出作业单

道串行运行时的调度次序及平均周转时间。 (8分)

作 业 提交时间(单位:基本时间单位) 运行时间(单位:基本时间单位) J1 J2 J3

作业 提交时间 开始时间 完成时间 周转时间 J1 0 0 7 7 J2 2 7 11 4 J3 3 11 16 13

平均周转时间=(7+9+13)/3=29/3=9.67 (4分) 各作业的调度次序:

0 2 3 7 4 5 (3分)

3、 假定在单CPU条件下,有A,B,C,D四个作业依次到达(后面的作业依次比前一作业迟到一个时

间单位)。四个作业分别需要运行11,6,2和1个时间单位,如果系统采用FCFS的调度算法,请计算: (1) (2) (3) (4) 解答:

作业 作业到达时间 运行时间 完成时间 周转时间 带权周转时间 A 0 11 11 11 1 B 1 6 17 16 2.67 C 2 2 19 17 8.5 D 3 1 20 17 17

平均周转时间T= 15.25 平均带权周转时间 W= 7.29

4、 假设在单处理机上有五个(1,2,3,4,5)进程争夺运行,其运行时间分别为10、1、2、1、5(秒),

其优先级分别为4、1、3、5、2;在某时刻这五个进程按照1,2,3,4,5的顺序同时到达。试回答: (1) 给出这些进程分别使用轮转法(时间片为2秒)、非剥夺优先级调度法时的运行进度表。 (2) 在上述各算法的调度下每个进程的周转时间和等待时间为多少? 解答:

(1) 轮转法运行进度表:

P1 P2 P3 p4 P5 P1 P5 P1 P5 P1

0 2 3 5 6 8 10 12 14 15 19

非剥夺优先级调度法运行进度表: 0 1 11 13 18 19

(2) 轮转法周转时间和等待时间: 作业 1 2

各作业的周转时间 系统此时的平均周转时间; 各作业的带权周转时间; 系统此时的平均带权周转时间;

P4 P1 P3 P5 P2

运行时间(小时) 周转时间(小时) 10 1 19 3

等待时间(小时) 0+6+2+1=9 2 2

3 4 5 2 1 5 5 6 15 3 5 6+2+2=10 非剥夺优先级调度法周转时间和等待时间: 作业 优先级 1 2 3 4 5 4 1 3 5 2 调度顺序 2 5 3 1 4 运行时间(小时) 周转时间(小时) 10 1 2 1 5 11 19 13 1 18 等待时间(小时) 1 18 11 0 13

5、 画出进程的五种状态变化图,并说明状态变化原因。

答:变化原因在图上说明。

6、 某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外

的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题: (1)用PV(或wait和signal)操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。

(2)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。

(3)根据所定义的信号量,把应执行的PV(或wait和signal)操作填入下述括号中,以保证进程能够正确地并发执行。

Buyi(I=1,2,……) { Do{

进入售票厅; ( ) 购票;

( )

退出; }while(1)

} 解答:

(1)定义一信号量S,初始值为20。 (1分) 意义:

S>0 S的值表示可继续进入售票厅的人数 (1分) S=0 表示售票厅中已有20名顾客(购票者) (1分) S<0 |S|的值为等待进入售票厅的人数 (1分) (2) S的最大值为20 (1分) S的最小值为20-n (1分) (3) 上框为P(S) (1分) 下框为V(S) (1分)

注:信号量的符号可不同(如写成t),但使用时应一致(即上述的s全应改成t)。

7、 现为某临界资源设一把锁w,当w=1时,表示关锁,w=0时,表示锁已打开,试写出开锁和关锁

的原语,并说明如何利用它们去控制对该临界资源的互斥访问?(7分) ① 开锁原语unlock(w)如下: unlock(w):w:=0 关锁原语lock(w)如下: Lock(w):

L: if w=1 then go to L e else w:=1; (4分)

② 可设临界段cs放在两者之间来实现互斥,即 Lock(w); cs;

unlock(w) (3分)

8、 有两个用户进程A和B,在运行过程中都要使用系统中的一台打印机输出计算结果。

(1) 试说明A、B两进程之间存在什么样的制约关系?

(2) 为保证这两个进程能正确地打印出各自的结果,请用信号量和P、V操作写出各自的有关申

请、使用打印机的代码。要求给出信号量的含义和初值。

解答:(1) A、B两进程之间存在互斥的制约关系。因为打印机属于临界资源,必须一个进程使用

完之后另一个进程才能使用。(2分)

(2)mutex:用于互斥的信号量,初值为1。(2分) 进程A 进程B ... ... P(mutex) P(mutex) 申请打印机 申请打印机 使用打印机 使用打印机 V(mutex) V(mutex) ... ...

9、 进程process_A 进行计算后通过进程process_B输出,这两个并发进程的程序如下:int Count=0; process_A() { do

{ Count = Count + 10 }while(1) }

process_B() { do

{ print(Count) Count =0; }while(1) } 请回答:

(1) 指出这两个并发进程的临界区。

(2) 指出它们并发执行时可能出现的与时间有关的错误。 (3) 用信号量机制进行管理,写出它们能正确并发执行的程序。 解答:

(1) 临界区为process_A():Count = Count + 10, process_B():print(Count) Count =0; (2)错误顺序(不是唯一的) ① print(Count)

② Count = Count + 10 ③ Count =0; (3)实现同步

信号量:S1=1(含义不清),S2=0; 信号量:mutex=1; int Count=0; process_A() { do{ wait(S1) wait(mutex);

Count = Count + 10 Signal(mutex) Signal(S2) }while(1) }

process_B() { do{ wait(S2) wait(mutex);

print(Count) Count =0;

Signal(mutex) Signal(S1) }while(1) } 10、

有一个阅览室,共有100个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问:(?) (1)为描述读者的动作,应编写几个程序,设置几个进程? (2)试用PV操作描述读者进程之间的同步关系。

答:读者的动作有两个,一是填表进入阅览室,这时要考虑阅览室里是否有座位;一是读者阅读完毕,离开阅览室,这时的操作要考虑阅览室里是否有读者。读者在阅览室读书时,由于没有引起资源的变动,不算动作变化。

算法的信号量有三个:seats——表示阅览室是否有座位(初值为100,代表阅览室的空座位数);readers——表示阅览室里的读者数,初值为0;用于互斥的mutex,初值为1。 读者进入阅览室的动作描述getin: while(TRUE){

P (seats); /*没有座位则离开*/ P(mutex) /*进入临界区*/

填写登记表; 进入阅览室读书;

V(mutex) /*离开临界区*/ V(readers) }

读者离开阅览室的动作描述getout: while(TRUE){

P(readers) /*阅览室是否有人读书*/ P(mutex) /*进入临界区*/ 消掉登记;

离开阅览室;

V(mutex) /*离开临界区*/ V(seats) /*释放一个座位资源*/ } 11、

假定进程A负责为用户作业分配打印机,进程B负责释放打印机,系统中设立一个打印机分配表如下,由各个进程共用。 打印机编号 0 1 2 分配标志 0 0 0 用户名 用户定义的设备名 试用P,V操作实现两进程对分配表的互斥操作。 解答: 设一个互斥信号量mutex,其初值为1。

P1(分配进程)和P2(释放进程)的临界区代码可按下述形式组成:

P(mutex); P(mutex); 分配打印机; 释放打印机; (读写分配表) (读写分配表) V(mutex); V(mutex);

12、

设系统中只有一台打印机,有二个用户的程序在执行过程中都要使用打印机输出计算结果。设每个用户程序对应一个进程。问:这二个进程间有什么样的制约关系?试用P,V操作写出这二

个进程使用打印机的算法。

解答: 因为打印机是一种临界资源,所以这二个进程只能互斥地使用这台打印机。即一个用户的计算结果打印完后,另一个用户再打印,因此是互斥关系。

设两个进程分别为A和B,设一个互斥信号量mutex,其初值为1,其算法如下: A进程 B进程

P(mutex); P(mutex); 使用打印机; 使用打印机; V(mutex); V(mutex);

13、

设P1,P2两进程共用一个缓冲区F,P1向F写入信息,P2则从F中读出信息。问这两个进程间是什么样的制约关系?试用P,V操作写出这两个进程读写缓冲区的算法。

解答: A,B两进程间是同步关系,即A进程向Q写满信息后,B进程才能从Q中取走信息。为此,设立两个信号量:

empty:表示缓冲区Q为空(0为不空,1为空),初值为1, full: 表示缓冲区Q为满(0为不满,1为满),初值为0。 算法如下:

A进程: B进程: while(true){ while(true){ P(empty); P(full);

向Q写入信息; 从Q中读出信息; V(full); V(empty); } }

注:若信号量初值不同,算法有些不同。如若empty和full的初值均为0,则A进程的算法中P(empty)语句应放在V(full)之后,即 解法不惟一 。 14、

设A1,A2为两个并发进程,它们共享一临界资源,其临界区代码分别为CS1,CS2。问这两个进程间是什么样的制约关系?试用P,V操作写出这两个进程共享临界资源的算法。

解答: 因为A,B两个进程是并发的,它们共享一个临界资源,所以两个进程间应互斥地进入临界区。

设立一个互斥信号量mutex,其初值为1。具体算法如下:

A进程: B进程:

P(mutex); P(mutex); 临界区代码Csa; 临界区代码Csb; V(mutex); V(mutex); 15、

设有一台计算机,有一条I/O通道,接一台卡片输入机,卡片机把一叠卡片逐一输入到缓冲区Q1中,计算机从缓冲区Q1中取出数据再进行加工处理。假设系统中设一个输入进程Pr和一个计算进程Pc来完成这个任务。问这两个进程间有什么样的制约关系?请用P,V操作写出这些进程的算法。

解答: 进程Pr受Pc进程的影响,B1放满信息后,Pr进程要等待,等Pc进程将其中全部信息取走,才能继续读入信息;同样地,Pc进程受Pr进程的约束,B1中信息放满后Pc进程才能从中取走信息。因此,两者之间是同步制约关系。

设两个信号量:B1full──缓冲区B1满,初值为0; B1empty──缓冲区B1空,初值为1。 算法如下:

Pr进程: Pc进程:

while(true){ while(true){ P(B1empty); P(B1full); 卡片信息写入缓冲区; 从B1中取出信息; V(B1full); V(B1empty); } }

注:若B1fullt 和B1empty的初值均为0,这时进程Pr有所不同,即,P(B1empty);应放在V(B1full)之后。也即解法不惟一 。 16、

多个进程共享一个文件,其中只读文件的进程称为读者,只写文件的进程称为写者。读者可以同时读,但写者只能独立写。下面的同步算法是用P、V操作写出的,并且它对写者优先,即一旦有写者到达,后续的读者必须等待。(8分)

问题:1)、在上述算法的空白处填上正确的语句,使得该算法完整。

2)、该算法有可能会出现什么问题? 算法如下:

int rmutex=1, wmutex=1,count=0(正在读的读者的个数),s=1; main() {

parbegin

reader(); writer(); parend; } reader() {

while(1) {

__(1)__; __(2)__;

if (count==1) p(wmutex); count++; __(3)__; __(4)__; 读文件; p(rmutex); count--;

if (count==0) __(5)__; v(rmutex); } } writer() {

while(1) { p(s);

p(wmutex);

写文件; v(wmutex);

v(s);

} }

答:1)问题1: (1)___p(s)____ (2)___p(rmutex)___

(3)____v(rmutex)_____ (4)____v(s)______ (5)____v(wmutex)____ 2)问题2:如果连续出现新的写者进程,则可能导致读者进程饿死。 17、

指出下列哲学家就餐问题的算法在什么情况下会导致死锁,并改进此算法,使它不会产生死

10

锁。 算法描述:

五个哲学家在一张圆桌上进行思考和吃饭。哲学家思考时,并不影响他人。只有当他吃饭时,他才试图拿起左右两根筷子(一根一根的拿起)。如果筷子已在他人手上,则需等待。只有当他同时拿起左右两根筷子时,才可以吃饭。如图7-1所示:

程序描述为:(第i个哲学家,i=0,1,2,3,4)

Var chopstick: array[0..4] of semaphore; /* 各信号量初值均为1*/ Repeat

P(chopstick[i]); /* P操作,拿左筷子*/

P(chopstick[i+1 mod 5]); /* P操作,拿右筷子*/ Eat();/*吃饭*/

V(chopstick[i]); /*V操作,放下左筷子*/

V(chopstick[i+1 mod 5]); /* V操作,放下右筷子*/ 图7.1 Think();/*思考*/

Until false;

答:1)、可能导致死锁的情况:每位哲学家都拿了左筷子,而在等待右筷子。即每位哲学家进程都只执行了语句:P(chopstick[i])。

2)、改进:编号为双数的哲学家先拿左筷子,而单数的先拿右筷子。程序为: Repeat

if (i mod 2 = 0) { P(chopstick[i]); P(chopstick[i+1 mod 5]); } else { P(chopstick[i+1 mod 5]); P(chopstick[i]); } Eat(); V(chopstick[i]); V(chopstick[i+1 mod 5]); Think(); Until false;

18、

简述信号量的定义和作用。P,V操作原语是如何定义的?

解答: 信号量一般是由两个成员组成的数据结构,其中一个成员是整型变量,表示该信号量的值,它是与相应资源的使用情况有关的;另一个是指向PCB的指针。当多个进程都等待同一信号量时,它们就排成一个队列,由信号量的指针指出该队列的头。信号量通常可以简单反映出相应资源的使用情况,它与P,V操作原语一起使用可实现进程的同步与互斥。 P,V操作原语的定义:

P(S):顺序执行下述两个动作:

① 信号量S的值减1,即S=S-1;

② 如果S≥0,则该进程继续执行,如果S<0,则把该进程的状态置为阻塞态,

11

把相应的PCB连入该信号队列的末尾,并放弃处理机,进行等待。(直到有其它进程在S上执行V操作,把它释放出来为止。)

V(S):顺序执行下述两个动作:

① 信号量S的值加1,即S=S+1;

③ 如果S>0,则该进程继续执行,如果S≤0,则释放信号量队列上的第一个

PCB(即信号量指针所指向的PCB)所对应的进程(把阻塞态改为就绪态),执行V操作态的进程继续执行。

19、

某虚拟存储器的用户编程空间共32KB,每个页面大小为1K,内存为16KB。假定某时刻一用

页号 0 1 2 3 物理块号 5 10 4 7 10

户页表中已调入内存的页面的页号和物理块号的对照表如下:

则逻辑地址0A5C(H)所对应的物理地址是什么?

解答:逻辑地址0A5CH)所对应的二进制表示形式是:0000 1010 0101 1100 ,由于1K=2,下划线部分前的编码为000010,表示该逻辑地址对应的页号为2查页表,得到物理块号是4(十进制),即物理块地址为:0001 0010 0000 0000 ,拼接块内地址0000 0000 0101 1100,得0001 0010 0101 1100,即125C(H)。 20、

某段表内容如下: 段号 0 1 2 3

段首地址 120K 760K 480K 370K 段长度 40K 30K 20K 20K 一逻辑地址为(2,154)的实际物理地址为多少?

答:逻辑地址(2154)表示段号为2,即段首地址为480K,154为单元号,则实际物理地址为480K+154。 21、

(1) 某页式存储系统页表如下,设每页1KB,请写出逻辑地址为8300时所对应的页号和页的系统页表: 页号 块号

地址,以及在内存中对应的物理地址。(请详细写出运算过程)

0 3 1 5 2 6 3 10 4 8 5 7 6 1 7 2 8 4 12

(2)已知如下段表:

段号 基址 长度 0 219 600 1 2300 14 2 90 100 3 1327 580 4 1952 96 在分段存储管理下系统运行时,下列逻辑地址(第一位表示段号,第二位表示段内位移)的物理地址是什么? (a):(1,10) (b):(4,112) 答:

(1)页号P=INT[A/L]=[8300/1024]=8

页内地址d=[A] MOD L=[8300] MOD 1024=108 物理地址 4×1024+108=4024

(2) (a):地址(1,10)的段号为1,查表得基址为2300,段长为14,

物理地址为:2300 + 10 = 2310。

(b):地址(4,112)的段号为4,查表得基址为1952, 段长为96,地址(4,112)的段内位移为112,大于段长96,发生段越界,产生中断。

22、

在页式虚拟存储管理的计算机系统中,运行一个共有8页的作业,且作业在主存中分配到4块主存空间,作业执行时访问页的顺序为6,0,1,2,0,4,3,1,2,6,7,4,2,5,6,请问用FIFO和LRU替换算法时,它们的缺页中断率分别是多少。(要求图示出内存页面变化情况)。 答:(1)、采用FIFO算法: 访问串 驻留集 6 6 是否缺页 0 6 0 1 6 0 1 2 6 0 1 2 0 6 0 1 2 4 4 0 1 2 3 4 3 1 2 1 4 3 1 2 2 4 3 1 2 6 4 3 6 2 7 4 3 6 7 4 4 3 6 7 2 2 3 6 7 5 2 5 6 7 6 2 5 6 7 × × × × × × × × × × 缺页中断率为:10/15=66.67% (2)、采用LRU算法: 访问串 驻留集 6 6

0 6 0 1 6 0 1 2 6 0 1 2 0 6 0 1 2 4 4 0 1 2 3 4 0 3 2 1 4 0 3 1 2 4 2 3 1 6 6 2 3 1 7 6 2 7 1 4 6 2 7 4 2 6 2 7 4 5 5 2 7 4 6 5 2 6 4 13

是否缺页 × × × × × × × × × × × × × 缺页中断率为:13/15=86.67%

教材P156,6题(中南大学出版社)

解答:访问串为:1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 3, 7, 6, 3, 2, 1, 2, 3, 6 (一)、页框数为3时: (1) FIFO算法

1 2 3 4 2 1 5 6 2 1 3 7 6 3 2 1 2 3 6 1 1 1 2 2 3 4 1 5 6 2 1 3 3 7 6 6 2 1 2 2 3 3 4 1 5 6 2 1 3 7 7 6 2 2 1 3 3 4 4 1 5 6 2 1 3 7 6 6 2 1 1 3 6 + + + + + + + + + + + + + + + + 故障数:16 页故障率:16/19 * 100% = 84% (2) LRU(最近最久未用页面)算法

1 2 3 4 2 1 5 6 2 1 3 7 6 3 2 1 2 3 6 1 1 1 2 3 4 2 1 5 6 2 1 3 7 6 3 3 1 2 2 2 3 4 2 1 5 6 2 1 3 7 6 3 2 1 2 3 3 4 2 1 5 6 2 1 3 7 6 3 2 1 2 3 6 + + + + + + + + + + + + + + + 故障数:15 页故障率:15/19 * 100% = 79% (3) OPT算法

1 2 3 4 2 1 5 6 2 1 3 7 6 3 2 1 2 3 6 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 7 7 7 2 2 2 2 2 3 4 4 4 5 6 6 6 6 6 6 6 6 1 1 1 6 + + + + + + + + + + + 故障数:11 页故障率:11/19 * 100% = 58%

23、 画出段页式存储管理系统的地址变换过程图。

14

24、

假定在某移动臂磁盘上,刚刚处理了访问75号柱面的请求,目前正在80号柱面读信息,并且有下述请求序列等待访问磁盘: 试用:(1)电梯调度SCAN算法; (2)最短寻道时间优先SSTF算法; 分别列出实际处理上述请求的次序。

(1)电梯调度算法的处理次序为: 5 8 1 4 3 6 2 7 (得4分) 若写出5 8 (得1分)

若写出5 8 1 4 3 (得2分)

(2)最短寻找时间优先算法的处理次序为: 5 8 6 2 7 1 4 3 (得4分) 若写出5 8 (得1分)

若写出5 8 6 2 7 (得2分)

亦即:前2个对 (得1分) 前5个对 (得2分)

25、

假设一个活动头磁盘有200道, 编号从0-199. 当前磁头正在143道上服务, 并且刚刚完成了125道的请求. 现有如下访盘请求序列(磁道号): 86, 147, 91, 177, 94, 150, 102, 175, 130

试给出采用下列算法后磁头移动的顺序和移动总量(总磁道数). (1). 先来先服务(FCFS)磁盘调度算法. (2). 最短寻道时间优先(SSTF)磁盘调度算法.

(3). 扫描法(SCAN)磁盘调度算法.(假设沿磁头移动方向不再有访问请求时, 磁头沿相反方向移动.)

答案:磁头移动的顺序:

(1)86,147,91,177,94,150,102,175,130

(2)当前磁头在143道上:

147,150,130,102,94,91,86,175,177 (3)当前磁头在143道上,并且刚刚完成125道的请求 147,150,175,177,130,102,94,91,86

15

磁头移动总量(总磁道数):

(1) (143-86)+(147-86)+(147-91)+(177-91)+(177-94)+(150-94)+ (150-102)+ (175-102)+ (175-130)=565

(2) (147-143)+(150-147)+(150-130)+(130-102)+(102-94)+(94-91)+ (91-86)+ (175-86)+ (177-175)=162 (3) (177-143)+ (177-86)=125 26、

文件系统采用多重索引结构搜索文件内容。设块长为512字节,每个块号长3字节,如果不考虑逻辑块号在物理块中所占的位置,分别求二级索引和三级索引时可寻址的文件最大长度。 答:(1)、采用二级索引,可寻址的文件的最大长度:

(512/3)*(512/3)*512=170*170*512=14796800(字节)

(2)、采用三级索引,可寻址的文件的最大长度:

(512/3)*(512/3)*(512/3)*512=170*170*170*512=2515456000(字节) 27、

设当前的工作目录在da1请看图回答

(1) 文件mc.c的绝对路径名 ( /data/da1/ma.c ) 。 (2) 文件mc.c 的相对路径名 ( mc.c ) 。

(3) 要在文件abc原来的权限的基础上增加让所有用户都具有执行权限,请用一条命令完成该功

能 ( chmod a + x abc ) 。

(4) 将文件mc.c在当前目录下复制一份副本,副本的文件名为sss.c输入的命令是( cp mc.c

sss.c ) 。

(5) 在当前目录下,创建子目录sd2命令是 ( mkdir sd2 ) 。

(6) 要让所有用户对文件abc都具有读、写、执行权限。命令是 ( chmod a + rwx abc 或 chmod

777 abc ) 。

(7) 命令$ cat /data/da3/sun.c 的实际的功能是 ( 在屏幕上显示/data/da3子目录下的

sun.c文件的内容) 。

(8) 删除sd1子目录下、扩展名为 BAS 的所有文件, 输入命令是 ( rm sd1/ *.BAS ) 。

16

(9) 删除子目录sd1下的所有文件和子目录, 命令是 ( rm – r /data/da1/sd1 ) 。 (10) 输入命令 $ chmod 754 abc 后,同组用户对文件abc存取权限是 ( 读和执行 ) 、其它用户对文件abc的权限是 ( 只读 ) 。

(11) 删除文件mc.c。 命令是 ( rm mc.c ) 。

(12) 在显示器上以长格式列出da1下的所有目录项 ( ls – l /data/da1 (或 ls –l) ) . 28、

设系统中有三类资源A、B和C,又设系统中有5个进程P1,P2,P3,P4和P5.在T0时刻系最大需求量 A B C

已分配资源量 A B C 1 2 1 3 1 1 4 1 3 3 2 2 1 1 3

剩余资源量

统状态如下:

A B C 2 1 1

P1 8 6 4 P2 4 3 3 P3 10 1 3 P4 3 3 3 P5 5 4 6

(1) 系统是否处于安全状态?如是,则给出进程安全序列.

(2) 如果进程P5申请1个资源类A、1个资源类B和1个资源类C,能否实施分配?为什么? 答案:

(1)利用安全性算法对T0时刻的资源分配情况进行分析,结果如下: Work P4 P2 P1 P3 P5 2 1 1 5 3 3 8 4 4 9 6 5 13 7 8 Need 0 1 1 1 2 2 7 4 3 6 0 0 4 3 3 Allocation 3 2 2 3 1 1 1 2 1 4 1 3 1 1 3 Work + Allocation 5 3 3 8 4 4 9 6 5 13 7 8 14 8 11 Finish true true true true true 系统处于安全状态,安全序列为:P4,P2,P1,P3,P5 (5分) (2)P5发出请求向量Request5(1,1,1),系统按银行家算法进行检查:

1)Request5(1,1,1) <= Need5(4,3,3) 2)Request5(1,1,1)<= Available(2,1,1)

3) 系统先假定可为P5分配资源,并修改Available、 Allocation5、 Need5向量,资源变化情况如表3。 max

Allocation

A B C 1 2 1

Available Need

A B C A B C 1 0 0 7 4 3

A B C P1 8 6 4 P2 4 3 3 P3 10 1 3 P4 3 3 3

3 1 1 1 2 2 4 1 3 6 0 0 3 2 2 0 1 1

17

P5 5 4 6 29、

2 2 4 3 2 2

不能实施分配,因为分配后找不到安全序列,系统将处于不安全状态. (4分)

有三个进程P1,P2和P3并发工作。进程P1需用资源S3和S1;进程P2需用资源S1和S2;

进程P3需用资源S2和S3。回答:

(1)若对资源分配不加限制,会发生什么情况?为什么? (2)为保证进程正确工作,应采用怎样的资源分配策略?为什么? (1)可能会发生死锁 (2分)

例如:进程P1,P2和P3分别获得资源S3,S1和S2后再继续申请资源时都要等待(2分),这是循环等待。(或进程在等待新资源时均不释放已占资源) (2)可有几种答案: A.采用静态分配 (2分)

由于执行前已获得所需的全部资源,故不会出现占有资源又等待别的资源的现象(或不会出现循环等待资源现象)。 (2分) 或B.采用按序分配 (2分) 不会出现循环等待资源现象。(2分) 或C.采用银行家算法 (2分)

因为在分配时,保证了系统处于安全状态。 (2分) 30、

设系统有三种类型的资源,数量为(4,2,2),系统中有进程A,B,C按如下顺序请求资源: 进程A申请(3,2,1) 进程B申请(1,0,1) 进程A申请(0,1,0) 进程C申请(2,0,0)

请你给出一种防止死锁的资源剥夺分配策略,完成上述请求序列,并列出资源分配过程,指明哪些进程需要等待,哪些资源被剥夺。(9分)

① 分配策略为:当进程Pi申请ri类资源时,检查ri中有无可分配的资源:有则分配给Pi;否则将Pi占有的资源全部释放而进入等待状态。(Pi等待原占有的所有资源和新申请的资源) (5分)

② 资源分配过程: 剩余资源 进程A:(3,2,1) (1,0,1) 进程B:(1,0,1) (0,0,0) 进程A:(0,1,0)(不满足) (3,2,1) A的所有资源被剥夺,A处于等待

进程C:(2,0,0) (1,2,1) C,B完成之后,A可完成。 (4分)

18

31、 化简图6的资源分配图,并说明有无进程处于死锁状态。

图6

解答: 化简结果为右图:

右图是不可完全化简的,故有死锁, 死锁的进程为:P1、P3、P4。

32、

设系统状态如下:

Allocation Max Available r1r2r3r4 r1r2r3r4

p1 0012 0012 1520 p2 1000 1750 p3 1354 2356 p4 0632 0652 p5 0014 0656

使用银行家算法回答下列问题:(a)Need的内容是什么?(b)系统是否处于安全状态?(如果进程2请求(0,4,2,0),能否立即得到满足? 答:1)、Need = Max – Allocation,所以得到Need的内容: 0000 0750 1002 0020 0642

c)19

2)、系统是处于安全状态。可以找到一个安全序列(P1,P3,P2,P4,P5)。

3)、可以。因为给进程2分配(0,4,2,0)以后,至少可以找到一个安全序列(P1,P3,P4,P2,P5)。

20

因篇幅问题不能全部显示,请点此查看更多更全内容

Top