资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,单击此处编辑母版标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,单击此处编辑母版标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,目的及方法,技术路线,核心技术,测试情况及分析,4,1,2,3,OS,课程设计,总结汇报,目录一,工作总结,存在问题,改进及讨论,系统演示,8,5,6,7,目录二,目的及方法,本课程设计通过模拟计算机操作系统中经典的“生产者,消费者问题”,巩固在操作系统原理课上所学的知识,加深对操作系统中进程同步和互斥、临界区管理等问题认识和理解,同时又了解了软件设计的流程、方法以及思想,提高分析设计以及编程的能力。,技术路线,生产者,消费者,多生产者多消费者,同步,互斥,并发,可视化,P,(),/V,(),多线程,Java Swing,和,awt,Thread,Java,中的,wait(),和,notify(),管程实现,核心技术(,1,),模拟P、V操作:,public 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)/,没有可用资源,try,System.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)/,判断有否发出,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+;/,等待资源的线程数加,1,,初始值为,0,System.out.print(Waitn);,frame.a1.append(s1+,执行,Wait,操作 因资源不可用而该线程 即将 阻塞自己!(缓冲区已满或者已为空),n,在阻塞自己之前,先判断是否有发出,signal,操作的线程。若有,则释放之。否则准备开放管程。之后便阻塞自己,n);,if(next_count0)/,判断是否有发出,signal,操作的线程。因为发出此操作的线程会阻塞自己。,next.v(,释放一个因发出,signal,操作,唤醒了其他线程而阻塞自己的线程 现在,n);/,若有就释放一个,System.out.print(,释放一个发出,signal,操作的线程,n);,else,mutex.v(,没有因发出,signal,操作而阻塞自己的线程,也没有当前线程的可用资源 在阻塞当前线程之前先开放管程,让其他线程有机会获得管程,n);/,否则开放管程,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_count.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,核心技术图,示,示,入口,出口,等待进入管,程,程的队列,生产者阻塞,队,队列,消费者阻塞,队,队列,enter,wait,signal,leave,资源可用,具体操作,发出,signal,而阻塞自己,的,的队列,Y,N,开关管程,唤醒,唤醒,阻塞,阻塞,阻塞,测试情况及,分,分析,工作总结,寒假期间:,小组成员共,同,同选定课题,项,项目,商讨,开,开发语言,,确,确定基本的,技,技术路线,,由,由组长完成,程,程序框架及,基,基本结构和,类,类的设计。,2,月,20,日,2,月,27,:,完成了核心,程,程序并进行,基,基本测试,,编,编写出各类,中,中的方法代,码,码。完成方,案,案幻灯片的,制,制作。,2,月,28,日,3,月,4,日:,完善核心程,序,序。完成用,户,户界面程序,的,的编写。,3,月,6,日,3,月,7,日:,完成将各模,块,块函数的组,合,合,成功将,核,核心程序与,界,界面融合。,完,完成算法汇,报,报,PPT,3,月,8,日:,根据老师的,要,要求改用管,程,程实现,完,善,善整体程序,。,。,3,月,9,日,现在:,完成总结汇,报,报,PPT,,进行进程,跟,跟踪测试分,析,析。开始进,行,行设计报告,和,和提优论文,的,的撰写。,存在的问题,系统上的不,足,足:,(,1,)对于进程,的,的追踪和管,理,理尚不到位,(,2,),自身上的不,足,足:,(,1,)对软件开,发,发流程还不,熟,熟悉,(,2,)从理论到,实,实践还有一,定,定程度的困,难,难,改进及讨论,(,1,)因为应用,Java,封装好的方,法,法来阻塞和,唤,唤醒进程,,不,不知道其具,体,体实现的方,式,式和管理方,式,式,已经自,定,定义了一个,PCB,类尝试跟踪,进,进程,取得,一,一定的效果,,,,但还未完,全,全实现对其,管,管理与控制,。,。,(,2,)在课程设,计,计中发现了,自,自身的不足,,,,经过此锻,炼,炼,我们逐,步,步熟悉了软,件,件开发流程,,,,也初步学,会,会如何把理,论,论知识转为,实,实际应用。,系统演示,开始界面:,可设置生产,者,者数目,消,费,费者数目以,及,及缓冲区大,小,小,单击确,定,定即可,系统演示,主界面:,可按需要调,节,节生产者和,消,消费者的速,度,度,如需统,计,计请单击分,析,析按钮,系统演示,分析界面:,可以得到统,计,计数据也可,从,从滚动面板,中,中看出各线,程,程的状态,9,、静,夜,夜四,无,无邻,,,,荒,居,居旧,业,业贫,。,。1月-231月-23,Friday,January6,2023,10,、雨中,黄,黄叶树,,,,灯下,白,白头人,。,。08:56:5308:56:5308:56,1/6/20238:56:53 AM,11,、以我独沈,久,久,愧君相,见,见频。1月-2308:56:5308:56,Jan-2306-Jan-23,12,、故人江,海,海别,几,度,度隔山川,。,。08:56:5308:56:5308:56,Friday,January6,2023,13,、乍,见,见翻,疑,疑梦,,,,相,悲,悲各,问,问年,。,。1月-231月-2308:56:5308:56:53,January6,2023,14,、他乡生白,发,发,旧国见,青,青山。06 一月20238:56:53 上午08:56:531月-23,15,、比,不,不了,得,得就,不,不比,,,,得,不,不到,的,的就,不,不要,。,。一月238:56,上,上,午,午1月-2308:56,January6,2023,16,、行动出,成,成果,工,作,作出财富,。,。2023/1/68:56:5308:56:53,06 January 2023,17,、做前,,,,能够,环,环视四,周,周;做,时,时,你,只,只能或,者,者最好,沿,沿着以,脚,脚为起,点,点的射,线,线向前,。,。8:56:53 上,午,午8:56 上,午,午08:56:531月-23,9,、没有失败,,,,只有暂时,停,停止成功!,。,。1月-231月-23,Friday,January6,2023,10,、很,多,多事,情,情努,力,力了,未,未必,有,有结,果,果,,但,但是,不,不努,力,力却,什,什么,改,改变,也,也没,有,有。,。,。08:56:5308:56:5308:56,1/6/20238:56:53AM,11,、成功就是,日,日复一日那,一,一点点小小,努,努力的积累,。,。1月-2308:56:5308:56,Jan-2306-Jan-23,12,、世,间,间成,事,事,,不,不求,其,其绝,对,对圆,满,满,,留,留一,份,份不,足,足,,可,可得,无,无限,完,完美,。,。08:56:5308:56:5308:56,Friday,January6,2023,13,、不知香,积,积寺,数,里,里入云峰,。,。1月-231月-2308:56:5308:56:53,January6,2023,14,、意志坚强,的,的人能把世,界,界放在手中,像,像泥块一样,任,任意揉捏。06 一月20238:56:53 上午08:56:531月-23,15,、楚塞三,湘,湘接,荆,门,门九派通,。,。一月 238:56,上,上
展开阅读全文