第五拿并行性:互斥和同步 53互斥 53.1互斥的软件方法 53.2互斥的硬件方法
第五章 并行性:互斥和同步 5.3 互斥 ◼ 5.3.1 互斥的软件方法 ◼ 5.3.2 互斥的硬件方法
第五拿并行性:互斥和同步 53互斥 例:有两个并行进程P0和P1,互斥的共 享某一个资源。P0和P1都是无限循环 进程,每次使用资源有限的时间
第五章 并行性:互斥和同步 5.3 互斥 ◼ 例:有两个并行进程P0和P1,互斥的共 享某一个资源。 P0和P1都是无限循环 进程,每次使用资源有限的时间
第五章并行性:互斥和同步 531互斥的软件方法(算法1:单标志) while(turn =i) 两个进程P,Pj,其中的 Pi critical sect turn = J remainder section 设立一个公用整型变量turn:描述允许进入临界 区的进程标识 在进入区循环检查是否允许本进程进入:tun为i时, 进程P可进入; ■在退出区修改允许进入进程标识:进程P退出时,改 tun为进程P的标识j
第五章 并行性:互斥和同步 5.3.1 互斥的软件方法(算法1:单标志) ◼ 设立一个公用整型变量 turn:描述允许进入临界 区的进程标识 ◼ 在进入区循环检查是否允许本进程进入:turn为i时, 进程Pi可进入; ◼ 在退出区修改允许进入进程标识:进程Pi退出时,改 turn为进程Pj的标识j; while (turn != i); critical section turn = j; remainder section 两个进程Pi, Pj,其中的Pi
第五章并行性:互斥和同步 31互斥的软件方法(算法1:单标志) 缺点:强制轮流进入临界区,没有考虑 进程的实际需要。容易造成资源利用不 充分:在Pi出让临界区之后,P使用临 界区之前,P不可能再次使用临界区
第五章 并行性:互斥和同步 5.3.1 互斥的软件方法(算法1:单标志) ◼ 缺点:强制轮流进入临界区,没有考虑 进程的实际需要。容易造成资源利用不 充分:在Pi出让临界区之后,Pj使用临 界区之前,Pi不可能再次使用临界区;
第五拿并行性:互斥和同步 531互斥的软件方法(算法2:双标 志,先检查) while (flag lil a flagli= true <b> critical section flagli]= false remainder section ■设立一个标志数组fag[:描述进程是否在临 界区,初值均为 FALSE ■先检查,后修改:在进入区检查另一个进程是否在 临界区,不在时修改本进程在临界区的标志; 在退出区修改本进程在临界区的标志;
第五章 并行性:互斥和同步 5.3.1 互斥的软件方法(算法2:双标 志,先检查) ◼ 设立一个标志数组flag[]:描述进程是否在临 界区,初值均为FALSE。 ◼ 先检查,后修改:在进入区检查另一个进程是否在 临界区,不在时修改本进程在临界区的标志; ◼ 在退出区修改本进程在临界区的标志; while (flag[j]); <a> flag[i] = TRUE; <b> critical section flag[i] = FALSE; remainder section