使用互斥区的原则: 前提:任何进程无权停止其它进程的运行 进程之间相对运行速度无硬性规定 进程互斥的解决有两种做法 由竞争各方平等协商 引入进程管理者,由管理者来协调竞争各方 对互斥资源的使用 具体方法: 硬件(当一个进程进入临界区,就屏蔽所 有中断,但成本高) 软件(用编程解决,但常常忙等待)
使用互斥区的原则: 前提:任何进程无权停止其它进程的运行 进程之间相对运行速度无硬性规定 进程互斥的解决有两种做法: • 由竞争各方平等协商 • 引入进程管理者,由管理者来协调竞争各方 对互斥资源的使用 具体方法: 硬件(当一个进程进入临界区,就屏蔽所 有中断,但成本高) 软件(用编程解决,但常常忙等待)
6.进程互斥的软件方法 通过平等协商方式实现进程互斥的最初方法是软件 方法 其基本思路是在进入区检查和设置一些标志,如果 已有进程在临界区,则在进入区通过循环检查进行 等待;在退出区修改标志 其中的主要问题是设置什么标志和如何检查标志 软件解法的缺点: 1.忙等待 实现过于复杂 3.需要高的编程技巧
6.进程互斥的软件方法 • 通过平等协商方式实现进程互斥的最初方法是软件 方法 • 其基本思路是在进入区检查和设置一些标志,如果 已有进程在临界区,则在进入区通过循环检查进行 等待;在退出区修改标志 • 其中的主要问题是设置什么标志和如何检查标志 软件解法的缺点: 1. 忙等待 2. 实现过于复杂 3. 需要高的编程技巧
软件解法(1) free:表示临界区标志 true:有进程在临界区 false:无进程在临界区(初值) while (free) free false 临界区 free true
软件解法 (1) free: 表示临界区标志 true: 有进程在临界区 false:无进程在临界区(初值) .... while (free); free = false; 临界区 free = true;
软件解法(2) turn: true P进入临界区 false Q进入临界区 P: while (not turn) 临界区 turn false Q: while (turn) 临界区 turn true
软件解法 (2) turn: true P进入临界区 false Q进入临界区 .... P: while (not turn); 临界区 turn = false; Q: while (turn); 临界区 turn = true;
软件解法(3) turn, aturn:初值为 false P进入临界区的条件: turn∧ not aturn Q进入临界区的条件: not turn∧ turn turn true; turn true: while (aturn) while (turn) 临界区 临界区 turn= false turn= false
软件解法(3) pturn,qturn: 初值为false P进入临界区的条件: pturn∧ not qturn Q进入临界区的条件: not pturn∧ qturn P .... Q ..... pturn = true; pturn = true; while (qturn); while (pturn); 临界区 临界区 pturn = false; qturn = false; ...