P、V操作解决同步问题

题目:

试用 P、V操作描述下列理发师和顾客之间的同步问题:
某个理发理师当没有顾客时,去睡觉;当有顾客来理发,若理发师正在睡觉时,这个顾客会叫醒他,理发师给该顾客理发,理发期间若还有顾客到达则等待理发理师依次理发,直到没有顾客到来,理发理师又去睡觉。


分析思路:

题目可以看做是 N个生产者和一个消费者问题。顾客作为生产者,每到来一位,就应将计数器 rc 计数一次,以便让理发师理发至最后一位顾客。

因此顾客进程执行的第一个语句便是 rc=rc+1。而第一个到来的顾客应负责唤醒理发师,理发师此时正在信号量 wakeup上等待(P(wakeup));该信号量初值为 0,由第一个顾客执行 V(wakeup)。

若该顾客不是第一个到达者,则在信号量 wait上等待(P(wait));该信号量初值为 0,等到理发师给前一位顾客理完发后执行 V(wait),便给该顾客理发。

以上过程循环往复,理发师每处理完一个顾客,就令计数器 rc值减 1,当 rc=0时,便知此时无顾客,理发师可继续睡觉,等待下一批顾客的到达。为了保证对计数器 rc互斥使用,还需要设置信号量 mutex(初值为 1)。

一定要设置信号量代表的含义和初值,P操作和V操作是对应的

答:用 P、V操作描述理发师和顾客之间的同步问题:

wakeup, wait, mutex : Semaphore;
wakeup := 0; wait := 0; mutex := 1;
cobegin
顾客进程:
{P(mutex);rc= rc+1;if (rc==1)V(wakeup);elseP(wait);V(mutex);理发;
}
理发师进程:{P(wakeup);while (rc!=0){理发;P(mutex);rc=rc-1;if (rc!=0)V(wait);V(mutex);}}coend

试用 P、V操作描述下列理发师和顾客之间的同步问题相关推荐

  1. 城市道路十字路口的通行规则是“红灯停,绿灯行”,请用信号量和PV操作描述交通信号灯和汽车通过十字路口的同步行为

    城市道路十字路口的通行规则是"红灯停,绿灯行",请用信号量和PV操作描述交通信号灯和汽车通过十字路口的同步行为 1)识别那些可以作为进程 信号灯,汽车 2)其次识临界资源,即进程共 ...

  2. 【操作系统】PV 操作经典例题---三个进程之间的同步

    问题: 总共有 读入.执行.打印 三个进程,试用PV操作描述读入B1打印B2的同步过程. 问题解读: 这个问题就是说了这样一件事:一个输入B1,被操作之后,成为B2,将B2打印.怎样用PV操作来说这件 ...

  3. PV 操作经典例题---三个进程之间的同步

    问题: 总共有 读入.执行.打印 三个进程,试用PV操作描述读入B1打印B2的同步过程. 问题解读: 这个问题就是说了这样一件事:一个输入B1,被操作之后,成为B2,将B2打印.怎样用PV操作来说这件 ...

  4. 关于p操作和v操作的理解

    操作系统之PV操作 今天在做操作系统老师布置的操作系统作业,但是碰到了一个有关pv操作的问题,由于对pv操作的理解不是很透彻,所以我查阅了很多资料,下面来简单的通俗的介绍一下pv操作 1.信号量    ...

  5. 桌上有一空盘,最多允许存放一个水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。 试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。

    问题描述:桌上有一空盘,最多允许存放一个水果.爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果. 试用P.V操作实现爸爸.儿子.女儿三个并发进程的同步. 问题分析及思路: 本题 ...

  6. p,v操作例题解析--读者-写者问题--誊抄问题——睡眠理发师问题

    问题1:读者写者问题 层次1:只有读者,最多允许有k个读者,用p,v操作写出程序. int main() {int rspace = k;cobeginread_1();read_2();--read ...

  7. 操作系统信号量与P、V操作 初步认识整理

    初步接触,若有不足之处,请各位不吝赐教.谢谢! 首先介绍:信号量 信号量包括整型信号量.结构型信号量.二值信号量. ① 整型信号量 最初,将信号量定义为一个共享的整型量,它保存可供使用的唤醒数目.如果 ...

  8. 图解操作系统之p,v操作

    操作系统之p,v操作 计算机的核心是CPU,它承担了所有的计算任务:而操作系统是计算机的管理者,它负责任务的调度.资源的分配和管理,统领整个计算机硬件. 一.操作系统的相关定义 1.操作系统的定义: ...

  9. c语言cobegin用法,用C语言实现P、V操作

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2.理发师问题:一个理发店有一个入口和一个出口.理发店内有一个可站5 位顾客的站席 区.4 个单人沙发.3 个理发师及其专用理发工具.一个收银台.新来的顾 ...

最新文章

  1. CentOS 配置epel源
  2. Python常用的六款编程开发工具汇总!
  3. 第十周项目1-程序填空与阅读(一)
  4. hibernate正向生成数据库表以及配置——hibernate.cfg.xml
  5. linux十字符木马,Linux系统随机10字符病毒的清除
  6. 当SQL Server爱上Linux:AVAILABILITY_MODE 和 DataGuard 的实践差距
  7. python重命名csv文件_Python根据文件中选定的字符复制和重命名许多小csv文件
  8. python __iter____next__
  9. 新零售大潮下 联想与BHG Mall签约共建智慧商城
  10. stat,查看文件属性
  11. BZOJ1301 字符加密Cipher (后缀数组)
  12. window 10自带照片查看软件不能查看下一张图片
  13. matlab freqz half,[转载]Matlab freqz函数使用
  14. Linux系统Ubuntu vim安装plugin
  15. 打印机之——Mac电脑添加打印机
  16. 三国杀7.21服务器维护,三国杀21日7时2.75版本更新维护公告
  17. 中国邮箱品牌使用情况调研——TOM邮箱
  18. 多项式秦九韶算法c语言
  19. 数据学习(十)-假设检验
  20. React 还是 Vue: 你应该选择哪一个Web前端框架?

热门文章

  1. python基础教程-Python入门教程完整版(懂中文就能学会)
  2. python编程案例教程-Python程序设计案例教程——从入门到机器学习(微课版)
  3. 如何在Unity项目中添加语音识别?
  4. 为什么语音输入法始终没有在电脑上得以普及?
  5. 蓝桥杯枚举+判断结果填空:猜年龄/奇妙数字
  6. x264源代码简单分析:宏块编码(Encode)部分
  7. FFMPEG结构体分析:AVCodecContext
  8. Tiny Jpeg Decoder (JPEG解码程序) 源代码分析 1:解码文件头
  9. python把工作簿拆分为工作表_excel将一个工作表根据条件拆分成多个工作表
  10. android studio聊天跳转_android app跳转到微信的示例