![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
取名太难保护头发
计院狗,好好学习计算机
展开
-
生产者与消费者变式--销售人员和顾客的同步问题
问题描述面包师有很多面包,由n名销售人员推销。每名顾客进店后取一个号,并且等待叫号,当一名销售人员空闲时,就叫下一个号。请设计一个使销售人员和顾客同步的算法。问题分析n名销售人员相当于那个缓冲区,顾客相当于消费者...原创 2021-08-24 17:54:17 · 344 阅读 · 0 评论 -
生产者和消费者问题变式--产品入库
问题描述在一个仓库中可以存放A和B两种产品,要求如下:(1)每次只能存入一种产品。(2)A产品的数量 - B产品的数量 < M.(3)B产品的数量 - A产品的数量 < N.其中,M、N是正整数,试用P、V操作描述产品A与产品B的入库过程。问题分析1.仓库是一种临界资源,需要互斥访问;2.产品A和产品B之间有同步关系:当A的数量-B的数量>= M时,进程A就会被阻塞;B的数量-A的数量>=N,进程B就会被阻塞。代码semap...原创 2021-08-24 17:16:59 · 1045 阅读 · 0 评论 -
生产者与消费者问题变式--奇偶数个数计算
问题描述三个进程P1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区,P1每次用produce()生成一个正整数并用put()送入缓冲区某一个单元;P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用geteven()从该缓冲区中取出一个偶数,并用counteven()统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动。并说明所定义的信号量的含义(要求用伪代码描述)。问题分析这个问题就是基本的缓冲区代码se...原创 2021-08-24 16:54:34 · 726 阅读 · 0 评论 -
吸烟者问题
问题描述假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟不停地卷烟并抽掉它,但要卷起并抽调一支烟,抽烟者需要三种材料:烟草、纸和胶水。三个抽烟者中,第一个拥有烟草,第二个拥有纸,第三个拥有胶水。供应者进程无限地提供三种材料,供应者每次将两种材料放到桌子上,用于剩下那种材料的卷烟者卷一根烟并抽掉它,并给供应者一个信号告诉已完成,此时供应者就会将另外两种材料放到桌子上,如此重复(让三个抽烟者轮流地抽烟)。关系分析1.供应者进程和抽烟者进程之间是同步关系;2.抽烟者之间是互斥关系。.原创 2021-08-24 13:31:28 · 92 阅读 · 0 评论 -
哲学家进餐问题
问题描述一张圆桌上坐了五名哲学家,每两名哲学家之间的桌子上摆了一根筷子,两根筷子中间是一碗米饭。哲学家们倾注毕生精力用于思考和进餐,哲学家在思考时,并不影响他人。只有当哲学家饥饿时,才试图拿起左、右两根筷子(一根一根地拿起)。若筷子已经在他人手上,则需要等待。饥饿的哲学家只要同时拿起两根筷子才可以开始进餐,进餐完毕后,放下筷子继续思考。问题分析1.临界资源:筷子;2.哲学家们需要互斥地访问筷子;3.如果不对哲学家拿筷子的方式加以限制,很容易导致死锁。比如五名哲学家同时拿起左手边的.原创 2021-08-23 11:53:32 · 672 阅读 · 0 评论 -
读者-写者问题
问题描述有读进程和写进程两组并发进程,共享一个文件,当两个或两个以上读进程同时访问共享数据时,不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能会导致数据不一致的错误。因此要求:1.允许多个读者可以同时对文件执行操作;2.只允许一个写者往文件中写入信息;3.任意一个写者在完成操作前不允许其他读者或写者工作;4.写者执行操作前,必须等已有的读者或写者全部退出。问题分析...原创 2021-08-22 23:50:18 · 460 阅读 · 0 评论 -
多生产者和多消费者问题
题目描述桌子上有一个盘子,每次只能向其中放入一个水果。爸爸专门向盘子里面放苹果,妈妈专门向盘子里面放橘子;只有盘子为空时,爸爸或妈妈才可以向其中放入水果;仅当盘子里有自己需要的水果时,儿子或女儿才会从盘子里面取出。关系分析1.爸爸和妈妈是互斥关系;2.爸爸和女儿是同步关系,妈妈和儿子也是同步关系;3.儿子和女儿之间没有同步与互斥关系,因为儿子和女儿是选择条件执行,不可能并发。思路该过程可以抽象为两个生产者、两个消费者和一个缓冲区的问题代码semapho.原创 2021-08-22 20:13:53 · 285 阅读 · 0 评论 -
生产者和消费者问题(单一生产者和单一消费者)
题目一:一组生产者和一组消费者进程共享一个初始为空,大小为n的缓冲区,只有缓冲区没有满的时候,生产者才能把消息放入缓冲区,否则必须等待;只有缓冲区未空时,消费者才可以从中取出消息,否则必须等待。由于缓冲区是临界资源,所必须互斥访问。关系分析:1.生产者和消费者对缓冲区的访问是互斥关系;2.生产和消费者又有着同步关系,必须先生产再消费。信号量设置:1.设置mutex作为互斥信号量,让生产者和消费者可以互斥地访问缓冲区,且初始值为1;2.设置信号量full来表示非空缓冲区的个数.原创 2021-08-22 19:20:08 · 2397 阅读 · 3 评论