操作系统作业答案

发布 2021-05-05 18:04:28 阅读 9443

习题一。

1、举例说明为什么对并发执行的程序不加控制会产生与执行时间有关的错误?

解:程序在并发执行时由于资源是共享的,而且常常资源数少于程序对这些资源的需求数,致使这些并发执行的程序之间因为竞争资源导致存在间接制约关系,这种间接制约使得并发执行的程序具有随机性(异步性),即“执行—暂停—执行”,它们何时启动、何时停止是未知的。例如:

飞机售票系统、堆栈的存数与取数过程等(示例说明略)。

2、程序并发执行为什么会失去顺序执行时的封闭性和可再现性?

解:所谓“封闭性”是指程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响。在程序并发执行时由于资源共享,导致这些资源的状态将由多个程序来改变,又由于存在程序执行的随机性,所以程序的运行失去封闭性。

由于失去了封闭性,也将导致其失去可再现性。即虽然它们执行时的环境和初始条件相同,但得到的结果却可能各不相同。

习题二。1、试用加锁的方法解决飞机售票系统的问题。

例:民航售票系统,n个售票处。

2、用机器指令(testandset)解决飞机售票系统中任一进程的算法。

习题三。1、进程在做p、v操作时对自己和其他进程有何影响?

进程在信号量上执行p操作后,若信号量的值为正,当前进程继续执行;若信号量的值为负,当前进程变为等待状态、放弃处理机,其它进程则有机会获得cpu。

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

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

答:semaphore:s1:=s2:=s3:=s4:=s5:=s6:=0;

begin cobegin p1、p2、p3、p4、p5、p6 coend; end.

p1p2p3()

beginbeginbegin

修计算机导论p(s1p(s2);

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

v(s2v(s3v(s4);

endendend;

p4p5p6()

beginbeginbegin

p(s3p(s4p(s5);

修数据结构修86汇编语言; p(s6);

v(s5v(s6修操作系统;

endendend;

习题四。1、有三个进程 r、w1、w2,进程 r 从输入设备上读数据送缓冲区 b,若是奇数由 w1 进程从 b 取数输出;若是偶数则由 w2 进程从 b 取数输出。设缓冲区 b 只有一个单元,试用信号量机制设计实现算法。

1、se,sf1,sf2:semaphore;

se:=1;sf1:=sf2:=0;

r()、w1()、w2()并发执行。

process rprocess w1process w2

repeatrepeatrepeat

读数p(sf1p(sf2

p(se从b中取数从b中取数;

送数到bv(sev(se);

if b mod 2!=0 thenuntil falseuntil false

v(sf1);

elsev(sf2);

until false

2、设有一台计算机,挂有一台输入机和一台打印机。现在从输入机上把数据输入到缓冲区 b 中,处理程序处理后再把结果送到缓冲区b中,(设b只能放1个数据)然后在打印机上输出。问:

(1)系统可设哪些进程来完成这一任务? (2)这些进程之间有什么样的制约关系?

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

答:(1) 输入进程、处理进程、输出进程。

(2) 处理进程不能在输入进程之前执行、输出进程不能在处理进程之前执行;输入进程在未得到处理进程、输出进程的消息前不能运行。

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

semaphore:s1、s2、s3;s1:=1;s2:=s3:=0;

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

l1: 读数l2: p(s2l3: p(s3)

p(s1从b取数处理后再送b 从b取数输出。

送数到bv(s3v(s1)

v(s2goto l2goto l3

goto l1

习题五。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(s1l2:p(s2l3:p(s3)

p(s2p(s3p(s1)

v(s2v(s3v(s1)

v(s1v(s2v(s3)

goto l1goto l2goto l3

答:甲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个哲学家要吃饭。

beginthink;

p(c[i]);p(c[i+1 mod 5]);

eat;v(c[i+1 mod 5]);v(c[i]);

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

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

send(i): 第i个哲学家要吃饭。

beginthink;

操作系统作业答案

2.假设有一个成品仓库,总共能存放8台成品,生产者进程生产产品放入仓库,消费者进程从仓库中取出成品消费。为了防止积压,仓库满时就停止生产,由于仓库搬运设备只有一套,故成品的存入和取出只能分别执行,使用p v操作来实现该方案。3.某系统中有10台打印机,有三个进程p1,p2,p3,分别需要8,7,4台...

操作系统作业答案

第九题设有两个生产者进程a b和一个销售者进程c,他们共享一个无限大的仓库,生产者每次循环生产一个产品,然 库供销售 销售者每次循环从仓库中取出一个产品进行销售。如果不允许同时入库,也不允许边入库边出库 而且要求生产和消费a产品和b产品的件数都满足以下关系 n a的件数 b的件数 m,其中n m是正...

操作系统作业2答案

姓名。学号评分。操作系统原理作业 b 答案。一 24分 单项选择题。1.在存储管理中,采用覆盖与交换技术的目的是 a.节省主存空间 b 物理上扩充主存容量。c.提高cpu效率 d 实现主存共享。答 a2.如果i o设备与存储设备进行数据交换不经过cpu来完成,这种数据交换方式是 a.程序查询 b 中...