概念
进程同步:由进程异步所导出的概念。由于多道程序设计的异步性,导致内存中的进程时走时停,以不可预知的速度前进;但某些情况下又要求固定某些进程的先后顺序。所谓进程同步就是指进程之间的直接制约关系,具体体现在进程的执行顺序上。
进程互斥:是由于进程之间均需要访问同一临界资源,而临界资源同一时间又只能允许一个进程访问,剩余进程只能阻塞。
为了禁止两个进程同时进入临界区,同步机制需遵守以下准则:
空闲让进
忙则等待
有限等待
让权等待
临界区互斥实现方法
软件实现
单标志法
双标志先检查
双标志后检查
Peterson法
- 单标志法
初始化一个公用整型变量turn,该变量值表明当前允许访问临界资源的进程号,且在该进程退出临界区时修改turn值。
缺点:当该初始化进程未访问该资源时也无法使得其他进程访问,违背空则让进。 - 双标志先检查
设置每个进程设置标志tag[i],false表明不想,true表明想,初始化均为false。首先检查对方是否想进入,若想则阻塞本进程,不想则修改自身标志为true。
缺点:由于进程的异步性,可能导致多进程同时进入临界区,违背忙则等待。 - 双标志后检查
类比于双标志先检查,双标志后检查先标记自身想要进入再检查对方标志值。
缺点:可能会产生死锁,违背忙则等待。 - pe