操作系统经典问题——消费者生产者问题
创始人
2024-06-01 16:28:02
0

今日在学习操作系统的过程中遇到了这个问题,实在是很苦恼一时间对于这种问题以及老师上课根据这个问题衍生的问题实在是一头雾水。在网络上寻找了一些大佬的讲解之后算是暂时有了点茅塞顿开的感觉。

首先第一点什么是生产者——消费者问题:

系统中有一组生产者进程和一组消费者进程。生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用,那么他们之间具有这样一层关系。

生产者、消费者共享一个初始为空、大小为n的缓冲区。

只有缓冲区没有满的时候才可以让生产者生产产品并放到缓冲区当中。否则只能进行等待。

即缓冲区没有满->生产者生产

只有缓冲区有东西的时候才可以让消费者进行消费,否则只能进行等待。

即缓冲区不空->消费者进行消费

缓冲区是临界资源所有各进程的访问都是互斥的

由上面的描述可知:要执行生产者生产操作的前提条件是缓冲区没满,而执行消费者消费的前提条件是缓冲区不空。

在前操作之后对相应的同步信息量执行V操作  在后操作之前对相应的同步信息量执行P操作

这里我们设置三个信号量:一个互斥信号量mutex用来实现对缓冲区的访问,一个同步信号量empty表示空缓冲区的数量,一个同步信号量full表示非空缓冲区的数量。在这里为了方便新版书上的wait和signal两个函数同一简化为P和V下面所书写均是P和V。

semaphore mutex=1,empty=n,full=0;初始状态下互斥信号量是1空缓冲区也是有n个的非空缓冲区是0个。

生产者生产:

producer (){

while(1)

{ 生产一个产品;

P(empty);//判断是否为空

P(mutex);//判断是否可以进入临界区寻找资源

把产品放入缓冲区;

V(mutex);//释放临界区的资源

V(full); } //非缓冲区有多少产品}

P(mutex)和V(mutex)实现进程的互斥访问,P(empty)实现让缓冲区没满作为生产者生产的前操作,即当empty=0时即无空闲缓冲区数量时,让消费者消费作为生产者生产的前操作。
V(full)实现让缓冲区不空作为消费者消费的前操作,即当full=0时即缓冲区全为空时,让生产者生产作为消费者消费的前操作。

消费者消费

consumer (){

while(1)

{ P(full);//判断非缓冲区是否还有产品

P(mutex);//判断是否可以进入临界区寻找资源

从缓冲区取出一个产品;

V(mutex);/释放临界区的资源

V(empty);//为空缓冲区增加一个空位置

使用产品; }

P(mutex)和V(mutex)实现进程的互斥访问,V(empty)实现让缓冲区没满作为生产者生产的前操作,即当empty=0时即无空闲缓冲区数量时,让消费者消费作为生产者生产的前操作。
P(full)实现让缓冲区不空作为消费者消费的前操作,即当full=0时即缓冲区全为空时,让生产者生产作为消费者消费的前操作。
 

相关内容

热门资讯

住在我心里的人作文【实用3篇... 住在我心里的人作文 篇一我的父亲,住在我心里的人在我心中,有一个特别的角落,专门为我亲爱的父亲而设。...
打雪仗的小学作文(优选3篇) 打雪仗的小学作文 篇一:我和朋友们的欢乐雪战冬天来了,大地披上了洁白的雪衣。我和朋友们迫不及待地跑到...
中秋赏月的小学作文(优质6篇... 中秋赏月的小学作文 篇一中秋佳节,是我国传统的重要节日之一。这一天,我们会和家人、朋友一起赏月、吃月...
坐地铁和摘小番茄作文【优秀3... 坐地铁和摘小番茄作文 篇一坐地铁和摘小番茄我喜欢坐地铁,因为它是一种方便快捷的交通工具。每天上下班,...
两代鸟的交谈作文【推荐3篇】 篇一:两代鸟的交谈近日,我在公园里目睹了一场令人惊叹的景象,一只年轻的鸟儿和一只老年鸟儿正在愉快地交...
一年级关于英雄事迹的作文50... 一年级关于英雄事迹的作文500字 篇一:《我的英雄》我的英雄是我的爸爸。他是一位普通的上班族,每天都...
记一件事小学生作文(精彩6篇... 记一件事小学生作文 篇一我和小狗的故事今天,我要给大家讲一个关于我和小狗的故事。这个故事发生在我上小...
抗击新型肺炎作文【通用5篇】 抗击新型肺炎作文 篇一:团结一心,共克时艰新型冠状病毒肺炎疫情突如其来,给我们的生活带来了巨大的冲击...
我可怜的橡皮泥状物作文【优质... 我可怜的橡皮泥状物作文 篇一橡皮泥是我最喜欢的玩具之一,可是它现在变得可怜兮兮的了。曾经,它是我快乐...
一年级作文水牛【经典6篇】 一年级作文水牛 篇一水牛是我国常见的牲畜之一,它们体型庞大,力大无穷,是农民朋友们的好帮手。今天,我...
我和我的好朋友作文【精彩6篇... 我和我的好朋友作文 篇一好朋友,是我们成长中最重要的陪伴。我有一个好朋友,她叫小芳。我们从小学开始就...
耳朵、鼻子和眼睛小学作文(推... 耳朵、鼻子和眼睛小学作文 篇一标题:我的耳朵、鼻子和眼睛我的耳朵、鼻子和眼睛是我身体上非常重要的器官...
课本剧表演作文(精选6篇) 课本剧表演作文 篇一我们班级最近进行了一次精彩的课本剧表演,给我们带来了很多乐趣和收获。这次表演的题...
最重要的一天小学作文【优选3... 最重要的一天小学作文 篇一最重要的一天小学作文今天是我人生中最重要的一天,因为我终于迎来了小学毕业典...
大爱无疆的作文(推荐6篇) 大爱无疆的作文 篇一无论身处何地,无论面对何种困境,大爱无疆的精神都是我们应该秉持的。在这个充满爱与...
二十年后的我小学作文(推荐6... 二十年后的我小学作文 篇一我是一名小学生,现在正在写一篇关于二十年后的我小学作文。在二十年后,我已经...
有趣的机器人小学优秀作文【通... 有趣的机器人小学优秀作文 篇一机器人小猫咪在一个不太远的未来,机器人成为了人们生活中不可或缺的一部分...
我最闪亮小学作文(优质3篇) 我最闪亮小学作文 篇一我最闪亮小学作文 我最闪亮小学作文 篇二第一篇内容标题:我最喜欢的老师作为一个...
鹭岛秋色秋游作文【最新3篇】 鹭岛秋色秋游作文 篇一鹭岛秋色秋游秋天是一年四季中最美丽的季节之一,而鹭岛也是一个恰如其分展现秋天之...
有趣的冬游小学作文(最新6篇... 有趣的冬游小学作文 篇一冬天是一个寒冷但又充满乐趣的季节。每当冬天来临,我就迫不及待地期待着一次有趣...