1、如果有三个进程r、w1、w2共享一个缓冲器b,而b中每次只能存放一个数。当缓冲器中无数时,进程r可以将从输入设备上读入的数存放到缓冲器中。若存放到缓冲器中的是奇数,则允许进程w1将其取出打印;若存放到缓冲器中的是偶数,则允许进程w2将其取出打印。
同时规定:进程r必须等缓冲区中的数被取出打印后才能再存放一个数;进程w1或w2对每次存入缓冲器的数只能打印一次;w1和w2都不能从空缓冲中取数。写出这三个并发进程能正确工作的程序。
semaphore s=1,so=se=0;
buffer b;
void r1()
int x;
while(1)
从输入设备上读一个数;
x=接收的数;
wait(s);
b=x;if b是奇数 then signal(so);
else signal(se);
void w1()
int y;
while(1)
wait(so);
y=b;signal(s);
打印y中数};
void w2()
int z;
while(1)
wait(so);
z=b;signal(s);
打印z中数 ;
main()
cobegin
process puta()
while(1)
main()
cobegin
void receiver(int i)
while (1)
wait(full);
wait(mutex);
mail=buffer[out];
out=(out+1) mod n;
signal(mutex);
signal(empty);
deal with the mail;
main()
cobegin
4、考虑三个吸烟者进程和一个经销商进程的系统。每个吸烟者连续不断地做烟卷并抽他做好的烟卷,做一支烟卷需要烟草、纸和火柴三种原料。这三个吸烟者分别掌握有烟草、纸和火柴。
经销商源源不断地提供上述三种原料,但他只将其中的两种原料放在桌上,具有另一种原料的吸烟者就可以做烟卷并抽烟,且在做完后给经销商发信号,然后经销商再拿出两种原料放在桌上,如此反复。试设计一个同步算法来描述他们的活动。
semaphore sa=sb=sc=0,sd=1;
i:integer;
void smokera()
while (1)
wait(sa);
制烟;signal(sd);吸烟;
void smokerb()
while (1)
wait(sb);
制烟;signal(sd);吸烟;
void smokerc()
while (1)
wait(sc);
制烟;signal(sd);吸烟;
void provider( )
while(1)
void r2()
int y;
while(1)
void w1()
int k;
while(1)
void w2()
int j;
while(1)
wait(s2);
j=b;signal(s);
打印j中数;
main()
cobegin
process cusotmeri( )顾客进程ielse
main( )
cobegin
operator( )
cusotmeri( )
8. 某寺庙有小和尚和老和尚各若干人,水缸一只,由小和尚提水入缸给老和尚饮用。水缸可容水10桶,水取自同一口水井中。
水井径窄,每次仅能容一只水桶取水,水桶总数为3个。若每次入、取水仅为1桶,而且不可同时进行。试用一种同步工具写出小和尚和老和尚入水、取水的活动过程。
互斥资源有水缸和水井,分别用mutex1和mutex2来互斥。水桶总数仅3只,由信号量count控制,信号量empty和full控制入水和出水量。
semaphore mutex1,mutex2,empty,full,count;
同步练习答案
第一章。1 1 c 2 b 3 a 4 a 2 a.胆固醇甾体化合物 b.维生素b1,b2,b6,b12 杂环化合物 c.维生素pp 杂环化合物 d.咖啡因杂环化合物 e.四氢呋喃醚类f.杂环化合物。第二章。1 命名下列有机物。1 4 丙基 6 异丙基壬烷2 3 甲基 5 氨基苯甲酸。3 3 甲基 ...
同步练习答案
召公谏厉王弭谤。一 单项选择。1c 2a 3c 4b 5d 6b 7b 8a 9a 10c 二 翻译 1 周厉王暴虐无道,老百姓都指责他的 2 召公告诉厉王说 人民忍受不了这样的 了!3 老百姓都不敢说话了,在路上遇见,也只是以眼神示意。4 我能制止老百姓的指责议论了,老百姓再也不敢说我坏话了。5 ...
同步练习 含答案
4.1从问题到方程。一 选择题。1 根据下列条件,能列出方程的是 a 一个数的2倍比小3b 与1的差的。c 甲数的3倍与乙数的的和 d 与的和的。2 一个长方形的周长是16cm,长比宽多2cm,那么长是。a.9cmb.5cmc.7cm d.10cm 3 在一次美化校园活动中,先安排32人去拔草,18...