主题
进程同步与进程互斥
01
进程同步
问题
在多道批处理系统中,多个进程是并发执行的,而并发执行的进程具有异步性,也就是说,各个进程以各自独立的、不可预知的速度向前推进。这样会带来什么问题呢?如果有 AB 两个进程分别进行读写数据的操作,那么写数据应该发生在读数据之前,而实际上,由于异步性的存在,可能会发生先读后写的情况,而此时由于缓冲区为空,该读数据进程就会被阻塞。
解决方法:
所以,我们要通过进程同步来解决此类问题。与进程同步相关的也就是直接制约关系,指的是多个进程一起完成某个任务,这些进程因为合作、因为需要在某些位置上协调他们的工作次序而产生了某些制约关系。
1 概念
进程同步机制对相关进程在执行次序上进行协调,使并发的进程之间按一定规则共享资源,使程序的执行具有可再现性。【题目】在操作系统中,要对并发进程进行同步的原因是()。A.进程必须在有限的时间内完成B.进程具有动态性C.并发进程是异步的D.进程具有结构性解析:C。进程同步是指进程之间一种直接的协同工作关系,这些进程的并发是异步的,它们相互合作,共同完成一项任务。02
进程互斥
问题
在多道批处理系统中,多个进程是并发执行的,而并发执行的进程不可避免地需要共享一些系统资源(比如内存、打印机、摄像头等)。有些资源在一个时间段内只允许一个进程使用,诸如各种物理设备、变量、数据、内存缓冲区等,这些称之为临界资源——也就是说,一方面,并发执行的进程需要共享资源;另一方面,临界资源的访问又必须是互斥地进行(不能同时共享),这会导致资源访问上的矛盾。【题目】以下()不属于临界资源。A. 打印机B. 非共享数据C. 共享变量D. 共享缓冲区解析:B。临界资源是互斥共享资源,非共享数据不属于临界资源。打印机、共享变量和共享缓冲区都只允许一次供一个进程使用。【题目】以下()属于临界资源。A. 磁盘存储介质B. 公用队列C. 私用数据D. 可重入的程序代码解析:B。临界资源与共享资源的区别在于,在一段时间内能否允许被多个进程访问(并发使用),显然磁盘属于共享设备。公用队列可供多个进程使用,但一次只可供一个进程使用,试想若多个进程同时使用公用队列,势必造成队列中的数据混乱而无法使用。私用数据仅供一个进程使用,不存在临界区问题,可重入的程序代码一次可供多个进程使用。解决方法:
所以,我们要通过进程互斥来解决此类问题。与进程互斥相关的也就是间接制约关系,指的是当 A 进程在访问某个临界资源时,另一个也想要访问该资源的 B 进程就必须等着,直到 A 进程访问结束并释放资源后,B 进程才能去访问。
03
两种形式的制约
1 概念
由于进程具有独立性和异步性等并发特征,计算机的资源有限,导致了进程之间的资源竞争和共享,也导致了对进程执行过程的制约。
① 间接制约:进程间无关,但都要使用临界资源
② 直接制约:进程间协作,需要按照某些规则运行
例:进程A和进程B通过共享缓冲区协作完成数据处理,进程A负责产生数据并放入缓冲区,进程B从缓冲区读数据并输出。进程A和进程B之间的制约关系是( )。
A. 互斥关系B.同步关系C. 互斥和同步关系D. 无制约关系解析:C。并发进程因为共享资源而产生相互之间的制约关系,可以分为两类:①互斥关系,指进程之间因相互竞争使用独占型资源(互斥资源)所产生的制约关系;②同步关系,指进程之间为协同工作需要交换信息、相互等待而产生的制约关系。本题中两个进程之间的制约关系是同步关系,进程B必须在进程A将数据放入缓冲区后才能从缓冲区中读出数据。此外,共享的缓冲区一定是互斥访问的,所以它们也具有互斥关系。实现
do { extry section; // 进入区 critical section; // 临界区 exit section; // 退出区 remainder section; // 剩余区} while(true)
04
进程对临界资源的访问过程
1 概念进入区:A 进程想要访问临界资源,首先会在进入区检查是否可以进入,由于此时没有其它进程占用临界资源,所以检查通过,同时它设置了一个 Flag 标志当前自己正在访问临界资源;临界区:实际访问临界资源的那段代码退出区:负责解除之前的 Flag剩余区:其它处理对于 B 进程,如果此时它也想要访问这个资源,同样就会在进入区做一个检查,它知道了 A 进程正在访问,所以自己就不能访问了。这样就实现了资源访问的互斥。例:在一段时间内只允许一个进程访问的资源,称为( )。A.共享资源B.临界区C.临界资源D.共享区解析:C.在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。计算机系统中的大多数物理设备,以及某些软件中所用的栈、变量和表格,都属于临界资源,它们要求被互斥地共享。05
四个原则
1 概念空闲让进:临界区空闲时,说明没有进程使用临界资源,此时应该让想要进入临界区的进程立刻进来忙则等待:如果已经有进程进入临界区,则其它同样想要进入的进程只能等着有限等待:不能让进程一直干等着,要保证他在有限的时间内可以进入临界区让权等待:当进程不能进入自己的临界区时,应该立刻释放处理机,防止进程陷入“忙等”状态。例:以下不是同步机制应遵循的准则的是()。A. 让权等待B. 空闲让进C. 忙则等待D. 无限等待解析:D。同步机制的4个准则是空闲让进、忙则等待、让权等待和有限等待。