第三章作业

发布 2022-07-04 21:41:28 阅读 9474

v(s)顺序执行下述两个动作:

1. s值加1,即s=s+1

2. 如果s>0,则该进程继续运行;

3. 如果s≤ 0,则唤醒等待信号量s阻塞队列中的头一个进程(把阻塞态改为就绪态),执行v操作的进程继续运行。

procedure s(var s:semaphore)

begin s:=s+1;

if s<=0 then r(s)

end;用p、v操作实现进程间的互斥。

设s为两进程互斥的公用信号量,初值为1,表明该临界资源未被占用。只需要把临界区的程序设置于p(s)和 v(s)之间,即可实现两进程的互斥。

进程p1 进程p2

p(sp(s)

s1s2v(sv(s)

其中的s1、s2是两互斥的程序段,即p1、p2的临界区。

信号量的物理意义。

在操作系统中,信号量是表示资源的实体,是一个与队列有关的整型变量,其值仅能由p、v操作来改变。

14.如何用p、v操作实现进程间的同步?在同步和互斥中,信号量初值的设置有何不同?

用p、v操作实现进程间的同步。

信号量初值为0,两个进程之间的同步模型如下:

进程p1 进程p2

l1:p(sl2:v(s)

在这种同步操作中,进程p1受到进程p2的制约,而进程p2却不受进程p1的制约,所以是非对称的。

在同步中,信号量初值的设置为0;在互斥中,信号量的初值设置为1。

15.试分析生产者—消费者问题的同步过程,并写出相应程序?

设三个信号量:

1、信号量s,初值为1,表示没有产品进入临界区,用于互斥;

2、信号量n1,表示可用缓冲区个数,初值为k

3、信号量n2,表示产品个数,初值为0

生产者—消费者进程描述如下:

问题分析:当生产者生产出一个产品,对信号量n1进行p操作,n1减1,表示申请占用一个缓冲区。只有n1大于等于0则继续执行,当n1小于0是进程阻塞。

若n1大于等于0,再对s进行p操作,此时s=0,该进程继续执行,产品放入缓冲区,再对s进行v操作,此时s=1,继续执行,对产品个数n2进行v操作,即产品个数加1.

当有消费者消费产品时,对产品个数n2进行p操作,即产品个数减1,只有n2大于等于0则继续执行,当n2小于0是进程阻塞。若n,2大于等于0,继续对s进行p操作,此时s=0,产品从缓冲区取出,再对s进行v操作,s=1,继续执行,对缓冲区个数进行v操作,即缓冲区个数加1.

相应程序:begin

b: array[0..n-1]of integer;

p,r: integer;

s,sn,so: semaphore;

p:=r:=0

s:=1; sn:=n; so:=0;

cobegin

process producer i(i=1,2,……m)

beginl1: produce a product;

p(sn);

p(s);b[p]:=product;

p:=(p+1) mod n;

v(so);

v(s);go to l1

end;process consumer j( j=1,2,…k)

begin l2:p(so) ;

p(s);take a product from b[r];

r:=(r+1)mod n;

v(sn);

v(s);consume

go to l2

end coend;

end; 16.高级通讯原语何有优点?在消息缓冲中通讯方式中,发送原语和接收原语的功能是什么?

p、v操作实现的是进程之间的低级通讯,所以p、v为低级通讯原语。它只能传递简单的信号,不能传递交换大量信息。高级通信原语优点便是:能够实现在进程之间传递大量的信息。

发送原语的功能:

将欲发送的消息从发送区复制到消息缓冲区,并把它挂起在接收进程的消息缓冲队列末尾。如果该接收进程因等待消息而处于阻塞状态,则将其唤醒。

接收原语的功能:

把发送者发来的消息从消息缓冲区复制到接收区,然后将消息缓冲区从消息队列中消去,如果没有消息可以接收,则进入阻塞状态。

17.何谓死锁?产生死锁的原因和必要条件是什么?为什么说死锁是与时间有关的一种错误?

死锁:一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁。

产生死锁的原因。

1.竞争资源引起。

永久性资源:可以被多个进程多次使用(可再用资源)

剥夺性资源(cpu、内存)

非剥夺性资源(磁带机、打印机)

竞争非剥夺性资源会引起死锁。

临时性资源:只可使用一次的资源;

如信号量,中断信号,同步信号等(可消耗性资源)

竞争临时性资源也会引起死锁。

2. 进程推进顺序不当引起。

对资源采用“申请--分配--使用--释放”模式, 由于推进顺序不当两进程都要申请对方已占有的资源。

产生死锁的必要条件。

1) 互斥条件(资源独占):

一个资源每次只能给一个进程使用。

2) 不可剥夺条件(不可强占):

资源申请者不能强行的从资源占有者手中夺取资源, 资源只能由占有者自愿释放

3) 请求和保持条件: (部分分配,占有申请)

在申请新的资源的同时保持对原有资源的占有。

4) 循环等待条件:

存在一个进程-等待资源环形链 , 其中p1等待p2占有的资源, p2等待p3占有的资源, …pn等待p1占有的资源。

当进程争夺资源时,有可能产生死锁,但不一定就会死锁。这取决于各进程推进的速度和对资源请求的顺序,从而说明死锁是一种与时间有关的错误。

18.对死锁问题的处理,有哪几种策略?

a鸵鸟策略。

采取不理睬的策略。

b预防策略。

破坏死锁的四个必要条件。

c避免策略。

精心地分配资源,动态地回避死锁。

d检测和解除。

一旦发生死锁,及时检测出来,并采取措施解除死锁。

19.怎么预防死锁发生?常用的方法有哪些?

系统设计时确定资源分配算法,保证不发生死锁。做法是破坏产生死锁的四个必要条件之一。

1. 破坏“不可剥夺”条件。

在允许进程动态申请资源前提下规定, 一个进程在申请新的资源不能立即满足而变为等待状态之前, 必须释放已占有的全部资源, 若需要再重新申请。

2.破坏“请求和保持”条件。

要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当该进程所要资源均可满足时才给予一次性分配。

3.破坏“循环等待”条件。

采用资源有序分配法: 把系统中所有资源编号, 进程在申请资源时必须严格按资源编号的递增次序进行,否则操作系统不予分配。

4、破坏“互斥性”条件。

允许一个资源可由多个进程同时使用(缺点:对有的资源行不通,例如打印机)

23. 设有n个进程共享一个互斥段,如果。

1)每次只允许一个进程进入互斥段;

2)每次最多允许m个进程(m试问,所采用的信号量初值是否相同?信号量值的变化范围如何?

1)所采用的初值是不相同的,其中的初值是1,变化范围是[-1,1],2)中的初值是n,变化范围是[-(n-m),m]

24.有一阅览室,读者进入时必须先在一张登记表上进行登记。该表为每一座位列出一个表目,包括座位、姓名。读者离开要撤离登记信息。阅览室有100个座位。

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

故应编写1个程序,设置2个进程。进程是程序的一部分,程序运行的时候会产生进程。

设算法的信号量: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释放一个座位资源*/

25.设有两个优先级相同的进程p1、p2。令信号量s1、s1的初值为0,试问p1、p2并发运行结束后x=?y=?z=? 图见书)

因为p1、p1是两个并发进程,所以进程调度程序调度p1和p2的顺序是不确定的。

假设p1先执行,进程p1执行到语句p(s2)时s2=-1,进程p1阻塞。此时y=3,z=4,。当进程调度程序调度到p2时,由于进程p1已执行了v(s1),进程p2在执行p(s1)时未阻塞而继续执行,当执行到v(s2)时将p1唤醒,分以下两种情况:

a.执行p2最后一个语句,此时x=5,z=9,当进程p1再次被调度时,继续执行p1的最后一条语句,此时y=12,最终结果为x=5,y=12,z=9

b.如果当p2进程执行到v(s2)时,将p1唤醒,然后p2进程被中断,此时x=5,y=3,z=4. p1进程开始执行然后执行最后一个语句,此时x=5,y=7,z=4,然后p2被调度,执行z:=x+z,此时x=5,y=7,z=9.

第三章作业

1 顺序栈空 栈满条件2 链栈栈空 栈满条件。3 循环队列队空 队满条件,如何表示队列中数据元素的个数4 链队列队空 队满条件。5 以下运算实现在顺序栈上的进栈,请在 处用适当的语句予以填充。int push sqstacktp sq,datatype x if sp top sqstack max...

第三章作业

1.论述各类绿地的环境特点和树种的选择。一 高层建筑中的狭窄街巷绿地绿地内的环境特点 直射辐射量少,日照时间短 夏季气温偏低,冬季因受周围建筑物热辐射的影响,气温偏高 风速一般偏低,但有时会产生狭管效应,使风速增大。这些地方裸露土面极少,多为水泥铺装,严重阻碍了土壤与大气的水 气交换,且存在一定程度...

第三章作业

以下每个程序单独建立一个文件,命名为程序 1.编写程序 计算指定半径的圆的面积。例如 r 10,计算该圆的面积。2.编写程序 计算两个文本框中输入的数之和。3.编写程序 判断一个数是不是整数,如果是则提示 是整数 如果不是则提示 不是整数 4.编写程序 将一个4位数逆序输出。5.编写程序 比较任意输...