02326操作系统第4章课后思考题_第1页
02326操作系统第4章课后思考题_第2页
02326操作系统第4章课后思考题_第3页
02326操作系统第4章课后思考题_第4页
02326操作系统第4章课后思考题_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

02326操作系统第4章课后思考题1、何谓之与时间有关的错误?举例说明之。并发进程执行时肯定会产生与时间有关的错误吗?为什么。

与时间有关的错误是指两个程序都以各自的速度交叉着运行,同时访问共享信息导致的错误。

比如程序A对共享变量p执行+1操作后,休眠一秒输出变量p,程序B对共享变量p执行减1操作后,休眠一秒输出变量p。导致的结果就会和想象中的不相同。

并发程序不肯定都导致时间相关的错误,我们可以对共享变量加锁来解决这个问题

2、什么是临界区,什么是相关临界区,对相关临界区的使用规章?系统中某些资源一次只允许一个进程使用,则这类资源被称为临界资源,而在进程中访问临界资源的程序被称为临界区。

多个进程涉及到同一个临界资源的临界区被称为相关临界区。

使用规章:(1)只能选择一个进程进入临界区,其他进程必需等待。(2)不能强迫一个进程无限的等待进入他的临界区

(3)任何一个进程在进入临界区后都要在有限的时间内退出临界区。

3、若使用P、V操作管理某一组相关临界区,其信号量S的值在之间变化,当S=-1,s=0,S=1时,他们各自的物理含义是什么?当S=-1,临界区已满,且有一个进程正在等待

当S=0,临界区已满

当S=1,临界区为空

4、两个并发执行的进程A和B的程序如下:

进程A:

While(true){

N=N+5;

};

进程B:

While(true){

打印N的值;

N=0;

};

其中,N为整数,初值为4,若进程A先执行3次循环后,进程A和进程B又并发执行了一个循环,请写出可能消失的打印值。

答:可能消失的打印值:19,0,24。由于N初值为4,若进程A先执行了三个循环,此时N的值为19。当进程A和进程B并发执行时可能会有如下两种执行次序,即进程A先执行一次循环,然后再进程B执行一次循环,此时打印的是正确值24,执行后N中的值为0。但若进程B先执行一次循环,然后再进程A执行一次循环,则打印的值是19,执行后N中的值是0。这是错误的,即发生了与时间有关的错误。用P、操作进行管理,使进程A和B并发时不会消失与时间有关的错误的程序如下:(S为互斥信号量,初值为1),

进程A进程B

while(1){while(1){

P(S);P(S);

N=N+5;打印N的值;

V(S);N=0;

}V(S);

};

5、a,b两点之间有一段单行车道,现在设计一个自动管理系统,管理规章如下:允许同方向的车同时驶入ab段,但另一方向的车必需在ab段外等待,当ab之间无车辆在行驶时,到达a点(或者b点)的车辆可以进入ab段,但不能从a点或者b点同时驶入,当某方向在ab段行驶的车辆驶出了ab段且同方向无车辆进入ab段的时候,应让另一方等待的车辆进入ab段行驶,请编写程序,使用PV操作实现对ab段的正确管理以保证行驶平安。

a()//a点

{

While(true)

{

//预备驶入

P(ab)

P(empty)

//驶出

V(empty)

V(ab)

}

}

b()//b点

{

While(true)

{

//预备驶入

P(ab)

P(empty)

//驶出

V(empty)

V(ab)

}

}

6.今有三个进程R、M、P,它们共享一个缓冲区B。R负责从输入设备读信息,每次读出一个记录并把它存放在缓冲区B中:M在缓冲区加工读入的记录;P把加工后的记录打印输出。输入的记录经加工输出后,缓冲区中又可存放下一个记录。请用P、V操作为同步机构写出他们并发执行时能正确工作的程序。

答:三个进程共用一个缓冲区B,他们必需同步工作,可定义三个信号量:

S1:表示是否可把读人的记录放到缓冲区,初始值为1.

S2:表示是否可对缓冲区中的记录加工,初始值为0.

S3:表示记录是否加工好,可以输出,初始值也为0.

三个进程可如下设计:

While(1){//读记录;

P(S1);

记录存入缓冲区;

V(S2);

};

While(1){//加工记录;

P(S2);;

P(S3)

加工记录;

V(S3);

V(S1);

};

While(1){//取记录;

P(S3)

输出加工后的记录;

V(S1);

};

7.

要求:当发车时间到,售票员关好车门后,司机才能启动车辆,售票员开头售票;当到站后,司机停车后,售票员才能打开车门,乘客下车,站牌乘客上车。

设置两个信号量:

S1:推断是否到站

S2:推断是否可以离站

司机:售票员:

While(1){while(1){

正常行驶到站,P(S1);

停车开车门

V(S1);售票、关车门

P(S2);V(S2);

离开车站};

};

9.

10、设有两个优先级相同的进程P1,P2,如下所示,信号量S1,S2的初值都为0,试问P1,P2并发执行后,X,Y,Z的值各是多少?

进程P1:

Y=1;

Y=y+2;

V(S1);

Z=y+1;

P(s2);

Y=z+y;

进程P2:

X=1;

X=x+1;

P(s1);

X=x+y;

V(s2);

Z=x+z;

x=5,y=7,z=9;

12.

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

算法的信号量有三个:

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)/*释放一个座位资源*/};

13.

为了掌握两个进程依次使用输入设备进行输入,需分别设置三个信号量S1、S2,其中S1的初值为1,S2初值为0。使用上述信号量后,两个进程不会同时使用输入设备,故不必再为输入设备设置互斥信号量。另外,还需设置信号量Sb、Sy、来分别表示数据b是否已经输入,以及y是否已计算完成,它们的初值均为0。三个进程的动作可描述为:P1:

P(S1);

从输入设备输入数据a;

V(S2);

P(Sb);

x=a+b;

P(Sy);

使用打印机打印出x、y的结果;

P2:

P(S2);

从输入设备输入数据b;

V(Sb);

y=a*b;

V(Sy);

14.进程间有哪几种通信方式?各有什么特点?各种方式分别适用于那些状况?

解决进程间的大量信息通信的问题有三类方案:共享内存、消息机

制、以及通过共享文件进行通信,及管道通信。

共享内存:在相互通讯的进程之间设有一个公共内存区,一组进程向该公共内存中写,另一组进程从公共内存中读,通过这种方式实现两组进程间的信息交换。

消息机制:是用于进程间通信的高级通信原语之一。

(1)消息缓冲通信:利用内存中公共消息缓冲区实现进程之间的信息交换。消息缓冲区是由:消息长度、消息正文、发送者、消息队列指针组成的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论