第二部分:进程同步
进程同步的基本概念
在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,引入进程同步的概念。
临界资源的概念
虽然多个进程可以共享系统中的各种资源,但其中许多资源一次只能为一个进程所用,我们将一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如打印机等。
互斥的访问临界资源过程:
1.进入区:尝试进入临界区,成功则加锁(lock)(有可能失败,然后反复循环尝试进入,其他进程就会阻塞在那里)
2.临界区:访问共享资源
3.退出区:解锁,唤醒其他阻塞进程(解锁成功的进程去唤醒阻塞进程,注意有可能解锁不成功,就会进入死锁)
4.剩余区:其他代码
同步进制的准则:空闲让进、忙则等待、有限等待、让权等待
软件实现临界资源访问方法
单标志法:标志依赖对方,然后有一方完成后不需要继续了,另一方就因为标志未修改不能进临界区了
双标志法先检查:双方同时进
双标志法后检查:双方卡外面进不去
皮特森算法:违背“让权等待”,因为while始终占用CPU执行权,一直执行代码(“忙等”状态),没有进入阻塞状态
(注:有时候“忙等”状态比阻塞状态好,因为阻塞状态要保存现场以及后续转换成本高)
硬件实现临界资源访问方法
中断屏蔽方法(硬件指令):在共享资源临界区前后切换,在执行过程中禁止一切中断
TS指令/TSL指令:每次读出旧标志,然后设置上锁(原子操作),检查旧标志来判断是否临界区能用【违背“让权等待”,会发生“忙等”,因为要一直判断标志位】
Swap指令:设置一个标志位,置为true,然后和当前锁状态标志进行交换(和上面的逻辑一样)
信 量机制
只能被wait§和signal(V)两个原语访问,原语不能被中断执行,因为原语对变量的操作过程若被打断,可能回去运行另一个对同一变量的操作过程,从而出现临界段问题。
整型信 量:整型量S用于表示资源数目,PV操作可描述为:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!