文档详情

进程同步与进程通信课件.ppt

发布:2024-01-23约2.32万字共145页下载文档
文本预览下载声明

*《计算机操作系统》-第4章*wait(wmutex);……执行写操作signal(wmutex);写者部分读者-写者问题第94页,讲稿共145页,2023年5月2日,星期三*《计算机操作系统》-第4章*增加限制条件,即同时读取的读者数不能超过RNL,mx:=RN,1信号量集:Swait(S,d,t);Ssignal(S,d)S为信号量,d为需求量,t为下限值写者:Swait(mx,1,1;L,RN,0);……执行写操作Ssignal(mx,1);读者:Swait(L,1,1);Swait(mx,1,0);……执行读取操作Ssignal(L,1);读者-写者问题第95页,讲稿共145页,2023年5月2日,星期三*《计算机操作系统》-第4章*读者优先的信号量解法typedefintsemphsemphmutex=1;semphwrite=1;intrcount=0;Reader进程While(TRUE){P(mutex);rcount++;if(rcount==1)P(write);V(mutex);Read_Action();P(mutex);rcount--;if(rcount==0)V(write);V(mutex);}Writer进程While(TRUE){P(Write);Write_Action();V(write);}第96页,讲稿共145页,2023年5月2日,星期三*《计算机操作系统》-第4章*合理顺序的信号量解法typedefintsemphsemphrmutex=1;semphwmutex=1semphwrite=1;semphconcur=1;intrcount=0;intwcount=0;Reader进程While(TRUE){P(concur);P(rmutex);rcount++;if(rcount==1)P(write);V(rmutex);V(concur);Read_Action();P(mutex);rcount--;if(rcount==0)V(write);V(mutex);}Writer进程While(TRUE){P(wmutex);wcount++;if(wcount==1)P(concur);V(wmutex);P(Write);Write_Action();V(write);P(wmutex);wcount--;if(wcount==0)V(concur);V(wmutex);}第97页,讲稿共145页,2023年5月2日,星期三*《计算机操作系统》-第4章*互斥关系分析筷子:同一时刻只能有一个哲学家拿起筷子同步关系分析就餐:只有获得两个筷子后才能进餐特殊情况考虑死锁:如果每个哲学家都拿起一只筷子,都饿死并行程度:五只筷子允许两人同时进餐哲学家就餐问题第98页,讲稿共145页,2023年5月2日,星期三*《计算机操作系统》-第4章*哲学家就餐问题的直观解法哲学家进程#defineN5voidphilosopher(inti){While(TRUE){think();take_forks(i);take_forks((i+1)%N);eat();put_forks(i);put_forks((i+1)%N);}}思考1:这样的解法有何问题?思考2:对左右的叉子是否可用进行验证,这样的修改有何优缺点?思考3:需要引入几个信号量才能实现最优化的解法呢?第99页,讲稿共145页,2023年5月2日,星期三*《计算机操作系统》-第4章*为防止死锁发生可采取的措施:最多允许4个哲学家同时坐在桌子周围仅当一个哲学家左右两边的筷子都可用时,才允许他拿筷子;给所有哲学家编号,奇数号的哲学家必须首先拿左边的筷子,偶数号的哲

显示全部
相似文档