首页 > 其他分享 >操作系统复习2-wait、signal操作第二部分

操作系统复习2-wait、signal操作第二部分

时间:2024-11-13 21:46:56浏览次数:3  
标签:MD 复习 signal CD 过桥 MUTEX mutex wait

4.

佩奇、米老鼠、汤姆一起玩放水果的游戏。佩奇不停的往空盘子中放苹果米老鼠不停的取苹果,汤姆不停的取橘子。假设这个盘子最多能放的水果且他们三个不能同时取用。完成如下两问
请写出记录型信号量的wait和signal操作的定义(7分)。
请用信号量机制和wait和signal操作实现这三个朋友的同步、互斥活动,并说斤定义的信号量的含义。要求用伪码描述(8分)。

semaphore empty=10,apple=0,orange=0,mutex=1;

佩奇:
begin
    repeat
        wait(empty);
        wait(mutex);
        放入水果;
        signal(mutex);
        if(放入的是苹果) signal(apple);
        else signal(orange);
    until false
end

米老鼠:
begin
    repeat
        wait(apple);
        wait(mutex);
        取走苹果;
        signal(mutex);
        signal(empty);
        吃苹果;
    until false
end

汤姆:与第二个一致

二、读者-写者问题

1.

有一座东西方向的独木桥;用P.V操作实现:

(1)每次只允许一个人过桥;

(2)当独木桥上有行人时,同方向的行人可以同时过桥,相反方向的人必须等待。

(3)当独木桥上有自东向西的行人时,同方向的行人可以同时过桥,从西向东的方向,只允许一个人单独过桥。(此问题和读者与写者问题相同,东向西的为读者西向东的为写者)。

(1)

semaphore mutex=1;

begin
    repeat
        p(mutex);
        过桥;
        v(mutex);
    until false
end

(2)

设信号量:
MUTEX=1(东西方互斥)
MD=1 (东向西使用计数变量互斥)
MX=1(西向东使用计数变量互斥)
设整型变量:
CD=0(东向西的已上桥人数)
CX=0 (西向东的已上桥人数)

从东向西:
P(MD);
if(CD=0) P(MUTEX);
CD=CD+1;
V(MD);
过桥;
P(MD);
CD=CD-1;
if(CD=0) V(MUTEX);
V(MD);

从西向东:
P(MX);
if(CX=0) P(MUTEX);
CX=CX+1;
V(MX);
过桥;
P(MX);
CX=CX-1;
if(CX=0) V(MUTEX);
V(MX);



(3)

semaphore MUTEX=1,MD=1,CD=0;

从东向西:
P(MD);
if(CD=0) P(MUTEX);
CD=CD+1;
V(MD);
过桥;
P(MD);
CD=CD-1;
if(CD=0) V(MUTEX);
V(MD);

从西向东:
P(MUTEX);
过桥
V(MUTEX);

标签:MD,复习,signal,CD,过桥,MUTEX,mutex,wait
From: https://blog.csdn.net/mingtiaojiahao/article/details/143751769

相关文章

  • SpringMVC全面复习
    JavawebSpringMVCSpringMVC是Spring框架的一个模块,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。它通过清晰的分离关注点,简化了Web应用各部分的开发。SpringMVC提供了强大的绑定机制,能够将请求参数绑定到控制器方法的参数上,支持灵活的验证和数据转换。它还......
  • [Paper Reading] Fusing Monocular Images and Sparse IMU Signals for Real-time Hum
    目录名称TL;DRMethodLocalPoseEstimationRNN-P1RNN-P2RNN-P3GlobalTranslationEstimationRNN-T1RNN-T2RNN-T3HiddenStateFeedbackMechanismExperiment效果可视化总结与发散相关链接名称link时间:23.09作者与单位:主页:https://github.com/shaohua-pan/RobustCapTL;DR......
  • git 常用操作复习
    Q&Agit避免重复输入密码问题,非ssh,https下,ssh密钥懒得搞解决办法首先进入你的git工作目录下。在终端执行一下命令:gitconfig--globalcredential.helperstore然后再重新执行一次gitpull,这次它还是提示你输入账号和密码:示例:gitpullUsernamefor'https://isource-sh.d......
  • 数据结构复习——链、链栈。
    1、栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。2、栈的常见基本操作:InitStack(&S):初始化一个空栈S。StackEmpty(S):判断一个栈是否为空,若栈为空则返回true,否则返回false。Push(&S,x):进栈(栈的插入操作),若栈......
  • Recursive Algorithm for Sliding Signal Processing
    目录概滑动窗口上的快速算法Farhang-BoroujenyB.andGazorS.Generalizedslidingfftanditsapplicationtoimplementationofblocklmsadaptivefilters.TSP,1994JacobsenE.andLyonsR.TheslidingDFT.SPM,2003.JacobsenE.andLyonsR.Anupdateto......
  • 【MySQL】MySQL基础知识复习(下)
    前言上一篇博客介绍了MySQL的库操作,表操作以及CRUD。【MySQL】MySQL基础知识复习(上)-CSDN博客本篇将进一步介绍CRUD操作,尤其是查找操作目录一.数据库约束1.约束类型1.1NULL约束1.2UNIQUE:唯一约束1.3DEFAULT:默认值约束1.4PRIMARYKEY:主键约束1.5FOREIGNKEY:外键约束......
  • 使用 .NET Core 7 和 SignalR 构建实时聊天应用程序
    动动你可爱的小手,请关注下本人公众号,继续为您提供更多原创技术文章。谢谢给为的支持SignalR 是一个ASP.NET库,它支持实时Web功能,允许服务器立即将更新推送到客户端,从而提高应用程序的效率和响应能力。它通过简化通信和支持各种传输协议,对于聊天应用程序、实时仪表板和协......
  • 微积分复习回顾--函数
    1.函数---x对应唯一的y,类似y=x^2,x2+y2=1,属于方程但不属于函数2.周期函数-x缩扩几倍,周期扩缩相同倍数3.奇偶函数--定义域一定关于原点对称4.函数增减性5.函数有界/无界--无界,任给M,Ex0,|f(x0)|>M有界,对于所有x,|f(x)|<=M6.上界和下界,M1......
  • Java期末复习暨学校第二次上机课作业
    Java期末复习暨学校第二次上机课作业:了解程序的控制结构,掌握顺序结构程序的设计方法,掌握分支程序设计方法。第一题:闰年有两种判断方式:(1):能被4整除但不能被100整除(2):能被400整除输出结果:第二题:一个三位数求和,分别先把百位、十位、个位的数求出来再相加。百位:用给出......
  • Linux复习2(常用命令与进程线程)
    常用命令:进入管理员模式:sudosu退出:exit;查看当前目录文件:ls(-a:显示隐藏文件;-l:查看详细信息)查看当前目录位置:pwd查看文件内容:catmoreheadtail(head与tail可以加行数)查看多个:cata.cb.c拼接文件:cata.cb.c->d.c查看帮助文档:manname创......