操作系统:进程同步与互斥之生产者-消费者问题(含报告和源码)
目录
第一章 实验相关概述
第二章 实验的目的及要求
1. 目的
2. 要求
第三章 实验的实现思路及步骤
第四章 实验结果分析
1. 结果分析
2.实现代码及截图
第五章 实验心得
参考文献
致谢
- 实验相关概述
有两个进程分别为消费者进程和生产者进程,对同一个临界资源进行访问,生产者不断地将生产的产品加入缓存区,而消费者不断地消费缓存区中的资源,利用信号量实现两个进程的同步和互斥。
- 实验的内容、目的及要求
- 内容
有n个生产者与m个消费者,连接在一个有k个单位缓冲区的有界缓冲区上。其中,pi和cj都是并发进程,只要缓冲区未满,生产者pi生产的产品就可以投入缓冲区;只要缓冲区不空,消费者进程cj就可以从缓冲区中取走并消耗产品。
2.目的
通过实验有效的协调同步操作和互斥操作的先后关系,以及如何利用信号量实现进程同步。
3.要求
(1)理解并掌握进程同步与互斥的原理;
(2)了解进程同步与互斥过程中的基本概念:原语、信号量、临界区以及临界资源等。
(3)了解信号量的分类。
- 实验的实现思路及步骤
- 实验结果分析
- 结果分析
例先创建两个线程producer和consumer。生产者Producer往队列里不断向尾部添加元素,消费者Consumer不断消耗队列中的元素,当生产者生产达到10个元素时,队列已经满了会发生阻塞一直等待空间,以加入元素,此时消费者依然在不断消耗队列中的元素。当队列里的元素为空时,线程阻塞,此时消费者就会暂停运行,直到生产者继续向队列中添加元素。
2.实现代码及截图
package Customer;
import java.util.Random;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class Customer {
private BlockingQueue queue = new LinkedBlockingQueue(10); //创建阻塞队列对象,实现生产者与消费者模式
class Producer extends Thread {
public void run() {
producer();
}
private void producer() { //具体实现生产者方法
while(true) {
try {
queue.put(1); //向队列尾部添加一个元素,若向队尾添加元素的时候发现队列已经满了会发生阻塞一直等待空间,以加入元素。
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("生产者生产一条任务,当前队列长度为" + queue.size());
try {
Thread.sleep(new Random().nextInt(1000)+500); //每1000ms-1500ms
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Consumer extends Thread {
public void run() {
consumer();
}
private void consumer() {
while (true) {
try {
queue.take(); //take方法,从队列中消费数据,当队列为空时,线程阻塞
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("消费者消费一条任务,当前队列长度为" + queue.size());
try {
Thread.sleep(new Random().nextInt(1000)+500);//每1000ms-1500ms
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
Customer pc = new Customer();
Producer producer = pc.new Producer();
Consumer consumer = pc.new Consumer();
producer.start();
consumer.start();
}
}
- 实验心得
通过这一段时间的操作系统课程的学习,我们小组完成了“进程同步与互斥之生产者-消费者问题 ”,我们将其用代码成功实现了。但在此次课程学习与实验中,我们各自都发现了许多问题。
在此次实验过程中暴露出了前期我在这一方面知识欠缺和经验不足。实践出真知,通过亲自动手实验,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在实验中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的实验检测环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次实验终于顺利完成了,在实验中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到困难就想要退宿,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上披荆斩棘,而不是知难而退,那样永远不可能获得成功,收获喜悦,也永远不可能得到社会及其他人对你的认可。
回顾起此次实验,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说是苦多于甜,但是学到了很多很多东西,不仅巩固了以前的知识,还学到了很多书本上没有学到的知识。通过此次实验使我懂得了理论和实际结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识和实际相结合,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。实验过程中,也对团队精神进行了考察,让我们在合作中更加默契,在成功之后一起体会喜悦的心情。果然是团结就是力量,只有相互之间默契融洽的配合才能换来最终完美的结果。
参考文献
[1]汤子瀛 ,哲凤屏.《计算机操作系统》[M].西安电子科技大学出版社.
[2]王清,李光明.《计算机操作系统》[M].冶金工业出版社.
[3]孙钟秀等.《操作系统教程》[M].高等教育出版社.
[4]曾明.《Linux操作系统应用教程》[M].陕西科学技术出版社.
[5]张丽芬,刘利雄.《操作系统实验教程》[M].清华大学出版社.
[6]孟静.《操作系统教程——原理和实例分析》[M].高等教育出版社.
[7]周长林.《计算机操作系统教程》[M].高等教育出版社.
[8]张尧学.《计算机操作系统教程》[M].清华大学出版社.
[9]任满杰.《操作系统原理实用教程》[M].电子工业出版社.
[10]张坤.《操作系统实验教程》[M].清华大学出版社.
致谢
首先非常感谢学校能开设这个实验,为我日后从事计算机方面的工作有所助益,奠定了基础。
其次,我要特别感谢熊婷老师对我的悉心指导,在实验期间老师帮助我理清实验思路,指导操作方法。老师渊博的知识、严谨的作风、诲人不倦的态度和学术上精益求精的精神让我受益终生。这期间凝结了老师很多的心血,在此我表示由衷的感谢。没有他的帮助,我将无法顺利完成这次实验。
再次,学校在这方面也给我们提供了很大的支持和帮助,学校领导比较重视,给我们安排了较多的上机次数和足够的计算机,让我们有尽可能多的时间上机;并为我们开通了网线,方便我们上网查找信息;另外提供了专门的教室方便我们上机调试;对于学校和老师为我的实验所提供的极大帮助和关心,在此我致以衷心的感谢!
操作系统:进程同步与互斥之生产者-消费者问题(含报告和源码)相关推荐
- [操作系统]进程同步和互斥
文章目录 引言 基本概念 进程同步 临界资源 进程互斥 信号量 整型信号量 记录型信号量 信号量实现同步和互斥 实现互斥 实现同步 经典进程同步和互斥问题 生产者-消费者问题 总结 引言 简单总结一下 ...
- 计算机操作系统进程同步实验报告,操作系统进程同步和互斥的实验报告
操作系统进程同步和互斥的实验报告 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 湖南农业大学信息科学技术学院学生实验报告姓名: 年级专 ...
- 操作系统(二十三)生产者消费者问题
2.3.6 生产者消费者问题 生产者消费者问题(The proceducer-consumer problem)是一个经典的进程同步的问题,问题是这样描述的:在操作系统中有一组生产者进程一组消费者进程 ...
- 进程同步与互斥c语言实验,操作系统进程同步与互斥实验报告.doc
PAGE PAGE 1 学 生 实 验 报 告 姓名: 年级专业班级 学号 成绩 课程名称 操作系统 实验名称 实验1 进程的同步与互斥 实验类型 验证 设计 综合 创新 [实验目的.要求] 1.通过 ...
- 操作系统-进程同步与互斥易混点
解惑1: 为使多个进程能互斥的访问某临界资源,只须为该资源设置 一个互斥信号量 mutex,初值为 1(代表临界资源只有一个) mutex初值为1.取值范围为[-1,0,1] 当mutex=1时,表示 ...
- 《操作系统实验》C++实现生产者-消费者问题
生产者-消费者问题 1 实验内容及要求 2 实验环境 3 实验设计 3.1 问题描述 3.2 基本思想 3.2.1 生产者线程 3.2.2 消费者线程 3.2.3 同步的实现 3.3 数据结构 4 实 ...
- 操作系统生产者消费者问题实验报告
操作系统实验报告 进程通信 1. 问题描述及需求分析: 问题描述 本次实验实现生产者和消费者之间的通信,即生产者-消费者问题.生产者一次生成一个元素放入缓冲池中,消费者一次可以从缓冲池中取出一个元素. ...
- 【操作系统-进程】PV操作——生产者消费者问题
文章目录 生产者消费者问题的万能方法步骤 Step 1. 有几类进程 Step 2. 用中文描述动作 Step 3. 添加 PV 操作,用中文描述里面的操作 Step 4. 检查是否出现死锁 Step ...
- 操作系统——进程同步与互斥
文章目录 进程同步与互斥 简介 进程间合作 进程间合作的问题 竞争条件 原子操作 临界区相关的几个概念 忙等待的互斥 基于硬件的同步解决办法:屏蔽中断 基于软件的同步解决方法 严格轮换法 Peters ...
- 操作系统自学(十三)生产者消费者问题以及多生产者多消费者问题
生产者消费者问题 系统中有一组生产者进程和消费者进程,生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品使用 (产品为某种数据) 生产者消费者共享一个初始为空 大小为n的缓冲区 ...
最新文章
- LCUI.css 0.1.2 发布, 基于 LCUI 开发的 UI 组件库
- node.js 学习笔记三:路由url
- CSAPP:第三章程序的机器级表示1
- asp获取手机mac_asp.net 获取客户端IP与mac
- 【CyberSecurityLearning 33】Nginx和Tomcat服务的搭建、Nginx负载均衡
- ORACLE SQL笛卡尔集
- B - Fibonacci Again
- AngularJS之Directive(三)
- 使用AJAX Toolkit创建新闻列表
- sparksql优化_Spark SQL amp; Streaming
- 犯罪分子社工GoDaddy 员工,获得密币相关网站域名的控制权
- 【深度学习】研究者意外发现DALL-E 2在用自创语言生成图像:全文黑话,人类都看不懂...
- 问题 : Day of Week
- C++中this的理解
- 哈工大 2021春 计算机系统 大作业程序人生
- 《嫌疑人X的献身》——两个天才之间的思想火花
- 使用RestFul风格操作ElasticSearch 看这篇够了
- 解决大/小于号在mapper.xml文件中的语法错误
- 曝苹果 2022 新款 iPad Pro 将在 9 月或 10 月发布:配备 M2 芯片、无线充电、相机系统升级
- Mac pro Virtualbox虚拟机下安装MikroTik RouterOS