操作系统原理 第四章 进程通信.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:59 大小:314KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

操作系统原理 第四章 进程通信.ppt

操作系统原理第四章进程通信.ppt

预览

免费试读已结束,剩余 49 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第四章进程通信2、相关进程间的关系1)直接作用(相互合作)同步关系:合作进程之间再执行次序上的协调关系2)间接作用(资源共享)互斥关系:一个进程正在访问共享资源,另一个要访问该资源的进程必须等待。3、与时间有关的错误例4-24、临界资源和临界区临界资源:一次仅允许一个进程所使用的资源。如物理设备。(CR:criticalresource)临界区:每个进程中访问临界资源的那段程序代码。(CS:criticalsection)进程的互斥关系:当一个进程进入临界区使用临界资源时,另外的进程必须等待;当占有临界资源的进程推出临界区后,另一个进程才被允许进入其临界区。entrysectioncriticalsectionexitsectionremaindersection•临界区(criticalsection):进程中访问临界资源的一段代码•进入区(entrysection):在进入临界区之前,检查可否进入临界区的一段代码。如果可以进入临界区,通常设置相应“正在访问临界区”标志•退出区(exitsection):用于将“正在访问临界区”标志清除剩余区(remaindersection):代码中的其余部分。同步机构设计准则1、空闲让进2、忙则等待3、多中则一4、有限等待5、让权等待原则2反映了互斥的基本含义,即使用临界区资源的排他性,原则1表示要有效利用临界资源;原则3是原则1和2的一个特殊情况;原则4和5是为了避免进程间发生等待或死锁。三、硬件指令体制1、测试与设置技术利用TS指令实现的进程互斥算法是:每个临界资源设置一个公共布尔变量lock,True表示正被占用,False表示空闲,初值为False.进程使用临界资源时,应该按照如下三步:1)测试lock值,如果为真,表示资源已经被占用,则不断等待测试;如果为假,则表示资源可用,这时候把lock设置为真,用来排斥其他进程使用资源,我们可以把这个过程叫做关锁。2)进程进入临界区,访问临界资源3)使用完毕,推出临界区,再把lock设置为假,以释放资源,让其他进程使用。这个过程可以叫做开锁。2、TS指令FunctionTS(Varlock:boolean):BooleanBeginTS:=lock;Lock:=true;EndTS指令的执行是不可分割的,它实际上是一条原语。利用TS指令可以简单有效的实现互斥,以上指令是TS指令的功能描述,并非软件实现,事实上,TS指令的实现是由硬件直接完成的,并由硬件保证其原子操作性能。3、利用TS指令完成进程互斥每个临界资源设置一个公共布尔变量lock,初值为FALSE。在进入区利用TS进行检查:有进程在临界区时,TS为TURE,则重复检查;直到其它进程退出时,TS为FALSE,检查通过;whileTS(lock);entrysectioncriticalsection;lock:=false;exitsectionremaindersection;例4-5•硬件方法的优点–1)适用于任意数目的进程,在单处理器或多处理器上–2)简单,容易验证其正确性–3)可以支持进程内存在多个临界区,只需为每个临界区设立一个布尔变量•硬件方法的缺点–1)等待要耗费CPU时间,不能实现"让权等待"–2)可能"饥饿":从等待进程中随机选择一个进入临界区,有的进程可能一直选不上3)可能死锁四、信号量机制一个进程强制的被停在一个特定的地方直到收到一个专门的信号,这个信号就是信号量,其工作方式类似于铁路交通管理中的信号灯。信号量是一种特殊的变量,它表面形式是一个整型变量或者一个整型变量附加一个队列,它只能被特定的原语操作来执行。1、整型信号量将信号量定义为一个整型变量s信号量s>=0表示可用的临界资源实体数信号量s<0表示等待使用该资源的进程数可执行的两个标准原子操作为wait(s)和signal(s)Wait(s):Whiles<=0dono-op当发生s<=0时,表示临界资源都使用了,陷入了忙等待状态S:=s-1如果s>0,表示还有临界资源,可以被使用,则将临界资源数减1Signal(s):s:=s+1临界资源数加一2、记录型信号量用一个整型变量value表示资源数量,用一个进程链表L表示所有等待该信号量的进程的PCB。初始化指定一个非负整数值value,表示空闲资源总数(又称为“资源信号量”)若为非负值表示当前的空闲临界资源数;若为负值其绝对值表示当前等待临界资源的进程数。wait(s){s.value=s.value-1;if(s.value<0){该进程状态置为等待状态将该进程的PCB插入相应的等待队列