- 32
- 0
- 约2.52千字
- 约 1页
- 2020-03-17 发布于河北
- 举报
操作系统作业
第 PAGE 1 页 共 NUMPAGES 4 页
用记录型信号量解决以下问题,用类C语言编写进程同步算法。
司机 P1 售票员 P2 REPEAT REPEAT 启动 关门 正常运行 售票 到站停 开门 UNTIL FALSE UNTIL FALSE
两个进程合作完成数据计算和打印工作,计算进程未计算完就不可打印,反之也然,双方共用一个缓冲区,写出此算法。
桌子上有一只盘子,最多可容纳两个水果,每次只能放人或取出一个水果。爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔子(orange),两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。请用P、V操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。
桌子上有一只盘子,每次只能放入一只水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,一个儿子专等吃盘中的桔子,一个女儿专等吃盘中的苹果。请利用P、V操作写出父亲、母亲、儿子、女儿进程的同步算法。
设有四个并发执行的进程P1、P2、P3、p4,其前趋图如下,试用信号量实现这四个进程同步。
1
Var s1,s2:semaphore:=0,0;
parbegin
司机 P1 REPEAT wait(s1)
启动
正常运行
到站停
Signal(s2)
UNTIL FALSE
售票员 P2
REPEAT
关门
Signal(s1)
售票
Wait(s2)
开门
UNTIL FALSE
parend
2
Var empty, full: semaphore:=1,0;
parbegin
Calculate: begin
repeat
wait(empty);
计算;
signal(full);
until false;
end
Print: begin
repeat
wait(full);
打印;
signal(empty);
until false;
end
parend
3
盘子为互斥资源,因可以放两个水果,empty初值为2;再设信号量mutex初值为1,控制对盘子的互斥访问;apple表示盘中苹果个数,orange表示盘中桔子个数,初值均为0。
Var mutex, empty, apple, orange:semaphore:=1,2,0,0;
parbegin
Father: begin
p(empty);
P(mutex);
放苹果;
V(mutex);
V(apple);
end;
Mother: begin
P(empty);
P(mutex);
放桔子;
V(mutex);
V(orange);
End;
Daughter: begin
p(apple);
P(mutex);
取苹果;
V(mutex);
V(empty);
End;
Son: begin
P(orange);
P(mutex);
取桔子;
V(mutex);
V(empty);
End;
Parend
4
在本题中,应设置三个信号量s、so、sa
信号量s表示盘子是否为空,其初值为1;
信号量so表示盘中是否有桔子,其初值为0;
信号量sa表示盘中是否有苹果,其初值为0.
同步描述如下:
var s, so, sa: semaphone:=1, 0, 0;
parbegin
father ( );
mother( );
son ( );
daughter ( );
parend
father ( )
原创力文档

文档评论(0)