操作系统教程北京大学出版第四章1.ppt
文本预览下载声明
软件解法 (1) free: 表示临界区标志 true: 有进程在临界区 false:无进程在临界区(初值) .... while (free); free = true; 临界区 free = false; * 软件解法 (2) turn: true P进入临界区 false Q进入临界区 .... P: while (not turn); 临界区 turn = false; Q: while (turn); 临界区 turn = true; * 软件解法(3) pturn,qturn: 初值为false P进入临界区的条件: pturn∧ not qturn Q进入临界区的条件: not pturn∧ qturn P .... Q ..... pturn = true; qturn = true; while (qturn); while (pturn); 临界区 临界区 pturn = false; qturn = false; ... ... * 软件解法(4) : Dekker算法 在解法(3)基础上引入turn枚举类型 初值任意 P : while (true) { pturn = true; while (qturn) { if (turn==2) { pturn = false; while (turn==2); pturn = true; } 临界区 turn = 2; pturn = false; ..... } * 软件解法(4)(续1) Q : while (true) { qturn = true; while (pturn) { if (turn==1) { qturn = false; while (turn==1); qturn = true; } 临界区 turn = 1; qturn = false; ..... } * 软件解法的缺点: 1. 忙等待 2. 实现过于复杂,需要高的编程技巧 硬件解法:提供专门的硬件指令,允许对一个字的内容进行检测和修正,或交换两个字的内容 目的:解决共享变量的完整性和正确性 简单、有效,特别适用于多处理机 缺点:忙等待 * 硬件解法 (1) “测试并设置”指令 boolean TS (boolean *lock) { TS = *lock; *lock = true; } while TS(lock); 临界区 lock = false; * 硬件解法 (2) “交换”指令 void SWAP(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } key = true; do { SWAP(lock,key); }while(key); 临界区 lock:=false; * 中断屏蔽方法 “开关中断”指令 进入临界区前执行: 执行“关中断”指令 离开临界区后执行: 执行“开中断”指令 简单,有效 较高的代价,限制CPU并发能力(临界区小) 不适应多处理器 * 2.进程的同步机制──信号量及P.V操作 以上介绍的各种算法都存在问题,它们是平等进程间的一种协商机制,需要一个地位高于进程的管理者来解决公有资源的使用问题 操作系统可从进程管理者的角度来处理互斥的问题,信号量就是操作系统提供的管理公有资源的有效手段 * 进程的同步机制(续) 同步机制: 信号量及P、V操作;管程;条件临界域;路径表达式等(用于集中式系统中) 会合;通信顺序进程;分布进程;远程过程调用等(适用于分布式系统中) * 同步机制应满足的基
显示全部