为什么要引入进程同步的概念?
多道程序环境下的进程并发执行,它们相互之间存在着不同的制约关系,为了理解和协调这种制约的关系,引入了进程同步的概念。
1.临界资源
临界资源是一次只能为一个进程使用的资源。
由于临界资源的特性,就决定了 对它的访问必须是互斥的。
在每个进程中,访问临界资源的那段代码称为临界区。为了保证临界资源的正确使用。
可把临界资源的访问分为四个部分:
- 进入区:对申请访问的进程进行检查,若能进入临界区,则应设置正在访问临界区的标志,区别其他不能进入的进程。
- 临界区:进程中访问临界资源的那段代码,又称临界段。
- 退出区。将正在访问临界区的标志清除,以退出对临界资源的访问。
- 剩余区。代码中的其余部分。
2.同步
同步亦称直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待,传递信息所产生的制约关系。进程间的直接制约关系源于它们之间的相互合作。
3.互斥
互斥也称直接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许去访问此临界资源。
个人理解同步和互斥,主要是抓住次序和时间两个关键词。同步是有先后次序的,需要完成特定的任务而解决资源的受限。而互斥存在着竞争关系,它们都有访问临界资源的需求,下一时刻谁会访问并不是确定不变的。
为禁止两个进程同时进入临界区,同步机制应遵循以下准则:
- 空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。
- 忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
- 有限等待。对请求访问的进程,应保证能在有限时间内进入临界区。
- 让权等待。当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。