同步互斥word文档良心出品Word格式.docx

上传人:b****0 文档编号:13259856 上传时间:2022-10-09 格式:DOCX 页数:18 大小:24.15KB
下载 相关 举报
同步互斥word文档良心出品Word格式.docx_第1页
第1页 / 共18页
同步互斥word文档良心出品Word格式.docx_第2页
第2页 / 共18页
同步互斥word文档良心出品Word格式.docx_第3页
第3页 / 共18页
同步互斥word文档良心出品Word格式.docx_第4页
第4页 / 共18页
同步互斥word文档良心出品Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

同步互斥word文档良心出品Word格式.docx

《同步互斥word文档良心出品Word格式.docx》由会员分享,可在线阅读,更多相关《同步互斥word文档良心出品Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

同步互斥word文档良心出品Word格式.docx

,n);

}”printf(“%dn=0;

};

}

};

假设进程A被部署在公园入口的终端上,用来记录一段时间内进入公园的人数,进程B被部署在公园的控制中心,用来输出一段时间内进入公园的总人数。

进程A和进程B共享全局变量n,n表示记录下的人数。

如果在进程B执行完打印语句后被进程A打断,进程A执行了若干次变量自增语句,之后进程B接着执行清0语句,那么进程A对n的累加丢失了,相当于进程B被打断的这段时间内进入公园的人没有被记录下来。

发生与时间有关的错误。

2.有人说,假设两个进程之间没有共享内存,则二者之间没有公共变量,这种说法准确吗?

说明原因。

如果只从用户空间考虑,这种说法是正确的。

但从操作系统的角度来说并不准确。

两个没有公共内存的用户进程可能同时(宏观)进入操作系统,并访问操作系统空间中的公共变量。

3.何谓忙式等待?

是否还有其它方式的等待?

比较它们之间的联系和差别。

不进入等待状态的等待称为忙式等待。

另一种等待方式是阻塞式等待,进程得不到共享资源时将进入阻塞状态,让出CPU给其他进程使用。

忙等待和阻塞式等待的相同之处在于进程都不具备继续向前推进的条件,不同之处在于处于忙等待的进程不主动放弃CPU,,因而是高效CPU可能被剥夺,因而是低效的;

而处于阻塞状态的进程主动放弃CPU尽管.

的。

4.下列进程互斥方法哪些存在忙式等待问题?

(1)软件:

面包店算法

(2)硬件:

TS指令(3)关中断指令

(1)、

(2)存在忙等待问题。

5.为何开关中断进程互斥方法仅在单CPU系统中是有效的?

关中断方法不适用于多CPU系统,因为关中断只能保证CPU不由一个进程切换到另外一个进程,从而防止多个进程并发地进入公共临界区域。

但即使关中断后,不同进程仍可以在不同CPU上并行执行关于同一组共享变量的临界区代码。

6.在多处理机系统中,软件互斥方法是否有效?

为什么?

答:

依然有效。

多处理机并行与单处理并发之间的差别在于程序交叉的粒度,单处理机机环境中进程交叉发生在指令之间,多处理机环境中进程交叉发生在指令周期之间。

由于纯软件互斥算法并不依赖特殊的硬件指令(如test_and_set),指令之间的交叉与指令周期之间的交叉结果相同。

7.试分析临界区域的大小与系统并发性之间的关系。

关于同一组变量的临界区域是不能并发执行的代码,临界区越大,并发性越差,因而编写并发程序应尽量缩小临界区域范围。

8.设CR1是关于一组共享变量SV1的临界区域,CR2是关于另外一组共享变量SV2的临界区域,当进程P1进入CR1时,进程P2是否可以进入CR2?

为什么?

可以。

因为互斥是在变量级别上的,多个进程同时进入关于不同变量的临界区不会引起与时间有关的错误。

9.Lamport面包店互斥算法是否会出现饿死情况?

不会,该算法是公平的。

假定系统中共有n个进程,每个想要进入临界区域的进程(线程)在最坏的情况下需要等待其它n-1个进程进入并离开临界区域之后即可获得进入临界区域的机会,因而存在(忙式)等待的上界。

10.试用信号灯和PV操作实现临界区语句:

region<

共享变量>

do<

语句>

变量类型<

semaphores=1;

P(s);

<

V(s);

11.由V操作唤醒的进程是否一定能够直接进入运行状态?

否。

一般来说,唤醒是将进程状态由等待状态变成就绪状态,而就绪进程何时获得处理机则是由系统的处理机调度策略确定的。

如果采用抢占式优先级调度算法,并且被唤醒的进程是当前系统中优先级最高的进程,

那么该进程将被调度执行,其状态变成运行态。

如果该进程不是系统中优先级最高的进程或系统采用其它调度算法,那么该进程不会被调度执行,其状态将维持在就绪态。

12.设S1和S2为两个信号灯变量,下列八组P、V操作哪些可以同时进行?

哪些不能同时进行?

(1)P(S1),P(S2)

(2)P(S1),V(S2)

(3)V(S1),P(S2)(4)V(S1),V(S2)

(5)P(S1),P(S1)(6)P(S2),V(S2)

(7)V(S1),P(S1)(8)V(S2),V(S2)

能同时进行的包括:

(1)、

(2)、(3)、(4)。

这些操作涉及不同信号灯变量,属于关于不同组共享变量的临界区。

不能同时进行的包括:

(5)、(6)、(7)、(8)。

这些操作涉及相同的信号灯变量,属于关于同一组共享变量的临界区。

13.对于生产者—消费者问题,假设缓冲区是无界的,试用信号灯与PV操作给出解法。

由于是无界缓冲区,所以生产者不会因得不到缓冲区而被阻塞,不需要对空缓冲区进行管理,可以去掉在有界缓冲区中用来管理空缓冲区的信号量及其PV操作。

semaphoremutex_in=1;

semaphoremutex_out=1;

semaphoreempty=0;

intin=0,out=0;

生产者活动:

消费者活动:

while

(1){while

(1){

producenextproduct;

P(empty);

P(mutex_in);

P(mutex_out);

addtheproducttobuffer[in];

taketheproductfrombuffer[out];

in++;

out++;

v(mutex_in);

V(mutex_out);

V(empty);

}

14.设有一个可以装A、B两种物品的仓库,其容量无限大,但要求仓库中A、B两种物品的数量满足下述不等式:

-M≤A物品数量-B物品数量≤N

其中M和N为正整数。

试用信号灯和PV操作描述A、B两种物品的入库过程。

已知条件-M≤A物品数量-B物品数量≤N可以拆成两个不等式,即

A物品数量-B物品数量≤N,

B物品数量-A物品数量≤M。

这两个不等式的含义是:

仓库中A物品可以比B物品多,但不能超过N个;

B物品可以比A物品多,但不能超过M个。

semaphorea=n;

semaphoreb=m;

voidmain(){

createprocess(A,…);

createprocess(B,…);

A物品入库:

B物品入库:

voidB(){voidA(){

while

(1){while

(1){

P(a);

P(b);

A物品入库;

B物品入库;

V(a);

V(b);

}}

设公共汽车上有一个司15.试用信号灯与PV操作实现司机与售票员之间的同步问题。

机和一个售票员,其活动如下图所示。

:

司机的活动:

售票员的活动

P1:

do{P2:

do:

{

;

关车门─①;

启动车辆;

─②

售票;

正常行车─到站停;

─开车门

}while

(1);

到站停车后方能开车门。

(2):

为了安全起见,显然要求

(1)关车门后方能启动车辆;

“开车门”这一活动应当在“到即“启动车辆”这一活动应当在“关车门”这一活动之后,站停车”这一活动之后。

P2应等待直到P1P1解:

如果进程P2尚未推进到②处时,进程已经推进到①处,则P2P1尚未推进到③处时,进程已经推进到④处,则P2推进到②处为止;

同样,如果进程执行到②处在①处发生了等待,则当进程P2P1应等待直到推进到③处为止。

如果进程P1P1执行到③处时应将在④处发生了等待,如果进程P2则当进程P2唤醒;

时应将P1同样,唤醒。

表示是startVP用信号量和、操作解决这一问题,需要定义两个信号量,一个信号量表示是否允许售票员开车门。

初始状态是车停在否允许司机启动车辆,另一个信号量open0始发站,车门开着,等待乘客上车。

因此,两个信号量的初值都是。

semaphorestart=0;

semaphoreopen=0;

:

司机的活动售票员的活动

do{P2:

do{

关车门P(start);

V(start);

启动车辆

售正常行车;

票P(open);

到站停车;

V(open);

开车门}while

(1);

}while

(1);

16.设有A、B、C三组进程,它们互斥地使用某一独占型资源R,使用前申请,使用后释放。

资源分配原则如下:

(1)当只有一组申请进程时,该组申请进程依次获得R;

(2)当有两组申请进程时,各组申请进程交替获得R,组内申请进程依次获得R;

(3)当有三组申请进程时,各组申请进程轮流获得R,组内申请进程依次获得R。

试用信号灯和PV操作分别给出各组进程的申请活动程序段和释放活动程序段。

解:

intfree=1;

//设备状态标志

semaphoremutex=1;

semaphoreqa=qb=qc=0;

//各组等待队列

intcounta=countb=countc=0;

//等待队列长度

A组申请:

A组释放:

P(mutex);

P(mutex);

if(free==1){if(countb>

0){

free=0;

countb--;

V(mutex);

V(qb);

}}else{

else{if(countc>

counta++;

countc--;

V(qc);

P(qa);

}else{

}if(counta>

0){

counta--

V(qa);

free=1;

}

}

仿A组进程活动可以给出B组和C组进程活动。

17.设自行车生产线上有一只箱子,其中有N个位置(N≥3),每个位置可存放一个车架或一个车轮;

又设有三个工人,其活动分别为:

工人1活动:

工人2活动:

工人3活动:

dodo{

do

箱中取一车架加工一个车轮;

;

加工一个车架;

箱中取二车轮;

车轮放入箱中车架放入箱中;

组装为一台车;

}while

(1)

}while

(1)

试分别用信号灯与

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

当前位置:首页 > 党团工作 > 思想汇报心得体会

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

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