2022 操作系统 同步问题设计 解答题
第 46 题

(8分)某进程的两个线程T1和T2 并发执行A B C D E 和F 共6个操作,其中T1 执行A E和F, T2执行 B C 和 D。题46图表示上述6个操作的执行顺序所必须满足的约束:C 在A 和B 完成后执行,D 和E 在C 完成后执行,F 在E 完成后执行。请使用信号量的walt() 、slgnal( 操作描述T1 和T2 之间的同 步关系,并说明所用信号量的作用及其初值。

2018_Q7_3

[tag_link]

[tag_link]

进程 T1 要依次执行 A、E、F。进程 T2 要执行 B、C、D。由图可知,T2 执行 C 必须在 T1 执行完 A 之后;T1 执行 E 必须在 T2 执行完 C 之后。因此,有两对同步关系。信号量的定义 和同步关系的描述如下:

semaphore AC = 0 ; 
semaphore CE = 0 ; 
T1 () { 
    A ; 
    signal ( AC ); 
    wait ( CE ); 
    E ; 
    F ; 
} 
T2 () { 
    B ; 
    wait ( AC ); 
    C ; 
    signal ( CE ); 
    D ; 
}