版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課 程 設(shè) 計(jì)</b></p><p> 課程名稱(chēng) 操作系統(tǒng) </p><p> 題目名稱(chēng) 進(jìn)程調(diào)度 </p><p> 學(xué)生學(xué)院 計(jì)算機(jī)學(xué)院 </p><p> 2015 年 1 月 13
2、 日</p><p><b> 目錄</b></p><p><b> 1.設(shè)計(jì)目的4</b></p><p><b> 2.設(shè)計(jì)內(nèi)容4</b></p><p><b> 3.設(shè)計(jì)步驟5</b></p><p>
3、; 3.1.需求分析5</p><p> 3.2.概要設(shè)計(jì)5</p><p> 3.2.1 設(shè)計(jì)思想5</p><p> 3.2.2 模型定義5</p><p> 3.3.3 主程序流程圖5</p><p> 3.3.4 各程序模塊之間的層次(調(diào)用)關(guān)系6</p><p>
4、; 3.3 詳細(xì)設(shè)計(jì)7</p><p> 3.3.1 功能類(lèi)定義7</p><p> 3.3.2 函數(shù)調(diào)用關(guān)系圖7</p><p> 3.3.3 各模塊流程圖8</p><p> 3.4 調(diào)式分析8</p><p> 3.5 系統(tǒng)測(cè)試9</p><p> 3.6 使用說(shuō)
5、明13</p><p> 4. 經(jīng)驗(yàn)與體會(huì)14</p><p> 5.重要數(shù)據(jù)結(jié)構(gòu)或源程序中的疑難部分說(shuō)明14</p><p><b> 設(shè)計(jì)目的</b></p><p> 設(shè)計(jì)編程進(jìn)程調(diào)度的四個(gè)算法。通過(guò)具體的進(jìn)程調(diào)度算法的實(shí)現(xiàn),加深對(duì)進(jìn)程調(diào)度算法實(shí)現(xiàn)過(guò)程的理解,并且采用Android端動(dòng)態(tài)顯示,加深
6、MVC模式的理解與使用。</p><p><b> 設(shè)計(jì)內(nèi)容</b></p><p> 進(jìn)程調(diào)度是低級(jí)調(diào)度,它的主要功能是根據(jù)一定的算法將CPU分派給就緒隊(duì)列中的一個(gè)進(jìn)程。</p><p> 設(shè)計(jì)一個(gè)系統(tǒng)中有5個(gè)進(jìn)程,它們的到達(dá)時(shí)間和服務(wù)時(shí)間如下表所示,忽略I/O以及其他開(kāi)銷(xiāo)時(shí)間。</p><p> 進(jìn)程到達(dá)時(shí)
7、間服務(wù)時(shí)間</p><p><b> A03</b></p><p><b> B26</b></p><p><b> C44</b></p><p><b> D65</b></p><p><b
8、> E82</b></p><p> 算法實(shí)現(xiàn):先來(lái)先服務(wù)(FCFS)、非搶占及搶占的短進(jìn)程優(yōu)先(SPF)、高響應(yīng)比優(yōu)先(HRRN)以及時(shí)間片輪轉(zhuǎn)(時(shí)間片=1)調(diào)度算法。</p><p> 計(jì)算顯示:各進(jìn)程的完成時(shí)間、周轉(zhuǎn)時(shí)間、帶權(quán)周轉(zhuǎn)時(shí)間和平均帶權(quán)周轉(zhuǎn)時(shí)間。(計(jì)算到小數(shù)點(diǎn)后兩位)</p><p> 上述設(shè)計(jì)采用java程序語(yǔ)言編程&l
9、t;/p><p> 硬件環(huán)境:win8-PC 和Android4.4.2系統(tǒng)手機(jī)</p><p> 軟件環(huán)境:eclipse+adt</p><p><b> 設(shè)計(jì)步驟</b></p><p><b> 3.1.需求分析</b></p><p> 要求實(shí)現(xiàn)4個(gè)算法演示進(jìn)
10、程調(diào)度過(guò)程,其中短作業(yè)優(yōu)先算法可拆分成非搶占式和搶占式(合計(jì)成5個(gè))。用戶(hù)生成任務(wù)要求的測(cè)試數(shù)據(jù)后,選擇對(duì)應(yīng)的算法啟動(dòng)進(jìn)程調(diào)度,Android端界面動(dòng)態(tài)顯示調(diào)度過(guò)程,并記錄各狀態(tài)的個(gè)數(shù)及其各進(jìn)程的完成時(shí)間、周轉(zhuǎn)時(shí)間、帶權(quán)周轉(zhuǎn)時(shí)間和平均帶權(quán)周轉(zhuǎn)時(shí)間。</p><p><b> 3.2.概要設(shè)計(jì)</b></p><p> 3.2.1 設(shè)計(jì)思想</p>&
11、lt;p> 由于需要在Android端動(dòng)態(tài)演示過(guò)程,把整個(gè)流程的邏輯處理和界面顯示分離開(kāi)來(lái),結(jié)合MVC分層思想,線(xiàn)程通信機(jī)制,使用Android中的適配器來(lái)實(shí)現(xiàn)數(shù)據(jù)處理和界面顯示的結(jié)合。首先定義計(jì)時(shí)器,每隔一秒運(yùn)行一次子任務(wù)。該子任務(wù)處理好變化的數(shù)據(jù)后發(fā)送一個(gè)消息給UI線(xiàn)程。UI線(xiàn)程接受消息后,把處理的數(shù)據(jù)放進(jìn)適配器后進(jìn)行顯示。所有任務(wù)處理完后重置計(jì)時(shí)器。</p><p> 3.2.2 模型定義<
12、/p><p> 定義進(jìn)程類(lèi),用來(lái)記錄進(jìn)程在調(diào)度中數(shù)據(jù)的變化。</p><p> 使用多個(gè)泛型鏈表,分別才能不同狀態(tài)的進(jìn)程。</p><p> 3.3.3 主程序流程圖</p><p> 3.3.4 各程序模塊之間的層次(調(diào)用)關(guān)系</p><p><b> 3.3 詳細(xì)設(shè)計(jì)</b></
13、p><p> 3.3.1 功能類(lèi)定義</p><p> 3.3.2 函數(shù)調(diào)用關(guān)系圖</p><p> 3.3.3 各模塊流程圖</p><p><b> 3.4 調(diào)式分析</b></p><p> 問(wèn)題一:時(shí)間片控制不當(dāng)導(dǎo)致數(shù)據(jù)顯示混亂。</p><p> 解決方法
14、:畫(huà)流程圖,在運(yùn)行隊(duì)列中每更換對(duì)象,就重置時(shí)間片。檢查了不止10遍,最后控制好每一個(gè)交換對(duì)象細(xì)節(jié),終于結(jié)局。</p><p> 問(wèn)題二:運(yùn)行和就緒隊(duì)列合并成同一個(gè)隊(duì)列出錯(cuò)。</p><p> 解決方法:Java編程中,對(duì)隊(duì)列使用foreach時(shí)對(duì)泛型對(duì)象移動(dòng)時(shí),其底層會(huì)處理成迭代器,非線(xiàn)程安全,換成for循環(huán)使用。</p><p> 問(wèn)題三:達(dá)到時(shí)間的不確定導(dǎo)
15、致編程邏輯混亂。</p><p> 解決問(wèn)題:因?yàn)椴恢赖贜秒達(dá)到是指第N秒開(kāi)始還是第N秒結(jié)束,所以統(tǒng)一處理成第N秒結(jié)束時(shí)達(dá)到。</p><p> 問(wèn)題四:兩個(gè)鏈表引用同一個(gè)對(duì)象時(shí),引用對(duì)象影響同時(shí)影響兩個(gè)鏈表導(dǎo)致顯示出錯(cuò)。</p><p> 解決問(wèn)題:在重新產(chǎn)生一個(gè)對(duì)象,把原對(duì)象屬性賦給新對(duì)象,分別存進(jìn)去鏈表。遇到處理鏈表,則兩個(gè)對(duì)象同時(shí)處理就好。</
16、p><p><b> 3.5 系統(tǒng)測(cè)試</b></p><p> 以下測(cè)試數(shù)據(jù)為演示過(guò)程中某時(shí)刻</p><p><b> 先來(lái)先服務(wù)</b></p><p><b> 非搶占式短作業(yè)優(yōu)先</b></p><p><b> 搶占式短作業(yè)優(yōu)
17、先</b></p><p><b> 高響應(yīng)比優(yōu)先</b></p><p><b> 輪轉(zhuǎn)法</b></p><p><b> 3.6 使用說(shuō)明</b></p><p> ?。?)主界面點(diǎn)擊“進(jìn)程調(diào)度(課程設(shè)計(jì))”進(jìn)入操作界面,其他為實(shí)驗(yàn)內(nèi)容不做介紹。<
18、/p><p> (2)底部有兩個(gè)按鈕“添加測(cè)試進(jìn)程”和“啟動(dòng)進(jìn)程調(diào)度”,點(diǎn)擊“添加測(cè)試進(jìn)程”添加任務(wù)要求5個(gè)測(cè)試數(shù)據(jù),其上方有下拉菜單可選擇對(duì)應(yīng)調(diào)度算法后,再點(diǎn)擊“添加測(cè)試進(jìn)程”就可以進(jìn)行調(diào)度演示。</p><p> ?。?)在演示過(guò)程中無(wú)法添加進(jìn)程和啟動(dòng)進(jìn)程。系統(tǒng)自動(dòng)檢測(cè)是否完成,如</p><p><b> 4. 經(jīng)驗(yàn)與體會(huì)</b><
19、/p><p> Android端《操作系統(tǒng)課設(shè)》演示系統(tǒng)經(jīng)歷了UI初步設(shè)計(jì)、任務(wù)要求完成、UI推倒重來(lái)設(shè)計(jì)三個(gè)主要過(guò)程。初期為了演示只能在小小的手機(jī)屏幕隨意添加和布局顯示塊,接下來(lái)任務(wù)的實(shí)現(xiàn)是比較繁瑣的。因?yàn)橛兄皩?shí)驗(yàn)進(jìn)程調(diào)度的基礎(chǔ),所有5個(gè)算法難度一般,不過(guò)中間出現(xiàn)過(guò)一些小問(wèn)題:操作java對(duì)象時(shí)的對(duì)象修改亂象、鏈表越界等等,不過(guò)經(jīng)過(guò)調(diào)試和思考后都解決了。因?yàn)槠聊惠^小一次只能演示一個(gè)算法,考慮到不讓用戶(hù)退出就可以
20、進(jìn)行過(guò)多次測(cè)試,對(duì)代碼進(jìn)行了優(yōu)化和循環(huán)處理,加上更新Android UI進(jìn)程涉及到跨進(jìn)程通信,交叉處理比較麻煩,不過(guò)經(jīng)過(guò)努力,最后還是解決了,心里蠻開(kāi)心的。</p><p> 經(jīng)過(guò)本次實(shí)驗(yàn)和課設(shè)的學(xué)習(xí),自己動(dòng)手實(shí)現(xiàn)了所有功能,對(duì)課設(shè)內(nèi)容進(jìn)程調(diào)度有了更深刻的了解,特別是在處理各種算法時(shí)遇到問(wèn)題,使自己不得不冷靜下來(lái)思考,一定程度上加深了自己的認(rèn)知。</p><p> 重要數(shù)據(jù)結(jié)構(gòu)或源程序
21、中的疑難部分說(shuō)明</p><p> package com.example.caozuoxitong.model;</p><p><b> /**</b></p><p><b> * 課程設(shè)計(jì)進(jìn)程類(lèi)</b></p><p> * @author yummy</p><
22、p><b> * 進(jìn)程名</b></p><p><b> * 服務(wù)時(shí)間</b></p><p><b> * 達(dá)到時(shí)間</b></p><p><b> * 當(dāng)前狀態(tài)</b></p><p><b> * 等待時(shí)間</b&
23、gt;</p><p><b> *</b></p><p><b> */</b></p><p> public class MyCourseProcess implements Comparable {</p><p> private String name; </p>
24、<p> private int severTime;</p><p> private int getTime; </p><p> private String state;</p><p> private int waitTime;</p><p> public String getName() {</
25、p><p> return name;</p><p><b> }</b></p><p> public void setName(String name) {</p><p> this.name = name;</p><p><b> }</b></p&
26、gt;<p> public int getSeverTime() {</p><p> return severTime;</p><p><b> }</b></p><p> public void setSeverTime(int severTime) {</p><p> this.se
27、verTime = severTime;</p><p><b> }</b></p><p> public int getGetTime() {</p><p> return getTime;</p><p><b> }</b></p><p> publi
28、c void setGetTime(int getTime) {</p><p> this.getTime = getTime;</p><p><b> }</b></p><p> public String getState() {</p><p> return state;</p>&l
29、t;p><b> }</b></p><p> public void setState(String state) {</p><p> this.state = state;</p><p><b> }</b></p><p> public int getWaitTime()
30、 {</p><p> return waitTime;</p><p><b> }</b></p><p> public void setWaitTime(int waitTime) {</p><p> this.waitTime = waitTime;</p><p><b
31、> }</b></p><p><b> /**</b></p><p><b> *</b></p><p> *實(shí)現(xiàn)Comparable接口</p><p> *排序是按照當(dāng)前進(jìn)程服務(wù)時(shí)間從小打到排序</p><p><b> */
32、</b></p><p><b> @Override</b></p><p> public int compareTo(Object another) {</p><p> // TODO Auto-generated method stub</p><p> return this.getSev
33、erTime()-((MyCourseProcess)another).getSeverTime();</p><p><b> }</b></p><p><b> }</b></p><p> package com.example.caozuoxitong.model;</p><p>
34、 import android.R.string;</p><p><b> /**</b></p><p> * 進(jìn)程執(zhí)行情況表表項(xiàng)</p><p> * 表項(xiàng)包含:名字、完成時(shí)間、周轉(zhuǎn)時(shí)間、帶權(quán)周轉(zhuǎn)時(shí)間</p><p> * @author yummy</p><p><b&g
35、t; *</b></p><p><b> */</b></p><p> public class MyCourseProcessTime {</p><p> private String name; //進(jìn)程名</p><p> private double wanchengshijian;
36、//完成時(shí)間</p><p> private double zhouzhuanshijian;//周轉(zhuǎn)時(shí)間</p><p> private double daiquanzhouzhuan;//帶權(quán)周轉(zhuǎn)時(shí)間</p><p> public double getWanchengshijian() {</p><p> return w
37、anchengshijian;</p><p><b> }</b></p><p> public void setWanchengshijian(double wanchengshijian) {</p><p> this.wanchengshijian = wanchengshijian;</p><p>
38、<b> }</b></p><p> public double getZhouzhuanshijian() {</p><p> return zhouzhuanshijian;</p><p><b> }</b></p><p> public void setZhouzhuans
39、hijian(double zhouzhuanshijian) {</p><p> this.zhouzhuanshijian = zhouzhuanshijian;</p><p><b> }</b></p><p> public double getDaiquanzhouzhuan() {</p><p>
40、; return daiquanzhouzhuan;</p><p><b> }</b></p><p> public void setDaiquanzhouzhuan(double daiquanzhouzhuan) {</p><p> this.daiquanzhouzhuan = daiquanzhouzhuan;</
41、p><p><b> }</b></p><p> public String getName() {</p><p> return name;</p><p><b> }</b></p><p> public void setName(String string
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)
- 進(jìn)程調(diào)度算法 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(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)度算法
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì) (2)
- 操作系統(tǒng)課程設(shè)計(jì)——進(jìn)程調(diào)度模擬算法
- 操作系統(tǒng)_進(jìn)程調(diào)度算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)——進(jìn)程調(diào)度模擬算法
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度模擬設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度程序設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度子系統(tǒng)模擬實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)---多級(jí)反饋隊(duì)列進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---進(jìn)程調(diào)度的模擬實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)進(jìn)程_銀行家_頁(yè)面調(diào)度
- 操作系統(tǒng)課程設(shè)計(jì)--cpu進(jìn)程調(diào)度和內(nèi)存分配
- 操作系統(tǒng)模擬進(jìn)程課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論