2.哲学家吃面问题

semaphore fork[5];

for(int i=0; i<5;i++)

fork[i]=1;

cobegin

process philosopher_i( ){

while(ture){

think( );

P(fork[i]);

P(fork[(i+10%5]);

eat();

V(fork[i]);

V(fork[(i+10%5]);

}

}

coend

5.一间酒吧里有三个音乐爱好者队列,第一队的音乐爱好者只有随身听,第二队只有音乐磁带,第三队只有电池。而要听音乐就必须随身听、音乐磁带和电池这三种物品俱全。酒吧老板一次出售这三种物品中的任意两种。当一名音乐爱好者得到这三种物品并听完一首乐曲后,酒吧老板才能再一次出售这三种物品中的任意两种。于是第二名音乐爱好者得到这三种物品,并开始听乐曲。全部买卖就这样进行下去。试用P,v操作正确解决这一买卖。

semaphore mutex=1,s1=0,s2=0,s3=0;

cobegin

fan1(){

s1=1;

P(s2);

P(s3);

if(s1&&s2&&s3){

V(mutex);
        V(s1);
        V(s2);
        V(s3);
          }

}

fan2(){

s2=1;

P(s1);

P(s3);

if(s1&&s2&&s3){

V(mutex);
           V(s1);
          V(s2);
           V(s3);}

}

fan3(){

s3=1;

P(s1);

P(s2);

if(s1&&s2&&s3){

V(mutex);
        V(s1);
        V(s2);
        V(s3);}

}

}

Coend

6、

semaphore mutex=A, customer_count=0:
Cobegin
Customeri(){
p(mutex);
取号码,进入队列;
v(mutex);
v(customer_count);
}

serversi(){
while(A){
p(customer_count);
p(mutex);
从队列中取下一个号码;
v(mutex);
为该号码持有者服务;
}
}
Coend

7、

Cobegin
Var x:integer; s:semaphore;
s:=A

Process PA
Var y, z:integer;
Begin
p(s);
x:=A;
y:=0;
if x>=A then y:=y+A;
v(s);
z:=y;
End

Process PB
Var t, u:integer;
Begin
p(s);
x:=0;
t:=0;
if x<A then t:=t+B;
v(s);
u:=t;
End

Coend

8、

semaphore S1,S2;
S1=1;S2=0;
cobegin
      process P1(){
            begin
            repeat
            P(S1);
            拣白子
            V(S2);
            until false;
           end
        }
      process P2(){
           begin
           repeat
           P(S2);
           拣黑子
           V(S1);
           until false;
           end
       }
coend.

转载于:https://www.cnblogs.com/huchen826089/p/10822161.html

信号量进程同步与互斥相关推荐

  1. 用信号量进程同步与互斥

    1.理解生产者和消费者问题 没有引入信号量时的生产者和消费者进程,什么情况下会出现结果不唯一?什么情况下会出现永远等待? 用信号解决生产者和消费者的同步与互斥,要求能自己写出来. 答:生产者进程和消费 ...

  2. 操作系统之进程管理:11、用信号量机制实现进程同步、互斥、前驱关系

    11.用信号量机制实现进程同步.互斥.前驱关系 思维导图 用信号量机制实现进程同步 用信号量机制实现进程互斥 用信号量机制实现进程的前驱关系 思维导图 用信号量机制实现进程同步 先来看一下什么是进程同 ...

  3. 计算机操作系统专题一:多道环境下进程同步与互斥制约关系的学习

    1. 问题描述 设自行车生产线上有一只箱子,其中有N个位置(N≥3),每个位置可存放一个车架或一个车轮,又设有三名工人,其活动分别为: 2. 问题分析(包括涉及的知识点.制约关系分析.问题的解决思路等 ...

  4. 操作系统:第二章 进程管理3 - 进程同步与互斥

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  5. (王道408考研操作系统)第二章进程管理-第三节5:用信号量实现进程互斥、同步和前驱关系

    文章目录 一:使用信号量实现进程互斥 二:使用信号量实现进程同步 三:使用信号量实现前驱关系 一:使用信号量实现进程互斥 思想: 1:分析并发进程的关键活动,划定临界区 2:设置互斥信号量mutex, ...

  6. 操作系统实验四 进程同步与互斥

    一.实验目的: 掌握基本的同步与互斥算法,理解P,V操作. 理解生产者消费者模型,了解其它典型的同步互斥模型,如哲学家就餐.读者-写者模型等. 了解LINUX中进程同步互斥的实现方法,掌握相关函数的使 ...

  7. 进程同步与互斥:Windows环境

    一.实验目的: 1. 掌握基本的同步与互斥算法,理解P,V操作. 2. 理解生产者消费者模型,了解其它典型的同步互斥模型,如哲学家就餐.读者-写者模型等. 3. 了解LINUX中进程同步互斥的实现方法 ...

  8. 【操作系统基础】进程管理(三)进程同步与互斥

    一.进程同步.互斥的基本概念 1. 什么是进程同步 进程具有异步性的特征.异步性是指各并发执行的进程以各自独立的.不可预知的速度向前推进.举一个线程通信的例子,管道通信: 读进程和写进程并发运行,由于 ...

  9. 经典进程同步与互斥问题

    经典进程同步与互斥问题 1. 生产者-消费者问题 1.1 简单的"生产者-消费者"问题 设进程A.B是两个相互合作的进程,它们共享一个缓冲区,进程A向其中写入数据,进程B从中读出数 ...

最新文章

  1. AJAX+JSF组件实现高性能的文件上载
  2. SVN 常用操作命令 使用笔记
  3. linux抓取网络信息,Linux获取所有网口及其详细信息
  4. NuGet社区使用体验调查
  5. MySQL优化(一):表结构优化
  6. 【渝粤题库】陕西师范大学500004 电动力学
  7. bootstrap怎么强制不换行_【Word考点】页面设置:页边距、分隔符要怎么设置?如何分栏?...
  8. 策略设计模式_设计模式之策略者模式
  9. python+Django框架运用(一)
  10. options请求_HTTP 协议 POST 请求,为什么会有一个 OPTION?
  11. 2022山东理工大学pta程序设计---实验四1---13题解
  12. 计算机将会代替老师吗英语范文,英文作文电脑对教育的重要意义
  13. frame和bounds的区别
  14. ubuntu16 坚果云不能打开
  15. 字符串小写转大写字母
  16. java反射为什么消耗资源_Java反射笔记
  17. JPA+Hibernate中常用的注解
  18. python count函数代码_python中count函数简单用法
  19. 为什么当初很多人不看好的阿里云做起来了?
  20. tzset()与localtime()

热门文章

  1. kd tree学习笔记 (最近邻域查询)
  2. 钟国晨 160809323
  3. 类的定义、成员定义修饰符
  4. IOS-网络(监听网络状态)
  5. Sublime 的中文乱码问题
  6. Node 连接Mysql并进行增删改查
  7. Linux epoll 笔记(高并发事件处理机制)
  8. 二叉树三种遍历(递归以及非递归实现)
  9. 妈的我好像发现是哪出问题了
  10. php中preg_match用户名正则实例