操作系统笔记:书Page188第50题
来源:互联网 发布:ddos网络攻击 编辑:程序博客网 时间:2024/06/10 11:43
参考文献:[1]费翔林, 骆斌. 操作系统教程(第五版) [M]. 北京:高等教育出版社,2014.
题目:某寺庙有小和尚和老和尚若干,水缸一只,由小和尚提水入缸供老和尚饮用。水缸可容水10桶,水取自同一口水井中。水井径窄,每次仅能容纳一只水桶取水,水桶总数为三个。每次放入、取出的水量仅为1桶,而且不能同时进行。规定取水、提水都需要用桶。试用一种同步工具写出小和尚和老和尚放入水、取水的活动过程。
解:
-
题意解读:
- 首先要清楚这是一个大方向上是同步,同步中又有互斥的问题。
- 同步:所谓同步,是指散布在不同进程之间的若干程序片断,它们的运行必须严格按照规定的、某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。(书上P129页第2段一个意思)显然,小和尚提水给老和尚喝,肯定得小和尚提水的进程先完成,老和尚取水的进程才能进行(规定的、某种先后次序来运行)。而同步资源当然就是缸里的10桶水了,所以设 semaphore empty=10,full=0;(empty对应小和尚要提多少桶才能加满缸,full对应老和尚可以取多少桶水)。
- 互斥:所谓互斥,是指散布在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。(书上P128页第5段一个意思)在这里有三个互斥资源:桶、井、缸。设 semaphore S桶=3,S缸=1,S井=1;(S桶:有3只桶能用;S缸:有一只缸能用;S井:有一口井能用)。
-
PV操作模拟过程伪代码:
semaphore empty=10,full=0; //同步资源semaphore S井=S缸=1,S桶=3; //互斥资源cobegin: Process_老和尚: { L1:P(full); //缸内的水减1桶 P(S桶); //拿桶 P(S缸); //占缸 取水; V(S缸); //还缸 V(S桶); //还桶 V(empty); //缸还能盛下的水加1桶 goto L1; } Process_小和尚: { L2:P(empty); //缸内能盛下的水减1桶 P(S桶); //拿桶 P(S井); //占井 P(S缸); //占缸 倒水; V(S井); //还井 V(S缸); //还缸 V(S桶); //还桶 V(full); //缸还内的水加1桶 goto L2; }coend;
总结:
- PV操作用于互斥时,位于同一进程内。(看上面的S桶、S缸、S井)
- PV操作用于同步时,交错出现于两个合作的进程内。(empty、full)
- 多个P操作次序不可颠倒,否则可能产生死锁。(比如Process_老和尚中,S桶和S缸换一下,当老和尚把缸占了,小和尚把3只桶全拿去打水了,就会出现死锁)
- 多个V操作次序可任意。
- 如果既有同步,又有互斥信号,则同步在前,互斥在后。(看上面P(full)/P(empty)都是第一个,比如P(empty)在后面,那么当缸里不能再盛水时,小和尚也要去打水)
阅读全文
0 0
- 操作系统笔记:书Page188第50题
- 学习笔记:第2章 操作系统基础知识
- 费翔林, 骆斌. 操作系统教程(第五版).Page118第19题笔记
- 费翔林, 骆斌. 操作系统教程(第五版).第121页28、29题笔记
- 《操作系统概念-第七版》概念复习笔记第3章
- 《操作系统概念-第七版》概念复习笔记第4章
- 《操作系统概念-第七版》概念复习笔记第5章
- 《操作系统概念-第七版》概念复习笔记第6章
- 《操作系统概念-第七版》概念复习笔记第7章
- 《操作系统概念-第七版》概念复习笔记第8章
- 30天自制操作系统笔记 第1天
- 30天自制操作系统笔记 第0天
- 30天自制操作系统笔记 第2天
- 《深入解析Windows操作系统》笔记第1章
- 《深入解析Windows操作系统》笔记第2章
- 《30天自制操作系统》学习笔记--第0天
- 《30天自制操作系统》学习笔记--第1天
- 《30天自制操作系统》学习笔记--第2天
- Java中的代码块
- 人脸识别(VS2015+opencv3.2的配置)
- Sublime Text 3安装Package Control
- opencv学习——利用轮廓画矩阵、外接圆、拟合曲线
- 算法
- 操作系统笔记:书Page188第50题
- 《每日练习》
- xml从入门到精通之xml文件和java文件的转化
- mybatis线上问题查找
- Learning Python Part IV 之类和面向对象
- hdu3853[LOOPS] 继续浅尝期望概率DP
- NOIP模拟(10.30)T2 Game
- opencv学习——计算掩模及目标远点
- bzoj 2120 数颜色 【带修改莫队模板】