操作系统基础13-进程同步与互斥的概念
2020-11-02 11:26·重学IT的老猫
进程同步是一个操作系统级别的概念,在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,引入了进程同步的概念。
进程同步的基本概念:临界资源、同步和互斥
临界资源(Critical Resouce)
在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源)。但对于某些资源来说,其在同一时间只能被一个进程所占用。这些一次只能被一个进程所占用的资源就是所谓的临界资源。典型的临界资源比如物理上的打印机,或是存在硬盘或内存中被多个进程所共享的一些变量和数据等(如果这类资源不被看成临界资源加以保护,那么很有可能造成丢数据的问题)。
对于临界资源的访问,必须是互斥进行。也就是当临界资源被占用时,另一个申请临界资源的进程会被阻塞,直到其所申请的临界资源被释放。而进程内访问临界资源的代码被称为临界区。
对于临界区的访问过程分为四个部分:
1.进入区:查看临界区是否可访问,如果可以访问,则转到步骤二,否则进程会被阻塞
2.临界区:在临界区做操作
3.退出区:清除临界区被占用的标志
4.剩余区:进程与临界区不相关部分的代码
同步
同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。
例如,输入进程A通过单缓冲向进程B提供数据。当该缓冲区空时,进程B不能获得所需数据而阻塞,一旦进程A将数据送入缓冲区,进程B被唤醒。反之,当缓冲区满时,进程A被阻塞,仅当进程B取走缓冲数据时,才唤醒进程A。
进程之间的同步
互斥
互斥亦称间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待, 当占用临界资源的进程退出临界区后,另一进程才允许去访问此临界资源。 例如,在仅有一台打印机的系统中,有两个进程A和进程B,如果进程A需要打印时, 系统已将打印机分配给进程B,则进程A必须阻塞。一旦进程B将打印机释放,系统便将进程A唤醒,并将其由阻塞状态变为就绪状态。
进程之间的互斥
其他相关概念
死锁(Deadlock)
- 两个或两个以上的进程,因其中的每个进程都在等待其他进程做完某些事情而不能继续执行,所有进程都阻塞等待,而且永远阻塞等待
活锁(Livelock)
- 两个或两个以上进程为了响应其他进程中的变化而持续改变自己的状态,但不做有用的工作
饥饿(Starvation)
- 一个可运行的进程被调度程序无限期地忽略,不能被调度执行的情形。
原子操作(Primitive)
- 保证指令序列要么作为一个组来执行,要么都不执行
解决进程同步互斥的方法
- 软件方法
- 硬件方法
- 信号量机制
- 管程机制
软件方法解决进程互斥
为禁止两个进程同时进入临界区,同步机制应遵循以下准则:
- 空闲让进: 临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。
- 忙则等待: 当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
- 有限等待: 对请求访问的进程,应保证能在有限时间内进入临界区。
- 让权等待: 当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。