一、进程的同步机制
目的:解决并发进程在执行过程中,因竞争有限共享资源,有可能引起的运行混乱、死锁、结果不可再现等问题
临界区:禁止一个或多个并发进程,申请已被另一个进程正在使用的资源,该资源具有共享、不可剥的基本特征。
渡河的船(船上船下),教室的门(门里门外)。
间接制约
指一组并发进程因资源共享(如公用数据及变量)
对其执行速度的影响(制约)的过程
进程PA(慢)是因为进程PB占用了两者共享的同一资源而不得不等待。所以进程PA的慢是因为进程PB的间接制约而引起的。
进程互斥
一组并发进程因间接制约而互相合作、互相等待、为保证结果可以再现协调推进的过程,称为进程的互斥
(我用你不能用)
直接制约
2个在异步环境下的并发进程,各自执行的结果互
为对方继续执行的条件,由此引起的对其执行速度的限制过程,称为直接制约。
进程同步
2个并发进程,因直接制约,互相发送消息,而进行的相互合作、相互等待,使其按照一定的速度执行的过程称之为同步。
异步环境
在同一段时间内,一组并发进程,各自以不可预知的速度独立地向前推进,称为进程的异步性或异步环境。
(进程起始时间的随机性 )
信号量
一种对共享资源进行控制的信号式标志型变量。
通过对该变量值的判断,向潜在准备使用某一共享资源的进程指明,该资源正在被另外一个进程使用。只有该资源被释放后,才有被使用的可能。
整型信号量不遵循“让权等待”的准则
记录型信号量遵循“让权等待”的准则
PV原语
p加v减
互斥实现的条件
临界区空闲,进程进入一个
临界区里面只能有一个进程,外面的进程互不干扰
在限定时间内,进程必须进入临界区,防止死锁。
当进程不能进入临界区,应通知CPU
进程互斥的负面影响,解决的途径与方法
软件的方法是不可取的
硬件解决的方法:为全局和每个硬件设置一个布尔变量(即逻辑值的真假)
管程是程序,是一个对共享资源的数据结构进行操作的管理程序。包括操作过程在内以及资源管理程序。
每个想要访问临界区的资源的进程,都必须通过管程的准许才能进行访问。并且他是一个独立的程序,对外透明,为进程提供方法以供调用。
管程与进程的区别
数据结构不同,进程定义的pcb私有;管程定义的是公有。进程是由顺序程序执行的操作,管程主要是进行同步和初始化操作;进程为了实现系统的并发性,管程解决共享资源的互斥问题。管程等着被调用,进程主动去工作,进程并发执行,管程不能,进程动态,管程是一个模块。