操作系统课程设计--算法汇报

操作系统课程设计--算法汇报

ID:35625950

大小:289.00 KB

页数:12页

时间:2019-04-03

操作系统课程设计--算法汇报_第1页
操作系统课程设计--算法汇报_第2页
操作系统课程设计--算法汇报_第3页
操作系统课程设计--算法汇报_第4页
操作系统课程设计--算法汇报_第5页
资源描述:

《操作系统课程设计--算法汇报》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、操作系统课程设计—算法汇报算法汇报核心数据结构存在的困难或问题核心算法设计功能模块设计计划完成情况核心程序612345核心数据结构(1)一、信号量类类的属性:Value;//信号量值类的方法:(1)publicSemaphore(intsemValue)//构造函数(2)publicsynchronizedvoidp()//模拟P操作的函数(3)publicsynchronizedvoidv()//模拟V操作的函数属性Value方法213核心数据结构(1)主要方法publicsynchronizedvoidp(){//P操作(即申请资源)Value--;(信号量值减1)if(Value

2、<0){//没有可用资源try{this.wait();//因资源不足而阻塞自己}catch(InterruptedExceptione){}}}P操作模拟函数publicsynchronizedvoidv(){//V操作Value++;if(Value<=0){this.notify();//释放一个等待资源的线程}}}V操作模拟函数核心数据结构(2)一、管程类类的属性:类的方法:(1)publicInterfaceModule(Mainframe)//构造函数(2)publicvoidenter()//进入管程(3)publicvoidleave()//离开管程(4)publicv

3、oidWait(Semaphorex_sem,Countx_count)//wait函数(5)publicvoidSignal(Semaphorex_sem,Countx_count)//Signal函数privateSemaphoremutex;//进程调用管程之前所使用的互斥信号量privateSemaphorenext;//发出signal操作的线程挂起自己的信号量intnext_count;//在next上等待的线程数核心数据结构(2)主要方法(1)publicvoidenter(){mutex.p();//互斥的进入管程//System.out.print("进入管程

4、");}(2)publicvoidleave(){if(next_count>0)//判断有否发出signal操作的线程next.v();//若有就释放一个else{mutex.v();//否则开放管程frame.a1.append("开放管程");}//System.out.print("离开管程");}核心数据结构(2)主要方法publicvoidWait(Semaphorex_sem,Countx_count){x_count.Cvalue++;//等待资源的线程数加1,初始值为0System.out.print("Wait");if(next_count>0)/

5、/判断是否有发出signal操作的线程{next.v();//若有就释放一个System.out.print("释放一个发出signal操作的线程");//frame.a1.append("开放管程");}else{mutex.v();//否则开放管程System.out.print("开放管程");frame.a1.append("开放管程");}x_sem.p();///等待资源的线程阻塞自己,X_sem初始化为0//System.out.print("Wait");x_count.Cvalue--;//等待资源的线程数减1}核心数据结构(2)主要方法publi

6、cvoidSignal(Semaphorex_sem,Countx_count){if(x_count.Cvalue>0){//判断是否有等待资源的线程System.out.print("Signal");next_count++;//发出signal操作的线程数加1x_sem.v();//释放一个等待资源的线程next.p();//发出signal操作的线程阻塞自己//System.out.print("Signal");next_count--;//发出signal操作的线程数减1}}}核心算法流程图生产者:生产者调管程可用?等待NY进管程缓冲区有空?Y放产品唤醒操作离开N

7、等待资源的线程加1有发signal而阻塞的线程开管程NY有等待?释放一线程阻塞自己YN释放1发出signal的线程核心算法流程图消费者:是否有因发出signal而阻塞自己?无管程而等待N等待waitN调用管程拿一个产品唤醒操作signal消费者进管程YY离开管程可用?缓冲不空?等待唤醒等待的线程加1是否有等待资源的线程释放一个发signal发出signal线程加1YN释放一个等待资源线程阻塞自己(管内)等待管程内部唤醒YN开管阻塞自己(管外)发

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。