经典进程的同步问题

经典进程的同步问题

ID:46922789

大小:234.66 KB

页数:18页

时间:2019-11-30

经典进程的同步问题_第1页
经典进程的同步问题_第2页
经典进程的同步问题_第3页
经典进程的同步问题_第4页
经典进程的同步问题_第5页
资源描述:

《经典进程的同步问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2.4经典进程的同步问题在多道程序环境下,进程同步问题十分重要,出现一系列经典的进程同步问题,常被用于研究、设计与评价一个同步机制,同时为解决新的并发程序设计问题提供了重要的参考,其中代表性有:生产者—消费者问题读者—写者问题哲学家进餐问题作业1、问题描述描述了一组生产者向一组消费者提供产品,它们共享一个有界缓冲池,池中有n缓冲区,生产者向其中投放产品,消费者从中取得产品消费。如图所示。P1P2…pmC1C2…Cn…生产者消费者产品有界缓冲池某个生产者进程生产产品并放入缓冲区……生产一个产品申请一个可放产品的空缓冲区申请临界资源(有界缓冲池)的使用放产品到指定缓冲区释放临界资源(有

2、界缓冲池)的使用释放一个装有产品的缓冲区……某个某个消费者进程消费从缓冲区取产品并消费……申请一个装有产品的缓冲区申请临界资源(有界缓冲池)的使用从指定缓冲区取出产品释放临界资源(有界缓冲池)的使用释放一个空缓冲区消费此产品……所需信号量、物理意义及初值两个同步信号量:empty:表示空缓冲区的数目,其初值为有界缓冲区的大小n。Full:表示装有产品的缓冲区数目(即产品数),初值为0.互斥信号量:Mutex:表示互斥使用该有界缓冲池这一临界资源,初值为1。semaphorefull=0;/*表示满缓冲区的数目*/semaphoreempty=n;/*表示空缓冲区的数目*/semap

3、horemutex=1;/*表示对有界缓冲池进行互斥操作*/{……生产一个产品;wait(empty);wait(mutex);将一个产品送入缓冲区;signal(mutex);signal(full);……}Producer(i){……wait(full);wait(mutex);从缓冲区取走一个产品;signal(mutex);signal(empty);消费一个产品;……}consumer(j)注意事项1.在进程的同步与互斥问题中,P,V操作必须成对出现,有一个P操作就一定有一个V操作。当为互斥操作时,它们同处于同一进程;当为同步操作时,则一定不在同一进程中出现。思考:在生产

4、者-消费者问题中,如果缺少了V(full)或V(empty),对执行结果将会有何影响?“生产者-消费者”问题中应注意2.任意一对相邻的P操作顺序非常重要。在并发环境中,当进程既要同步又要互斥时,必须把互斥信号量的P操作放在同步信号量的P操作之后,否则会引起进程死锁.而两个V操作的顺序则无关紧要。思考:在生产者-消费者问题中,如果将两个P操作即P(empty)和P(mutex)互换位置,或者将两个V操作即V(mutex)和V(full)互换位置,结果会如何?“生产者-消费者”问题中应注意3.生产者-消费者问题是操作系统和现实生活中许多相互合作进程的一个抽象模型。思考:p69,28题返

5、回Reader-1Reader-2Reader-3Reader-nwriter2、“读者—写者”问题问题描述:一个数据对象(数据文件或记录)可被多个进程共享。其中,reader进程要求读,writer进程要求写或修改。允许多个reader进程同时读共享数据,但绝不允许一个writer进程与其它的reader进程或writer进程同时访问,即writer进程必须与其它进程互斥访问共享对象。某个读进程读数据……申请修改计数变量Readcount若为首位(Readcount=0)读进程,申请对数据对象的读权(与写进程互斥)修改计数变量Readcount(加1)释放计数变量Readcoun

6、t的使用读数据对象申请修改读进程计数变量Readcount(临界资源)修改计数变量Readcount(减1)若为末位(Readcount=0)读进程,释放对数据对象的读权(与写进程互斥)释放临界资源(计数变量Readcount)的使用…………申请对数据对象的写权(与读写进程互斥)写数据释放对数据对象的写权(与读写进程互斥)……某个写进程写数据计数变量Readcount:记录当前正在读数据的读进程数目,读互斥信号量Rmutex:表示读进程互斥地访问计数变量readcount,初值为1.写互斥信号量wmutex:表示写进程与其它进程(读、写)互斥地访问数据,初值为1.semaphore

7、Rmutex=1;semaphorewmutex=1;intreadcount=0;设置一个共享变量和两个信号量某个读进程读数据……申请修改计数变量Readcount若为首位(Readcount=0)读进程,申请对数据对象的读权(与写进程互斥)修改计数变量Readcount(加1)释放计数变量Readcount的使用读数据对象申请修改读进程计数变量Readcount(临界资源)修改计数变量Readcount(减1)若为末位(Readcount=0)读进程,释放对数据对

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。