文档介绍:进程和进程控制
线程
进程互斥和同步
死锁问题
进程间通信
处理器调度
第三章处理机管理(中)
1
进程互斥和同步
问题的提出
互斥算法
信号量(semaphore)
经典进程同步问题
管程(monitor)
Windows 2000/XP的进程互斥和同步
进程互斥和同步
2
进程间临界资源访问冲突
共享变量的修改冲突
操作顺序冲突
临界资源:计算机系统中的硬件或软件(如外设、共享代码段、共享数据结构)资源,各个进程在对其进行访问时(关键是进行写入或修改),必须互斥地进行
并非所有共享资源都是临界资源,如只读数据可以同时访问
在多道程序环境中,进程之间存在相互制约的关系,这种制约关系主要是由对共享资源的竞争使用而引起的。
进程互斥和同步
问题的提出
3
共享变量的修改冲突
进程互斥和同步
临界资源
问题的提出
一个飞机订票系统,两个终端,运行
T1
、
T2
进程
T1 : T2:
... ...
Read(x); Read(x);
if x>=1 then if x>=1 then
x:=x-1; x:=x-1;
write(x); write(x);
... ...
4
3个进程:get, process和print
进程互斥和同步
操作顺序冲突
临界资源
get
process
print
问题的提出
Buf1
Buf2
磁带
打印机
5
临界资源的访问过程
进程互斥和同步
为了保证临界资源的正确访问,必须采取一定的协调措施
临界区(critical section):
进程中访问临界资源的一段
代码。
进入区(entry section):在进
入临界区之前,检查可否进
入临界区的一段代码。如果可以进入临界区,通常设置相应“正在访问临界区”标志。
退出区(exit section):用于将"正在访问临界区"标志清除。
剩余区(remainder section):代码中的其余部分。
问题的提出
6
同步机制应遵循的准则
①空闲则入:当没有进程处于临界区时,若有一个进程要求进入临界区,则应该允许;
②无空等待:已有进程处于其临界区,其他要求进入临界区的进程必须;
③有限等待:等待进入临界区的进程应该在有限的时间内得到满足;
④让权等待:不能进入临界区的进程,应释放CPU(如转换到阻塞状态)
进程互斥和同步
目的:避免死锁和饥饿
死锁指多个进程互不相让,都得不到足够的资源;
饥饿指某一个进程一直得不到资源
问题的提出
7
进程互斥和同步
互斥算法
——基于进程间平等协商的互斥算法
解决进程互斥的方法:
基于进程间平等协商的互斥方法
软件方法
硬件方法
由操作系统协调互斥问题的方法
8
进程互斥的软件方法
有两个进程Pi, Pj,其中的Pi
算法1:单标志
设立一个公用整型变量 turn:描述允许进入临界区的进程标识
在进入区循环检查是否允许本进程进入:turn为i时,进程Pi可进入;
在退出区修改允许进入进程标识:进程Pi退出时,改turn为进程Pj的标识j;
缺点:强制轮流进入临界区,没有考虑进程的实际需要。容易造成资源利用不充分:在Pi出让临界区之后,Pj使用临界区之前,Pi不可能再次使用临界区;
进程互斥和同步
互斥算法
9
算法2:双标志、先检查
设立一个标志数组flag[]:描述进程是否在临界区,初值均为FALSE。
先检查,后修改:在进入区检查另一个进程是否在临界区,不在时修改本进程在临界区的标志;在退出区修改本进程在临界区的标志;
优点:不用交替进入,可连续使用;
缺点:Pi和Pj可能同时进入临界区。
进程互斥和同步
进程互斥的软件方法
互斥算法
10