第五拿并行性:互斥和同步 5.2临界段 设X初始值为10 设X初始值为10 T1. Read(X TlRead(X) T1. if x>=1 then T2. Read(x /=10 Tl.if x>=1 then /x=10 T1x=x-1 XEX T1wrte(X)∥/×=9 T2. Read(X) T1. write(X)∥X=9 T2, if x>=1 then T2 ifx>=l then x=10 T2,X=X-1 T2.x=x-1 T2wrte(X)∥/×=8 T2. write(X)∥X=9
第五章 并行性:互斥和同步 5.2 临界段 设X初始值为10 T1.Read(X) T1.if x>=1 then //x=10 T1.x=x-1 T1.write(X) // X=9 T2.Read(X) T2.if x>=1 then T2.x=x-1 T2.write(X) // X=8 设X初始值为10 T1.Read(X) T2.Read(X) T1.if x>=1 then //x=10 T1.x=x-1 T1.write(X) // X=9 T2.if x>=1 then //x=10 T2.x=x-1 T2.write(X) // X=9
第五拿并行性:互斥和同步 et copV put t g 有3个进程:get,copy和put,它们对4个存储区域f、S、t和g进 行操作 操作顺序冲突
第五章 并行性:互斥和同步 get copy put f s t g 有3个进程:get, copy和put,它们对4个存储区域f、s、t和g进 行操作。 操作顺序冲突
第五拿并行性:互斥和同步 g py p f st g 结果 初始状态|34,m22(1,2) g, C,p 4 ···5 33(1,2,3)正确 BPc45…mn33(1.22)错误 C,g,p 4 ···5 32(1,2,2)错误 g45…,mn32(1.2.2)错误 pcg4.5…m32(1.2.2)错误 pe|45m33a122)错误
第五章 并行性:互斥和同步 get copy put f s t g f s t g 结果 初始状态 3,4,...,m 2 2 (1,2) g,c,p 4,5,...,m 3 3 (1,2,3) 正确 g,p,c 4,5,...,m 3 3 (1,2,2) 错误 c,g,p 4,5,...,m 3 2 (1,2,2) 错误 c,p,g 4,5,...,m 3 2 (1,2,2) 错误 p,c,g 4,5,...,m 3 2 (1,2,2) 错误 p,g,c 4,5,...,m 3 3 (1,2,2) 错误
第五拿并行性:互斥和同步 5.2临界段 临界资源( Critical resource):在系统中每 只能一个(有限个)进程访问的资源, 如打印机、磁带机等。临界资源访问控 制是进程同步的基本问题 临界段( Critical section):每个进程中访 临界资源的那段代码叫临界段
第五章 并行性:互斥和同步 5.2 临界段 ◼ 临界资源(Critical Resource) :在系统中每次 只能一个(有限个)进程访问的资源, 如打印机、磁带机等。临界资源访问控 制是进程同步的基本问题。 ◼ 临界段(Critical section):每个进程中访问 临界资源的那段代码叫临界段
第五拿并行性:互斥和同步 5.2临界段 进程使用临界段的原则 如果临界资源空闲,在共享同一个临界资源的进程中, 每次只允许一个进程进入自己的临界段; 如有多个进程同时要求进入临界段,应在有限时间内 允许其中一个进程进入临界段,不能互相阻塞; 进程在临界段内只能停留有限的时间; ■应保证进程能够在有限时间内进入临界段; 处于临界段之外的进程不能阻止其它进程进入临界段; 如果进程不能进入临界段,应立即释放CPU,进入阻 塞状态
第五章 并行性:互斥和同步 5.2 临界段 ◼ 进程使用临界段的原则 ◼ 如果临界资源空闲,在共享同一个临界资源的进程中, 每次只允许一个进程进入自己的临界段; ◼ 如有多个进程同时要求进入临界段,应在有限时间内 允许其中一个进程进入临界段,不能互相阻塞; ◼ 进程在临界段内只能停留有限的时间; ◼ 应保证进程能够在有限时间内进入临界段; ◼ 处于临界段之外的进程不能阻止其它进程进入临界段; ◼ 如果进程不能进入临界段,应立即释放CPU,进入阻 塞状态