Alex_McAvoy

想要成为渔夫的猎手

进程同步与进程互斥的基本概念

【临界资源与临界区】

虽然多个进程可以共享系统中的各种资源,但有许多进程一次只能被一个进程使用,这种一次仅允许一个进程使用的资源被称为临界资源,例如打印机、磁带机等

对临界资源的访问,应采取互斥的方式进行访问,在每个进程中访问临界资源的代码被称作临界区

显然,若能保证诸进程互斥地进入自己的临界区,便可实现进程对临界资源的互斥访问,为此,在每个进程进入临界区前,应先对欲访问的临界资源进行检查,看他是否正在被访问

由此,可以在临界区前增加一段用于检查的代码:如果某时刻临界资源正被访问,那么进程就可以访问该临界资源,并设置该临界资源正被访问的标志;如果某时刻临界资源正被访问,那么该进程就不能进入临界区

于是,可以将对临界资源的访问过程分为四个部分:

  • 进入区:用于检查能否进入临界区
  • 临界区:访问临界资源的代码
  • 退出区:将正在访问临界区的标志清除
  • 剩余区:进程中除进入区、临界区、退出区的其他部分

因此,一个访问临界资源的循环进程可以被描述为:

1
2
3
4
5
6
while (true) {
entry section; //进入区
critical section; //临界区
exit section; //退出区
remainder section //剩余区
}

【进程间的制约关系】

多个程序在并发执行时,对于同处一个系统中的多个进程,由于他们共享系统中的资源,或为完成某一任务而相互合作,使得他们存在制约关系,制约关系分为以下两种

同步

同步,又称直接制约关系,其是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系

可以发现,进程间的直接制约关系就是源于它们间的相互合作

互斥

互斥,又称间接制约关系,当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许去访问该临界资源

为禁止两个进程同时进入临界区,同步机制应遵循以下四条规则:

  • 空闲让进:当无进程处于临界区时,表明临界资源处于空闲状态,此时允许请求进入临界区的进程进入
  • 忙则等待:当有进程处于临界区时,表明临界资源处于忙碌状态,此时请求进入临界区的进程必须等待,以保证对临界资源的互斥访问
  • 有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入 死等
  • 让权等待:进程无法进入自己的临界区时,应立刻师范处理机,以免陷入 忙等
感谢您对我的支持,让我继续努力分享有用的技术与知识点!