内容正文:
操作系统原理(第2版)
第3章 进程同步与通信
多个并发执行的进程在运行过程中共享系统中的CPU、内存、I/O设备和文件等资源,系统资源的共享使得一个进程的执行可能会受到来自其他进程直接或间接的制约。
为了协调进程之间的制约关系,达到资源共享和进程合作的目的,就必须引入进程同步机制,通过进程的互斥与同步,保证各并发执行的进程能有条不紊地运行。
协调进程之间的关系是通过进程之间的通信机制来实现的,低级通信主要是通过控制进程的执行速度来保证进程之间的互斥与同步,高级通信则要在进程之间传送大量的数据。
此外,进程的并发执行还会带来一个严重问题——死锁。
第3章 进程同步与通信
多个并发执行的进程在运行过程中共享系统中的CPU、内存、I/O设备和文件等资源,系统资源的共享使得一个进程的执行可能会受到来自其他进程直接或间接的制约。
为了协调进程之间的制约关系,达到资源共享和进程合作的目的,就必须引入进程同步机制,通过进程的互斥与同步,保证各并发执行的进程能有条不紊地运行。
协调进程之间的关系是通过进程之间的通信机制来实现的,低级通信主要是通过控制进程的执行速度来保证进程之间的互斥与同步,高级通信则要在进程之间传送大量的数据。
此外,进程的并发执行还会带来一个严重问题——死锁。
第3章 进程同步与通信
3.1 进程同步的基本概念
3.2 进程互斥方法
3.3 信号量机制
3.4 经典互斥与同步问题
3.5 经典互斥与同步问题的应用
3.6 管程机制
3.7 进程通信
3.8 死锁
3.1.1 并发进程的关系
经过大量的实践和分析后发现,多个并发执行的进程存在两种类型的关系:无关和相关。无关的进程之间在并发执行后,可以保证程序的可再现性,只有多个相关的进程之间并发执行后,才可能破坏程序的可再现性,对于相关的并发进程,则存在着以下两种相互制约的关系
(1)间接制约关系。一组(两个或多个)进程共享一种资源,且该资源一次仅允许一个进程使用;一个进程正在访问或使用该资源时,就制约其他进程对该资源的访问或使用,否则就可能 造成执行结果的错误。
像打印机这种在一段时间内只能由一个进程使用的资源称为独占资源或互斥资源。多个并发进程对互斥资源的共享导致进程之间出现了间接制约关系。间接制约关系的存在使得多个并发进程不能同时访问互斥资源,只有其他进程没有占用该互斥资源时,当前运行的进程才能访问它。也就是说,一个进程通过共享互斥资源来暂时限制(间接制约)其他进程的运行。
3.1 进程同步的基本概念
(2)直接制约关系。
这种制约关系是由任务协作引起的,几个进程相互协作完成一项任务,这些进程因任务性质的要求必须按事先规定好的顺序依次执行,才能顺利的完成任务并得到正确的结果,否则可能无法完成任务或得到错误的结果。在直接制约关系中,一个进程的执行状态直接决定(直接制约)了相互协作的另一个或几个进程能否执行。
3.1 进程同步的基本概念
在包裹自动分拣系统中,分拣筐一次只能存放一个包裹,拣入进程选择包裹放入分拣筐,拣出进程则从分拣筐中取出包裹,拣入进程和拣出进程相互协作完成包裹的分拣任务。正常情况下分拣系统将有条不紊地工作,但可能会出现在分拣筐中包裹未取走之前,拣入进程又将另一包裹放入分拣筐中的情况;也可能会出现分拣筐中无包裹时,拣出进程要从分拣筐中取走包裹的情况。因此,必须事先规定好拣入进程和拣出进程的执行顺序,在拣出进程未取走分拣筐中存放的包裹之前,不允许执行拣入进程;当分拣筐为空且拣入进程未将包裹放入分拣筐之前,不允许执行拣出进程。拣入进程和拣出进程彼此直接制约对方的运行,相互协调地完成既定任务。
直接制约关系
3.1.2 进程的互斥与同步
(1)进程同步。进程间的同步是指某些进程之间在逻辑上的相互制约关系。也就是说,若干进程为完成一个共同的任务而相互合作,由于合作的每一个进程都是以各自独立的、不可预知的速度向前推进,这就需要相互合作的进程在某些协调点处来协调它们的工作。当一个合作进程到达此协调点后,在未得到其他合作进程发来的消息之前则阻塞自己,直到其他合作进程给出协调信号后,才被唤醒再继续执行。进程之间这种相互合作等待对方消息的协调关系就称为进程同步。
(2)进程互斥。进程互斥是指某一资源同一时间只允许一个进程对其进行访问,这种访问具有唯一性和排它性。进程互斥通常是进程之间争夺互斥资源而引起的,在这种情况