操作系统作业答案Word格式.doc

上传人:b****2 文档编号:14180525 上传时间:2022-10-19 格式:DOC 页数:8 大小:846KB
下载 相关 举报
操作系统作业答案Word格式.doc_第1页
第1页 / 共8页
操作系统作业答案Word格式.doc_第2页
第2页 / 共8页
操作系统作业答案Word格式.doc_第3页
第3页 / 共8页
操作系统作业答案Word格式.doc_第4页
第4页 / 共8页
操作系统作业答案Word格式.doc_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

操作系统作业答案Word格式.doc

《操作系统作业答案Word格式.doc》由会员分享,可在线阅读,更多相关《操作系统作业答案Word格式.doc(8页珍藏版)》请在冰豆网上搜索。

操作系统作业答案Word格式.doc

进程在信号量上执行V操作后,不会对自己有任何影响,但当信号量的值不大于0时,需要唤醒在该信号量上所对应的等待队列中的进程。

2、设课程的前驱、后继关系如下,若每修一门课程看作进程Px(x∈1..6)试用P、V操作算法描述这种前驱与后继关系。

答:

Semaphore:

S1:

=S2:

=S3:

=S4:

=S5:

=S6:

=0;

BeginCobeginP1、P2、P3、P4、P5、P6coend;

end.

P1() P2() P3()

Begin begin begin

修计算机导论;

P(S1);

P(S2);

V(S1);

修高级语言程序设计修计算机组成原理;

V(S2);

V(S3) V(S4);

End;

End;

End;

P4()P5() P6()

Begin begin begin

P(S3);

P(S4);

P(S5);

修数据结构;

修86汇编语言;

P(S6);

V(S5);

V(S6);

修操作系统;

End;

习题四

1、有三个进程R、W1、W2,进程R从输入设备上读数据送缓冲区B,若是奇数由W1进程从B取数输出;

若是偶数则由W2进程从B取数输出。

设缓冲区B只有一个单元,试用信号量机制设计实现算法。

1、se,sf1,sf2:

semaphore;

se:

=1;

sf1:

=sf2:

=0;

R()、W1()、W2()并发执行

ProcessRprocessW1processW2

repeatrepeatrepeat

读数;

P(sf1);

P(sf2);

P(se);

从B中取数;

从B中取数;

送数到B;

V(se);

V(se);

ifBmod2!

=0thenuntilfalseuntilfalse

V(sf1);

else

V(sf2);

untilfalse

2、设有一台计算机,挂有一台输入机和一台打印机。

现在从输入机上把数据输入到缓冲区B中,处理程序处理后再把结果送到缓冲区B中,(设B只能放1个数据)然后在打印机上输出。

问:

(1)系统可设哪些进程来完成这一任务?

(2)这些进程之间有什么样的制约关系?

(3)用PV操作写出这些进程的同步算法.

(1)输入进程、处理进程、输出进程

(2)处理进程不能在输入进程之前执行、输出进程不能在处理进程之前执行;

输入进程在未得到处理进程、输出进程的消息前不能运行。

(3)输入()、处理()、输出()进程并发执行

Semaphore:

s1、s2、s3;

=1;

S2:

process输入()process处理()process输出()

L1:

读数L2:

P(S2)L3:

P(S3)

P(S1)从B取数处理后再送B从B取数输出

送数到BV(S3)V(S1)

V(S2)GotoL2GotoL3

GotoL1

习题五

1、设系统中有M个资源,N个进程,每个进程都要求K个资源;

若M=5、N=5、K=2,问:

(1)如何分配会导致死锁?

(2)要不死锁应该如何分配?

•如果对每个进程平均分配1个资源,则系统中的可用资源为0,而每个进程都还需要1个资源,才能向前推进;

因此、系统发生死锁。

•只要保证有1个进程能获得2个资源,则它在有限的时间内就可以运行完成并释放资源,这样系统就不会死锁。

例如、先给4个进程各分配1个资源,让它们先运行,通过安全性算法测试可以知道第5个进程的资源申请将被拒绝;

再把最后1个资源分配给这4个进程中的1个即可。

2、假设甲、乙、丙三个并发进程间的PV操作同步算法如下所示,信号量S1,S2,S3的初值都为1,问这些算法在什么情况下发生死锁?

如何防止死锁?

甲乙丙

...

L1:

P(S1)L2:

P(S2)L3:

P(S3)

P(S2)P(S3)P(S1)

V(S2)V(S3)V(S1)

V(S1)V(S2)V(S3)

gotoL1gotoL2gotoL3

甲P(S1)后暂停、乙P(S2)后暂停、丙P(S3)后暂停

采用按序分配,丙改为P(S1)、P(S3)。

也可以改甲或乙进程的P、V操作次序,以限制进程的并发执行。

习题六

1.设有5个哲学家,共享一张放有五把椅子的桌子,每人分得一把椅子。

但是,桌子上总共只有5支筷子,在每人两边分开各放一支。

哲学家们在肚子饥饿时才试图分两次从两边拾起筷子就餐。

条件:

(1)只有拿到两支筷子时,哲学家才能吃饭。

(2)如果筷子已在他人手上,则该哲学家必须等待到他人吃完之后才能拿到筷子。

(3)任一哲学家在自己未拿到两支筷子吃饭之前,决不放下自己手中的筷子。

试:

(1) 描述一个保证不会出现两个邻座同时要求吃饭的通信算法。

(2) 描述一个既没有两邻座同时吃饭,又没有人饿死(永远拿不到筷子)的算法。

(3)在什么情况下,5个哲学家全部吃不上饭?

使用非对称解决–即奇数号的哲学家先拿起他左边的筷子,接着拿起他右边的筷子,而偶数号的哲学家先拿起他右边的筷子,接着再拿他左边的筷子。

(1)设信号量c[0]~c[4],初始值均为1,分别表示i号筷子被拿(i=0,1,2,3,4),

send(i):

第i个哲学家要吃饭

begin

think;

P(c[i]);

P(c[i+1mod5]);

eat;

V(c[i+1mod5]);

V(c[i]);

该过程能保证两邻座不同时吃饭,但会出现5个哲学家一人拿一只筷子,谁也吃不上饭的死锁情况

(2)解决的思路:

让奇数号的哲学家先取右手边的筷子,让偶数号的哲学家先取左手边的筷子.这样,任何一个哲学家拿到一只筷子之后,就已经阻止了他邻座的一个哲学家吃饭的企图,除非某个哲学家一直吃下去,否则不会有人会饿死.

第i个哲学家要吃饭

Begin

Ifimod2==0then{

P(c[i]);

P(c[i+1]mod5))

V(c[i];

c[i+1mod5])}

else{

P(c[i+1mod5])

P(c[i])

Eat

V(c[i+1mod5])

V(c[i])}

End

(3)

非对称解决,并发主程序略

Programdiningphilosophers;

Varchopstick:

array[0..4]ofsemaphore(:

=1),i:

integer;

Procedurephilosopher(i:

integer);

Repeat

Think;

If(imod2!

=0)then

Begin

P(chopstick[i]);

P(chopstick[(i+1)mod5]);

吃面;

V(chopstick[(i+1)mod5]);

V(chopstick[i]);

End

Else

P(chopstick[(i+1)mod5]);

P(chopstick[i]);

Forever

习题七

1、某程序在虚拟(逻辑)地址100处有一条取数指令LOAD1,500而500单元存放数据51888。

若程序分配

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1