网站大量收购独家精品文档,联系QQ:2885784924

利用管程PV信号量JAVA解决生产者消费者问题操作系统课程设计.pptVIP

利用管程PV信号量JAVA解决生产者消费者问题操作系统课程设计.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计—算法汇报 核心数据结构(1) 核心数据结构(1)主要方法 核心数据结构(2) 核心数据结构(2)主要方法 核心数据结构(2)主要方法 public void Wait(Semaphore x_sem,Count x_count) { x_count.Cvalue++;//等待资源的线程数加1,初始值为0 System.out.print(Wait\n); if(next_count0)//判断是否有发出signal操作的线程 { next.v();//若有就释放一个 System.out.print(释放一个发出signal操作的线程\n); //frame.a1.append(开放管程\n); } else { mutex.v();//否则开放管程 System.out.print(开放管程\n); frame.a1.append(开放管程\n); } x_sem.p();///等待资源的线程阻塞自己,X_sem初始化为0 //System.out.print(Wait\n); x_count.Cvalue--;//等待资源的线程数减1 } 核心数据结构(2)主要方法 public void Signal(Semaphore x_sem,Count x_count) { if(x_count.Cvalue0){//判断是否有等待资源的线程 System.out.print(Signal\n); next_count++;//发出signal操作的线程数加1 x_sem.v();//释放一个等待资源的线程 next.p();//发出signal操作的线程阻塞自己 //System.out.print(Signal\n); next_count--;//发出signal操作的线程数减1 } } } 核心算法流程图 生产者: 核心算法流程图 消费者: 功能模块 计划完成情况 在3月初完成程序框架及基本结构和类的整体设计及代码编写。 3月2日—3月5日:完成界面程序设计,并成功把界面和程序结合在一起。 3月6日—3月8日:完善核心程序,优化数据结构,按照老师的建议用管程实现。 注:基本按照计划进行,完成情况良好 存在的困难或问题 * 算法汇报 核心数据结构 存在的困难或问题 核心算法设计 功能模块设计 计划完成情况 核心程序 6 1 2 3 4 5 类的属性: Value;//信号量值 类的方法: (1)public Semaphore(int semValue) //构造函数 (2)public synchronized void p() //模拟P操作的函数 (3)public synchronized void v() //模拟V操作的函数 属性 Value 方法 2 1 3 public synchronized void p(){ //P操作(即申请资源) Value--;(信号量值减1) if(Value0){//没有可用资源 try{ this.wait(); //因资源不足而阻塞自己 }catch(InterruptedException e){} } } public synchronized void v(){//V操作 Value++; if(Value=0){ this.notify(); //释放一个等待资源的线程 } } } 类的属性: 类的方法: (1)public InterfaceModule(Main frame)// 构造函数 (2)public void enter()//进入管程 (3)public void leave()//离开管程 (4)public void Wait(Semaphore x_sem,Count x_count) //wait 函数 (5)public void Signal(Semaphore x_sem,Count x_count) //Signal 函数 private Semaphore mutex;//进程调用管程之前所使用的互斥信号量 private Semaphore next;//发出signal操作的线程挂起自己的信号量 int next_count;//在next上等待的线程数 (1)public void enter(){ mutex.p();//互斥的进入管程 //System.out.print(\n进入管程\n); } (2)public void leave(){ if(next_count0)//判断有否发出signa

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档