经典进程的同步问题.ppt

上传人:牧羊曲112 文档编号:6331635 上传时间:2023-10-17 格式:PPT 页数:18 大小:256.99KB
返回 下载 相关 举报
经典进程的同步问题.ppt_第1页
第1页 / 共18页
经典进程的同步问题.ppt_第2页
第2页 / 共18页
经典进程的同步问题.ppt_第3页
第3页 / 共18页
经典进程的同步问题.ppt_第4页
第4页 / 共18页
经典进程的同步问题.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《经典进程的同步问题.ppt》由会员分享,可在线阅读,更多相关《经典进程的同步问题.ppt(18页珍藏版)》请在三一办公上搜索。

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

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

3、ore mutex=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题,返回,2、“读者写者”问题,

5、问题描述:一个数据对象(数据文件或记录)可被多个进程共享。其中,reader进程要求读,writer 进程要求写或修改。允许多个reader进程同时读共享数据,但绝不允许一个writer进程与其它的reader进程或writer进程同时访问,即writer进程必须与其它进程互斥访问共享对象。,某个读进程读数据,申请修改计数变量Readcount若为首位(Readcount=0)读进程,申请对数据对象的读权(与写进程互斥)修改计数变量Readcount(加1)释放计数变量Readcount的使用 读数据对象 申请修改读进程计数变量Readcount(临界资源)修改计数变量Readcount(减1

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

7、某个读进程读数据,申请修改计数变量Readcount若为首位(Readcount=0)读进程,申请对数据对象的读权(与写进程互斥)修改计数变量Readcount(加1)释放计数变量Readcount的使用 读数据对象 申请修改读进程计数变量Readcount(临界资源)修改计数变量Readcount(减1)若为末位(Readcount=0)读进程,释放对数据对象的读权(与写进程互斥)释放临界资源(计数变量Readcount)的使用,Wait(Rmutex),Signal(Rmutex),Wait(Wmutex),Signal(Wmutex),Wait(Rmutex),Signal(Rmutex),申请对数据对象的写权(与读写进程互斥)写数据 释放对数据对象的写权(与读写进程互斥),某个写进程写数据,Wait(Wmutex),Signal(Wmutex),wait(rmutex);if(readcount=0)wait(wmutex);/*第一位读者阻止写者*/readcount+;V(rmutex);读数据;wait(rmutex);readcount-;if(readcount=0)v(wmutex);/*第末位读者允许写者进*/V(rmutex);,reader(i),同步算法 某读进程读数据,返回,同步算法 某写进程写数据,作 业,P68-23,24,26,返回,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号