文档详情

嵌入式系统教学课件:操作系统4-同步.ppt

发布:2017-05-13约3.86千字共21页下载文档
文本预览下载声明
进程管理 进程同步 同步的概念 定义:我们把在异步环境下的一组并发进程因直接制约,互相发送消息,并进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。 具有同步关系的一组并发进程称为合作进程;合作进程间互相发送的信号称为消息或事件。 进程同步 例:计算进程和打印进程公用同一缓冲区Buf。 PC(计算) PP(打印) A:local Bufˊ B:local Pri Repeat Repeat Bufˊ Buf Pri Buf Until Bufˊ=空计算 Until Pri ≠ 空 得到计算结果 打印Buf中数据 Buf 计算结果 清除Buf中数据 Goto A Goto B 进程同步 问题:浪费CPU时间。 采用消息的方法实现直接制约(同步): ①设过程Wait(过程名)表示进程等待合作进程发来消息。 过程signal(消息名)表示向合作进程发送消息。 ②设消息名Bufempty表示Buf空,设消息名Buffull表示Buf满(装满数据)。 ③初始化:Bufempty=true,Buffull=false 进程同步 Pc Pp A:wait(Bufempty) B:wait(Buffull) 计算 打印Buf中的数据 Buf 计算结果 清除Buf中的数据 Bufempty false Buffull false Signal(Buffull) signal(Bufempty) Goto A Goto B 进程同步 私用(有)信号量 把各进程间发送的消息作为信号量看待,这种信号量只与制约进程和被制约进程有关,但不与整组并发进程有关,这种信号量称为私用信号量(Private Semaphore)。 与私用信号量相对应,我们称进程互斥时使用的信号量为公用信号量。 进程同步 用P、V原语操作实现进程的直接制约(同步) 例子:设进程和通过缓冲区队列传送数据(如图3.13), PA为发送进程,PB为接收进程;PA发送数据时调用发送过程deposit(data),PB接收数据时调用过程remove(data)。且数据的发送与接收过程满足如下条件: 1)在PA至少送一块数据入一个缓冲区之前,PB不可能从缓冲区中取出数据(假定数据块长等于缓冲区长度)。 进程同步 2)PA往缓冲队列发送数据时,至少有一个缓冲区是空的; 3)由PA发送的数据块在缓冲队列中按先进先出(FIFO)方式排列。 PA Buff1 buff2 buff3 …. Buffn PB 进程同步 我们按如下三步描述过程deposit(data)和 remove (data) 1)设Buf-empty为进程PA的私用信号量,表示缓冲区是否有空;Buf-full为进程PB的私用信号量,表示缓冲区是否有数可取; 2)Buf-empty的初始值为n (n为缓冲队列的缓冲区个数),Buf-full的初始值为0; 进程同步 3) 算法描述如下: PA: deposit(data) Begin local x; P(Buf-empty); 按FIFO方式选择一个空缓冲区Buf(x); Buf(x) data; Buf(x)置满标记; V(Buf-full); End. 进程同步 PB: remove(data) Begin local x; P(Buf-full); 按FIFO方式选择一个装满数据的缓冲区Buf(x); data Buf(x); Buf(x)置空标记; V(Buf-empty); End. 进程同步 这里,
显示全部
相似文档