文章目录
进程同步
1.进程同步的基本概念
进程同步的主要任务是对多个相关进程在执行次序上进行协调,
使并发执行的诸进程之间能够按照一定的规则(或时序)共享系
统资源,并能很好的相互合作,从而使程序的执行具有可再现性。
两种制约关系
在多道程序环境下,对于处于一个系统中的多个进程,由于他们共享资源,或为完成某一任务而相互合作,他们之间可能存在着以下两种形式的制约关系:
1)间接相互制约:多个程序在并发执行时,由于共享系统资源,如CPU,I/O设备等,致使这些并发执行的程序之间形成相互制约的关系。为了保证这些进程的能有序执行,对于系统中的这类资源,必须由系统统一分配,即用户在使用之前,应先提出申请,而不允许用户进程直接使用。这种制约关系源于对该类资源的共享。
2)直接相互制约关系:为了完成某任务而建立的两个或者多个进程。这些进程将为完成同一项任务而相互合作。例如生产者——消费者问题就存在着相互制约关系进程间的直接制约关系源于他们之间的相互合作。
在多道程序环境下,由于存在着上述两类相互制约关系,进程运行过程中是否能获得处理机运行以及以怎样速度运行,并不是进程自身能控制的,此即进程的异步性。
临界资源和临界区
在计算机中有许多资源一次只能允许一个进程使用,如果多个进程同时使用则可能造成系统的混乱,这些资源被称作临界资源(比如打印机)。多个进程同时使用临界资源会使其结果具有不可再现性。
在每个进程中,访问临界资源的那段代码称作临界区。为了使进程能有效共享临界资源,并使程序的执行具有可再现性,系统必须保证进程互斥的使用临界资源,即保证他们互斥的进入临界区。因此,必须在临界区前面加一段代码,用来检查对应的临界资源是否正被其他进程访问,这段代码称为进入区;相应的在临界区后边也要加一段代码称为退出区,用于将临界区从正在被访问的标志恢复为未被访问的标志。
同步机制应该遵循的规则
用来实现互斥的共享机制必须遵守以下四个规则:
1)空闲让进:临界区空闲时,应允许一个请求进入临界区的进程立即进入临界区,以便有效的利用资源。
2)忙则等待:当临界资源正在访问时,其他要求进入临界区的进程必须等待,以保证对临界资源的互斥访问。
3)有限等待:任何要求访问临界资源的进程应能在有限时间内进入临界区。
4)让权等待:不能进入临界区的进程应立即释放CPU资源,以免“忙等”。
2.信号量机制
介绍:信号量机制是荷兰学者Dijkstra在1965年提出的一种同步机制。
本篇文章注重介绍整型信号量和记录型信号量。
整型信号量
最初由Dijkstra把整型信号量定义为一个用于表示资源数目的整型量S,除了初始化外&