蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > PDF文档下载
 

操作系统试验报告三大问题之生产者与消费者问题

  • 资源ID:55679172       资源大小:185.58KB        全文页数:9页
  • 资源格式: PDF        下载权限:游客/注册会员    下载费用:10积分 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要10积分 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

操作系统试验报告三大问题之生产者与消费者问题

计算机操作系统实验报告 题题目目 三三大大经经典典问问题题之之生生产产者者与与消消费费者者问问题题 一、一、课课程设计的性质与任务程设计的性质与任务 1、加深对并发协作进程同步与互斥概念的理解。通过编写 程序实现 进程 同步和互斥 ,使学 生掌握有 关进程 (线程) 同步与 互斥的原 理,以 及解决进程 (线程 )同步和 互斥的 算法,从 而进一 步巩固进 程(线 程)同步和 互斥等 有关的内 容。 2、掌握进 程和线程 的概念,进程( 线程)的 控制原 语或系统 调用的 使用。 3、了解 Windows2000/XP中多 线程的 并发执行 机制, 线程间的 同步 和互斥。学习使用 Windows2000/XP中基本的 同步对象 ,掌握相应的 API 函数。 4、培养学生能够独立进行知识综合,独立开发较大程序的能力。 5、培养提高学生软件开发能力和软件的调试技术。 6、培养学生开发大型程序的方法和相互合作的精神。 7、培养学生的创新意识。 8、培养学生的算法设计和算法分析能力。 9、培养学生对问题进行文字论述和文字表达的能力。 二二、课程设计的内容及其要求、课程设计的内容及其要求 在 WindowsXP 、Windows2000等操作 系统下,使 用的 VC、VB、 Java 或 C 等编程语 言,采用 进程(线程)同步和互 斥的技术 编写程 序实现生产 者消费 者问题或 哲学家 进餐问题 或读者 -写者问题 或自 己设计一个 简单进 程(线程 )同步 和互斥的 实际问 题。 要要求求(1)经 调试 后程序能 够正常 运行。 (2)采用多 进程或 多线程方 式运行 ,体现了 进程( 线程) 同步互斥的 关系。 (3)程序界 面美观 。 三、实验原理三、实验原理 本实验要求 利用 PV 操作实现 解决生产 者消 费者问 题中的 同步问题。 此问题 描述的是 一群生 产者进程 在生产 产品并将 这些产 品提供给消 费者进 程去消费 ,在两 者之间设 置了一 个具有 n 个缓冲 区的缓冲池 ,生产 者进程将 它所生 产的产品 放入一 个缓冲区 ,消费 者进程可从 缓冲区 中取走产 品去消 费,但它 们之间 必须保持 同步, 即不允许消 费者进 程到一个 空缓冲 区去取产 品,也 不允许生 产者进 程向一个已 装满且 尚未取出 的缓冲 区中投放 产品, 并且生产 者消费 者互斥使用 缓冲区 。 四、实验原理图四、实验原理图 五、算法实现五、算法实现 (1) 有一个生产者线程ProduceThread, 有1 个消费者进程CustomerThread; 缓冲区为 shareList。 (2)使用线程同步用 synchonizedsynchonized 关键字(加锁)使得一个时间内只能 有一个线程得到执行, 另一个线程必须等待当前线程执行完这个代码块以后 才能执行该代码块;;waitwait让线程进入等待状态;notifynotify()()函数唤醒一个 处于等待状态的线程。 (3)程序运行流程图如下 (如不在外部中断,程序将一直循环运行) 开始 生产者 仓 库 是 否 消费者 否 生 产 者 生 消 费 者 等是 消 费 者 消 生 产 者 等 唤 醒 消 费 六、源代码六、源代码 packagepackage 操作系统; /* *产品类 */ publicclasspublicclass Goods { intint id; String name; publicpublic String toString{ returnreturn id“ “name; } 唤 醒 生 产 } packagepackage 操作系统; importimport /* * 消费者线程有产品时可以取出,无产品时等待 */ publicclasspublicclassCustomerThreadextendsextends Thread{ privateprivateListshareList; CustomerThreadListshareList{ thisthis.shareListshareList; } publicvoidpublicvoid run{ System.out.println“消费线程已启动.“shareList.size; whilewhiletruetrue{ trytry{ synchronizedsynchronizedshareList{ whilewhileshareList.size0{ //如果没有产品,消费线程则等待 shareList.wait; } whilewhileshareList.size0{ System.out.println“0{ shareList.wait; } whilewhileshareList.size0{ Goods gs newnewGoods; count; gs.idcount; gs.name“产品“count; System.out.println“-生产线程放入对象 “gs.toString; shareList.addgs; //通知消费线程,队列中有对象了 shareList.notify; } } }catchcatchException ef{ ef.printStackTrace; } } } //用来标记放入对象的每一个独立ID号 privatestaticintprivatestaticintcount0; //与消费者线程或以共同存取的对象列表 privateprivateListshareList; } package 操作系统; public class Manage { //主函数 public static void mainString[] args{ //生产\消费线程交换对象的队列 //启动生产线程 newProduceThreadshareList.start; //启动消费线程 newCustomerThreadshareList.start; } } 七、运行结果七、运行结果 八、实验心得八、实验心得 在此次实验中我们模拟 PV操作同步机构,来解决消费者与生产者这两 个进程之间的同步协调问题。实验中值得注意的是解决进程同步需要做哪 些工作,如何利用信号量机制来解决进程同步问题等等。通过本次实验, 我对操作系统的 p、v 有了进一步认识,深入了解了p、v 操作的实质和其重 要性,加深了我对操作系统中多线程机制的理解和认识,更让我认识到知识 的掌握,仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能更 好地理解和分析问题。此外,我也发现自己在编程上仍存在较大的问题,本 次实验让我对 java 语言的线程编写水平有了提高。我日后会不断加深各方 面知识的学习,弥补自己的不足。实验给了我们实践的机会,给了我们理论 结合实际的机会,从实验中可以学到很多东西,不仅仅是书本上的东西这 么简单,更是培养了我们动手能力和自学能

注意事项

本文(操作系统试验报告三大问题之生产者与消费者问题)为本站会员(sunhongz122)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开