在多道程序环境的系统中存在多个可以并发执行的进程,故进程间必然存在资源共享和互斥合作的问题。进程通信是指各个进程交换信息的过程。
同步与互斥
同步是合作进程间的直接制约问题,互斥是申请临界资源进程间的间接制约问题。
- 进程间的同步
在计算机系统中,多个进程可以
并发执行,每个进程都以各自独立的、不可预知的速度向前推进,但是需要在某些确定点上协调互相合作进程间的工作。例如,进程A向缓冲区送数据,进程B从缓存区取数据加工,当进程B要取数据加工时,必须是进程A完成了向缓存区送数据的操作,否则进程B必须停下来等待进程A的操作结束。
可见,所谓进程间的同步是指在系统中一些需要相互合作,协同工作的进程,这样的相互联系称为进程的同步。
- 进程间的互斥
进程的互斥是指系统中多个进程因争用临界资源而互斥执行。在多道程序系统环境中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,称为临界资源(Critical Resource, CR),如打印机、共享变量和表格等。
临界区管理的原则 临界区(Critical Section, CS)是进程中对临界资源实施操作的那段程序,对互斥临界区的管理的4条原则如下:
- 有空即进:当无进程处于临界区时,允许进程进入临界区,并且只能在临界区运行有限的时间。
- 无空则等:当有一个进程在临界区时,其他欲进入临界区的进程必须等待,以保证进程互斥的访问临界资源。
- 有限等待:对于要求访问临界资源的进程,应保证进程能在有限的时间进入临界区,以免陷入“饥饿”状态。
- 让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入忙等状态。
信息量与PV操作
荷兰学者Dijkstra于1965年提出的信号量机制是一种有效的进程同步与互斥工具。
信号量(Signal,S)的物理意义:S≧0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数。
信号量:是一种特殊的变量。
- 信号量可以表示资源数量;
- 信号量为负数时还可以表示排队进程数。
对于系统中的每个进程,其工作的正确与否不仅取决于它自身的正确性,而且与它在执行中是否与其他相关进程正确的实施同步互斥有关。PV操作是实现进程同步与互斥的常用方法。P操作和V操作是低级通信原语,在执行期间不可分割。其中,P操作表示申请一个资源,V操作表示释放一个资源。
- P操作的定义:S=S-1,若S≧0,则执行P操作的进程继续执行;若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
- V操作的定义:S=S+1,若S>0,则执行V操作的进程继续执行;若S≦0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续。
思考:
2台打印机,3个进程要互斥使用打印机。模拟整个PV过程,信号量S的初始值为多少?取值范围是多少?
答:S初始值为2,取值范围是【-1~2】