操作系统
2020-45
现有5个操作A、B、C、D和E,操作C必须在A和B完成后执行,操作E必须在C和D完成后执行,请使用信号量的wait()、signal()操作(P、V操作)描述上述操作之间的同步关系,并说明所用信号量及其初值。
答案
(1) 设四个同步信号量 S_AC、S_BC、S_CE、S_DE,初值均为 0,分别描述 A→C、B→C、C→E、D→E 四个先后关系。
(2) 操作同步伪代码(wait/signal 即 P/V 操作):
S_AC = 0;
S_BC = 0;
S_CE = 0;
S_DE = 0;
cobegin {
A() {
A;
signal(S_AC);
}
B() {
B;
signal(S_BC);
}
C() {
wait(S_AC);
wait(S_BC);
C;
signal(S_CE);
}
D() {
D;
signal(S_DE);
}
E() {
wait(S_CE);
wait(S_DE);
E;
}
} coend(3) C 分别等待 A、B 发出的完成信号后才能执行;E 分别等待 C、D 发出的完成信号后才能执行。本题只有同步关系,没有互斥关系。