《《微机原理及接口技术》全套电子课件教案-作业解答.ppt》由会员分享,可在线阅读,更多相关《《微机原理及接口技术》全套电子课件教案-作业解答.ppt(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、3.10.设在书设在书3.6节中所描述的生产者节中所描述的生产者-消消费者问题中费者问题中,其缓冲局部为其缓冲局部为m个长度相个长度相等的有界缓冲区组成等的有界缓冲区组成,且每次传输数据且每次传输数据长度等于有界缓冲区长度以及生产者长度等于有界缓冲区长度以及生产者和消费者可对缓冲区同时操作。重新和消费者可对缓冲区同时操作。重新描述发送过程描述发送过程deposit(data)和接收过和接收过程程remove(data)。设第设第I块缓冲区的公用信号量为块缓冲区的公用信号量为mutexI,保证生产保证生产者进程和消费者进程对同一块缓冲区操作的互斥者进程和消费者进程对同一块缓冲区操作的互斥,初值为
2、初值为1。设信号量设信号量avail为生产者进程的私用信号量为生产者进程的私用信号量,初值为初值为m。信号量信号量full为消费者进程的私用信号量为消费者进程的私用信号量,初值为初值为0。deposit(data)BeginP(avail)选择一个空缓冲区选择一个空缓冲区iP(mutextI)送数据入缓冲区送数据入缓冲区iV(full)V(mutexI)EndRemove(data)BeginP(full)选择一个满缓冲区选择一个满缓冲区IP(mutextI)取缓冲区取缓冲区i中的数据中的数据V(avail)V(mutextI)EndPBPA3.11两进程两进程PA,PB通过两通过两FIFO缓
3、冲区队列连接缓冲区队列连接,每个缓冲区每个缓冲区长度等于传送消息长度。长度等于传送消息长度。进程进程PA,PB之间的通信满足如下条件之间的通信满足如下条件:(a)至少有一个空缓冲区存在时至少有一个空缓冲区存在时,相应的发送进程才相应的发送进程才能发送一个消息。能发送一个消息。(b)当缓冲队列中至少存在一个非空缓冲区时当缓冲队列中至少存在一个非空缓冲区时,相应的接收相应的接收进程才能接收一个消息。进程才能接收一个消息。试描述发送过程试描述发送过程Send(I,m)和接收过程和接收过程receive(I,m),这里这里i代表代表缓冲队列。缓冲队列。队列队列0队列队列1bufempty0,buffu
4、ll1是PA的私有信号量,buffull0,bufempty1是PB的私有信号量。bufempty0=bufempty1=n,(n为缓冲区队列的缓冲区个数)buffull0=buffulll=0PA发送过程发送过程Send(0,m)和接收过程和接收过程receive(1,m)send(0,m)BeginP(bufempty0)按按FIFO方方式式选选择择一一个个空缓冲区空缓冲区送送 数数 据据 入入 缓缓 冲冲 区区 V(buffull0)endReceive(1,m)BeginP(buffull1)按按FIFO方式选择一个装满数据方式选择一个装满数据的缓冲区的缓冲区取缓冲区取缓冲区i中的数据中的数据V(bufempty1)EndPB发送过程发送过程Send(1,m)和接收过程和接收过程receive(0,m)send(1,m)BeginP(bufempty1)按按FIFO方方式式选选择择一一个个空缓冲区空缓冲区送送 数数 据据 入入 缓缓 冲冲 区区 V(buffull1)endReceive(0,m)BeginP(buffull0)按按FIFO方式选择一个装满数据方式选择一个装满数据的缓冲区的缓冲区取缓冲区取缓冲区i中的数据中的数据V(bufempty0)End