

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 一.課程設(shè)計(jì)的目的2</p><p> 二.課程設(shè)計(jì)的內(nèi)容及要求2</p><p><b> 三.實(shí)現(xiàn)原理2</b></p><p> 四.關(guān)鍵算法實(shí)現(xiàn)流程圖3</p><p> 4.1 多級(jí)反
2、饋隊(duì)列調(diào)度算法實(shí)現(xiàn)流程圖3</p><p> 4.2 文件詳細(xì)3</p><p> 五.軟件運(yùn)行環(huán)境及限制4</p><p> 六.結(jié)果輸出及分析4</p><p> 6.0.1 初始界面4</p><p> 6.1 主程序界面5</p><p> 6.2 執(zhí)行界面
3、6</p><p> 6.3 執(zhí)行完成7</p><p> 6.4 其他功能8</p><p> 6.5 算法結(jié)果說明9</p><p> 6.6 算法核心代碼9</p><p><b> 七.心得體會(huì)11</b></p><p><b&
4、gt; 八.參考文獻(xiàn)11</b></p><p><b> 課程設(shè)計(jì)的目的</b></p><p> 本課程設(shè)計(jì)是學(xué)生學(xué)習(xí)完《計(jì)算機(jī)操作系統(tǒng)(第三版)》課程后,進(jìn)行的一次全面的綜合訓(xùn)練,通過課程設(shè)計(jì),讓學(xué)生更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,加深對操作系統(tǒng)基礎(chǔ)理論和重要算法的理解,加強(qiáng)學(xué)生的動(dòng)手能力。</p><p> 二
5、.課程設(shè)計(jì)的內(nèi)容及要求</p><p> 設(shè)計(jì)一個(gè)虛擬處理機(jī),編程序演示堆積反饋隊(duì)列調(diào)度算法的具體實(shí)現(xiàn)過程</p><p><b> 三.實(shí)現(xiàn)原理</b></p><p> 該程序基于計(jì)算機(jī)調(diào)度算法中的多級(jí)反饋隊(duì)列算法,使用JAVA語言描述,通過線程和對象的調(diào)用來實(shí)現(xiàn)該算法的演示。</p><p> 在多級(jí)反饋隊(duì)
6、列算法中,當(dāng)一個(gè)新進(jìn)程進(jìn)入內(nèi)存后,首先將它放入第一隊(duì)列的末尾,按FCFS原則排隊(duì)等待調(diào)度。當(dāng)輪到該進(jìn)程執(zhí)行時(shí),如它能在該時(shí)間片內(nèi)完成,變可準(zhǔn)備撤離系統(tǒng);如果它在一個(gè)時(shí)間片結(jié)束時(shí)尚未完成,調(diào)度程序便將該進(jìn)程轉(zhuǎn)入第二隊(duì)列的末尾,在同樣地按FCFS原則等待調(diào)度執(zhí)行;如果它在第二個(gè)隊(duì)列中運(yùn)行一個(gè)時(shí)間片后仍未完成,在一次將它放入第三隊(duì)列,如此下去,當(dāng)一個(gè)長作業(yè)(進(jìn)程)從第一隊(duì)列依次降到第n隊(duì)列后,在第n隊(duì)列中便采取按時(shí)間片轉(zhuǎn)輪的方式運(yùn)行。<
7、/p><p> 僅當(dāng)?shù)谝魂?duì)列空閑時(shí),調(diào)度程序才調(diào)度第二隊(duì)列中的進(jìn)程運(yùn)行;僅當(dāng)?shù)?~(i-1)隊(duì)列均為空時(shí),才會(huì)調(diào)度第i隊(duì)列中的進(jìn)程運(yùn)行。如果處理機(jī)正常第i隊(duì)列中的某個(gè)進(jìn)程服務(wù)時(shí),又有新進(jìn)程進(jìn)入優(yōu)先權(quán)較高的隊(duì)列(第1~(i-1)中的任何一個(gè)隊(duì)列),此時(shí)新進(jìn)程將搶占正在運(yùn)行進(jìn)程的處理機(jī),即由調(diào)度程序把正在運(yùn)行的進(jìn)程返回第i隊(duì)列的末尾,把處理機(jī)分配給新到的高優(yōu)先權(quán)進(jìn)程。</p><p> 四.關(guān)
8、鍵算法實(shí)現(xiàn)流程圖</p><p> 4.1 多級(jí)反饋隊(duì)列調(diào)度算法實(shí)現(xiàn)流程圖</p><p><b> 4.2 文件詳細(xì)</b></p><p> Work.java:用于封裝每個(gè)進(jìn)程的Java Bean,將每個(gè)進(jìn)程的信息封裝到對象里面便于使用。</p><p> SeqQueue.java:用戶封裝每個(gè)隊(duì)列的
9、Java Bean,將每個(gè)隊(duì)列的信息封裝到對象里面便于使用。</p><p> Arithmetic.java:核心類文件,用于算法的計(jì)算和界面的控制。</p><p> View.java:用于構(gòu)建界面的類文件,用于向用戶演示整個(gè)算法運(yùn)行的過程,以及與用戶的交互操作。</p><p> ControlView.java:用于構(gòu)建控制臺(tái)的類文件,用于與用戶交互
10、以及控制程序的進(jìn)程等。</p><p> 五.軟件運(yùn)行環(huán)境及限制</p><p> 由于本程序是由java程序編寫,具有跨平臺(tái)的性能。在具有java支持的環(huán)境中皆能運(yùn)行,建議在windows2003 server及windows XP系統(tǒng)下運(yùn)行。</p><p> 環(huán)境要求:JDK1.6版本及其以上</p><p><b>
11、 六.結(jié)果輸出及分析</b></p><p> 6.0.1 初始界面</p><p> 初始化程序需要的空間等</p><p><b> 6.1 主程序界面</b></p><p> 左上方顯示隊(duì)列中排隊(duì)的進(jìn)程,左下為執(zhí)行完成的情況</p><p> 右上為執(zhí)行信息,右下方
12、為正在處理的進(jìn)程</p><p> 用戶可以對程序進(jìn)行操作</p><p><b> 算法實(shí)現(xiàn)思想</b></p><p><b> 6.2 執(zhí)行界面</b></p><p> 及時(shí)地添加進(jìn)程并按多級(jí)反饋隊(duì)列調(diào)度算法來執(zhí)行</p><p><b> 6.
13、3 執(zhí)行完成</b></p><p> 執(zhí)行完成后顯示出所有的進(jìn)程的執(zhí)行情況</p><p> 用戶可以通過控制臺(tái)來重新執(zhí)行</p><p><b> 6.4 其他功能</b></p><p><b> 換膚功能</b></p><p> 6.5
14、算法結(jié)果說明</p><p> 進(jìn)程運(yùn)行時(shí),將啟動(dòng)兩個(gè)線程,分別用來添加任務(wù)和執(zhí)行任務(wù),在任務(wù)執(zhí)行過程中,不斷的更新當(dāng)前的執(zhí)行情況,并接受用戶的操作。</p><p> 6.6 算法核心代碼</p><p> 算法核心代碼為Arithmetic.java,代碼如下:</p><p> class delThread extends
15、Thread{//執(zhí)行進(jìn)程</p><p> @SuppressWarnings("deprecation")</p><p> public void run(){</p><p> while(true){</p><p> if(isStop){</p><p> View.setS
16、q(sq);//更新面板數(shù)據(jù)</p><p> view.showWork();</p><p> view.showNewWork(-3, null);//刷新正在處理的面板</p><p> delThreadFlag=true;</p><p> delThread.this.stop();</p><p&g
17、t; }else if(!sq[0].isEmpty()){</p><p> doIn(0);//執(zhí)行第一個(gè)隊(duì)列</p><p> }else if(!sq[1].isEmpty()){</p><p> doIn(1);//執(zhí)行第二個(gè)隊(duì)列</p><p> }else if(!sq[2].isEmpty()){</p>
18、;<p> doIn(2);//執(zhí)行第三個(gè)隊(duì)列</p><p> }else if(!sq[3].isEmpty()){</p><p> doIn(3);//執(zhí)行第四個(gè)隊(duì)列</p><p> }else if(addThreadFlag){//添加進(jìn)程關(guān)閉且所有隊(duì)列為空時(shí)自動(dòng)關(guān)閉</p><p> view.show
19、NewWork(-2, null);//刷新正在處理的面板</p><p> delThreadFlag=true;</p><p> delThread.this.stop();</p><p><b> }</b></p><p><b> }</b></p><p&
20、gt;<b> }</b></p><p> public void doIn(int sqnum){//執(zhí)行某個(gè)隊(duì)列</p><p> doflag=sqnum;//標(biāo)志正常處理第sqnum隊(duì)列</p><p><b> try {</b></p><p> work=sq[sqnum]
21、.delete();//取出隊(duì)首元素</p><p> view.addMes("<font size='3'>執(zhí)行隊(duì)列"+(sqnum+1)+"中的'"+work.getName()+"'</font><br>");//添加信息</p><p> view.
22、setSq(sq);//更新面板數(shù)據(jù)</p><p> view.showWork();//刷新隊(duì)列面板</p><p> view.showNewWork(sqnum+1, work);//刷新正在處理的面板</p><p> int sqtime=sq[sqnum].getTime();//獲取隊(duì)列時(shí)間片</p><p> if(
23、isOver(sq[sqnum], work)){//在時(shí)間片類執(zhí)行完了</p><p> int worktime=work.getLefttime();//獲取進(jìn)程的剩余執(zhí)行時(shí)間</p><p> for(time=0;newflag&&time<worktime;time++){</p><p> Thread.sleep(1000
24、);</p><p><b> }</b></p><p> overThread(work);</p><p><b> }else{</b></p><p> for(time=0;newflag&&time<sqtime;time++){</p>&
25、lt;p> Thread.sleep(1000);</p><p><b> }</b></p><p> if(newflag){//沒有新進(jìn)程加入隊(duì)列</p><p> work.setLefttime(work.getLefttime()-sq[sqnum].getTime());</p><p>
26、 if(sqnum==3){//最后一個(gè)隊(duì)列</p><p> addInSeqQueue(sqnum, work);//放入下個(gè)隊(duì)列</p><p> view.addMes("<font size='3'>'"+work.getName()+"'未執(zhí)行完,轉(zhuǎn)入隊(duì)列"+(sqnum+1)+"
27、隊(duì)尾</font><br>");</p><p><b> }else{</b></p><p> addInSeqQueue(sqnum+1, work);//放入下個(gè)隊(duì)列</p><p> view.addMes("<font size='3'>'&quo
28、t;+work.getName()+"'未執(zhí)行完,轉(zhuǎn)入隊(duì)列"+(sqnum+2)+"隊(duì)尾</font><br>");</p><p><b> }</b></p><p> }else{//有新進(jìn)程加入隊(duì)列</p><p> view.addMes("<
29、;font size='3' color=#FF0000>有進(jìn)程進(jìn)入了優(yōu)先級(jí)更高的隊(duì)列</font><br>");</p><p> view.addMes("<font size='3'>'"+work.getName()+"'進(jìn)入隊(duì)列尾部</font><br&g
30、t;");</p><p> work.setLefttime(work.getLefttime()-time);</p><p> addInSeqQueue(sqnum, work);//放入隊(duì)列尾部</p><p> newflag=true;</p><p><b> }</b></p&g
31、t;<p><b> }</b></p><p> work=null;</p><p> view.showNewWork(sqnum+1, work);//刷新正在處理的面板</p><p> } catch (Exception e) {</p><p> e.printStackTrace
32、();</p><p><b> }</b></p><p><b> 七.心得體會(huì)</b></p><p> 通過這次課程設(shè)計(jì),不僅讓我進(jìn)一步地了解了多級(jí)反饋隊(duì)列調(diào)度算法,更重要的提高了我們的動(dòng)手能力。這次的課程設(shè)計(jì)項(xiàng)目也讓我意識(shí)到,未來的編程不是簡簡單單就能完成。而編程中所出現(xiàn)的問題也需要大家共同協(xié)商解決。開始的
33、時(shí)候以為這道題有些難,經(jīng)過對資料的查詢.如:多級(jí)反饋隊(duì)列調(diào)度算法如何的實(shí)現(xiàn)機(jī)制等,很快的找到了解決的辦法并迅速的編寫出了代碼。.</p><p> 對問題缺乏仔細(xì)的分析是我的一個(gè)缺點(diǎn),通過這次課程設(shè)計(jì)我克服了這個(gè)缺點(diǎn),更學(xué)會(huì)了如何地利用無限的網(wǎng)絡(luò)資源來幫助自己完善程序,學(xué)會(huì)了是使用前人的經(jīng)驗(yàn)來幫助自己更好地成長。這個(gè)多級(jí)反饋隊(duì)列調(diào)度算法程序還有一些不足之處,如不能演示過多的程序等,在以后的時(shí)間里我會(huì)將其完善。次
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)---多級(jí)反饋隊(duì)列進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)磁盤調(diào)度算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)_進(jìn)程調(diào)度算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 進(jìn)程調(diào)度算法 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度算法
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 《操作系統(tǒng)原理》課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤調(diào)度報(bào)告
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì) (2)
- 操作系統(tǒng)課程設(shè)計(jì)--磁盤調(diào)度算法實(shí)踐
- 操作系統(tǒng)課程設(shè)計(jì)——進(jìn)程調(diào)度模擬算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--多級(jí)文件系統(tǒng)
評論
0/150
提交評論