生产者消费者问题操作系统课程设计思路ppt课件_第1页
生产者消费者问题操作系统课程设计思路ppt课件_第2页
生产者消费者问题操作系统课程设计思路ppt课件_第3页
生产者消费者问题操作系统课程设计思路ppt课件_第4页
生产者消费者问题操作系统课程设计思路ppt课件_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目的及方法目的及方法 技术道路技术道路 中心技术中心技术 测试情况及分析测试情况及分析 4123OS课程设计课程设计总结汇报总结汇报目录一目录一任务总结任务总结 存在问题存在问题改良及讨论改良及讨论 系统演示系统演示 8567目录二目录二目的及方法 本课程设计经过模拟计算机操作系统中经典的“消费者消费者问题,稳定在操作系统原理课上所学的知识,加深对操作系统中进程同步和互斥、临界区管理等问题认识和了解,同时又了解了软件设计的流程、方法以及思想,提高分析设计以及编程的才干。技术道路技术道路消费者消费者消费者消费者多消费者多消费者多消费者多消费者同步同步互斥互斥并发并发可视化可视化P/ V多线程多线

2、程Java Swing和和awtThreadJava中的中的wait()和和notify()管程实现管程实现中心技术1public class Semaphore /信号量即P V操作的类private int Value;/信号量值public Semaphore(int semValue)this.Value=semValue;PS:用:用Java中的中的wait()和和notify()模拟模拟操作系统的操作系统的P/V操作操作public synchronized void p(String s) /P操作即恳求资源操作即恳求资源Value-;if(Value0)/没有可用资源没有可用资

3、源trySystem.out.print(+s+进入阻塞队列进入阻塞队列n);frame.a1.append(+s+进入阻塞队列进入阻塞队列n);this.wait(); /因资源缺乏而阻塞本人因资源缺乏而阻塞本人/System.out.print(+this.toString()+is waittingn);/*catch(InterruptedException e)类类Semaphore的定义和重要方法方法的定义和重要方法方法模拟操作系统的模拟操作系统的P操作操作public synchronized void v(String ss)/V操作操作Value+;if(Value0)/判别

4、有否发出signal操作的线程 next.v(s1+释放一个因发出signal操作而阻塞本人的线程n);/假设有就释放一个/frame.a1.append(释放一个因发出signal操作而阻塞本人的线程n);else mutex.v(s1+分开管程n+开放管程); /否那么开放管程 /frame.a1.append(线程即将要分开管程,在分开之前开放管程n); /System.out.print(n分开管程n);中心技术2续中心函数public void Wait(Semaphore x_sem,Count x_count,String s1)x_count.Cvalue+;/等待资源的线程数

5、加等待资源的线程数加1,初始值为,初始值为0System.out.print(Waitn);frame.a1.append(s1+执行执行Wait操作操作 因资源不可用而该线程因资源不可用而该线程 即将即将 阻塞本人!阻塞本人!缓冲区已满或者已为空缓冲区已满或者已为空n在阻塞本人之前,先判别能否有发出在阻塞本人之前,先判别能否有发出signal操作的线程。假操作的线程。假设有,那么释放之。否那么预备开放管程。之后便阻塞本人设有,那么释放之。否那么预备开放管程。之后便阻塞本人 n );if(next_count0)/判别能否有发出判别能否有发出signal操作的线程。由于发出此操作的线程会阻塞本

6、人。操作的线程。由于发出此操作的线程会阻塞本人。next.v(释放一个因发出释放一个因发出signal操作,唤醒了其他线程而阻塞本人的线程操作,唤醒了其他线程而阻塞本人的线程 如今如今n);/假假设有就释放一个设有就释放一个System.out.print(释放一个发出释放一个发出signal操作的线程操作的线程n);elsemutex.v(没有因发出没有因发出signal操作而阻塞本人的线程,也没有当前线程的可用资源操作而阻塞本人的线程,也没有当前线程的可用资源 在阻在阻塞当前线程之前先开放管程,让其他线程有时机获得管程塞当前线程之前先开放管程,让其他线程有时机获得管程n);/否那么开放管程

7、否那么开放管程System.out.print(开放管程开放管程n);x_sem.p(s1+线程因没有可用资源即缓冲区而线程因没有可用资源即缓冲区而);/等待资源的线程阻塞本人,等待资源的线程阻塞本人,X_sem初始化为初始化为0 x_count.Cvalue-;/等待资源的线程数减等待资源的线程数减1中心技术2续中心函数public void Signal(Semaphore x_sem,Count x_count,String s2) frame.a1.append(s2+执行Signal操作 假设当前有等待资源的线程那么唤醒该线程并阻塞本人。否那么唤醒信号丧失n ); if(x_coun

8、t.Cvalue0)/判别能否有等待资源的线程 System.out.print(Signaln); next_count+;/发出signal操作的线程数加1 x_sem.v(“ 资源可用,唤醒等待资源的线程! 缓冲 区不满或者不空 如今n);/释放一个等待资源的线程next.p(s2+线程因发出Signal操作阻塞本人,等待已唤醒的线程退出管程或其他 事件 n);/发出signal操作的线程阻塞本人,一旦阻塞,以下的next_count-;将不会执行,等待被其他管程内部事件的唤醒。 next_count-;/发出signal操作的线程数减1 中心技术图示入口出口等待进入管程的队列消费者阻塞

9、队列消费者阻塞队列enterwaitsignalleave资源可用详细操作发出signal而阻塞本人的队列YN开关管程唤醒唤醒阻塞阻塞阻塞测试情况及分析 任务总结任务总结寒假期间:小组成员共同选定课题工程,商讨开发言语,确定根本的技术道路,由组长完成程序框架及根本构造和类的设计。2月20日2月27:完成了中心程序并进展根本测试,编写出各类中的方法代码。完成方案幻灯片的制造。2月28日3月4日:完善中心程序。完成用户界面程序的编写。3月6日3月7日:完成将各模块函数的组合,胜利将中心程序与界面交融。完成算法汇报PPT3月8日:根据教师的要求改用管程实现,完善整体程序。3月9日如今:完成总结汇报P

10、PT,进展进程跟踪测试分析。开场进展设计报告和提优论文的撰写。存在的问题存在的问题1 1对于进程的追踪和管理尚不到位对于进程的追踪和管理尚不到位2 21 1对软件开发流程还不熟习对软件开发流程还不熟习2 2从实际到实际还有一定程度的困难从实际到实际还有一定程度的困难改良及讨论改良及讨论1 1由于运用由于运用JavaJava封装好的方法来阻塞和唤醒进程,不知封装好的方法来阻塞和唤醒进程,不知道其详细实现的方式和管理方式,曾经自定义了一个道其详细实现的方式和管理方式,曾经自定义了一个PCBPCB类类尝试跟踪进程,获得一定的效果,但还未完全实现对其管尝试跟踪进程,获得一定的效果,但还未完全实现对其管理与控制。理与控制。2 2在课程设计中发现了本身的缺乏,经过此锻炼,我们在课程设计中发现了本身的缺乏,经过此锻炼,我们逐渐熟习了软件开发流程,也初步学会如何把实际知识转逐渐熟习了软件开发流程,也初步学会如何把实际知识转为实践运用。为实践运用。系统演示系统演示开场界面:开场界面:可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论