间接制约:相互竞争资源
- 临界资源
- 定义:一次仅允许一个进程使用的资源称为临界资源。
- 硬件:如输入机、打印机、磁带机等
- 软件:如公用变量、数据、表格、队列等
- 互斥:对某个系统资源,一个进程正在使用它,另外一个想用它的进程就必须等待,而不能同时使用 ;
- 定义:一次仅允许一个进程使用的资源称为临界资源。
![e3d5e0797d717cfd56267a28eb374731.png](https://i-blog.csdnimg.cn/blog_migrate/486d2425fdff9f711b1824e13e2034ad.png)
-
- 临界区:进程中访问临界资源的一段代码。
![76866354fdb68fa0a26b07574264b0eb.png](https://i-blog.csdnimg.cn/blog_migrate/6717b1ee592565cb3bb79628b8bdea0f.png)
-
-
- 就如上方所示,CSa 和 CSb 都是临界区。
- 临界区的互斥访问过程
- 我们保证进程可以互斥的访问临界区,我们会添加进入区和退出区。
- 进入区用于检查临界区状态,访问为忙则正在由代码访问临界区;访问空闲则马上将临界区状态置为忙碌,并对其访问。
- 退出区主要是释放临界区资源的使用权,将临界区状态置为空闲,是别的进程可以访问临界区。
-
![c1ddd6ddb46397f9a035f84593b9e1ac.png](https://i-blog.csdnimg.cn/blog_migrate/f6fa0414d829f7ad15f9f75ada3f1b42.png)
-
- 下面给出两个间接制约的例子:
- 两个进程A、B共享一台打印机
- 两个进程共享一个变量x ,设x的初值为10。P1和P2两个进程都对共享变量x执行加1的操作:
- 下面给出两个间接制约的例子:
p1: r1 := x;r1:= r1+1; x := r1 ;
p2: r2:= x;r2 := r2+1; x := r2 ;
-
-
-
- 该操作有两种可能的执行次序,如下:
- 第一种:按顺序执行,先执行 p1 再执行 p2,得到 x = 12
- 第二种:先执行 p1 的第一天语句,在全部执行 p2 ,再执行 p1 剩下的语句。得到 x = 11
- 该操作有两种可能的执行次序,如下:
-
-
直接制约:相互协作,保证先后顺序
- 举出两个例子:
- 病人就诊
![54de73d5805e46547b99a59836af682f.png](https://i-blog.csdnimg.cn/blog_migrate/aafffa758743c20914cf468a2fe40255.png)
-
- 共享缓冲区的计算进程与打印进程的相互协作
- 计算进程 cp和打印进程 iop公用一个单缓冲
- 共享缓冲区的计算进程与打印进程的相互协作
![4d625537519b0e3c2fc1f523a0ff51f9.png](https://i-blog.csdnimg.cn/blog_migrate/1cc2933de53054fac7ebe12f29cb3e1b.png)