版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)三 驅(qū)動(dòng)調(diào)度一、實(shí)驗(yàn)內(nèi)容模擬電梯調(diào)度算法,實(shí)現(xiàn)對(duì)磁盤的驅(qū)動(dòng)調(diào)度。二、實(shí)驗(yàn)?zāi)康?磁盤是一種高速、大容量、旋轉(zhuǎn)型、可直接存取的存儲(chǔ)設(shè)備。它作為計(jì)算機(jī)系統(tǒng)的輔助存儲(chǔ)器,擔(dān)負(fù)著繁重的輸入輸出任務(wù)、在多道程序設(shè)計(jì)系統(tǒng)中,往往同時(shí)會(huì)有若干個(gè)要求訪問磁盤的輸入輸出請(qǐng)求等待處理。系統(tǒng)可采用一種策略,盡可能按最佳次序執(zhí)行要求訪問磁盤的諸輸入輸出請(qǐng)求。這就叫驅(qū)動(dòng)調(diào)度,使用的算法稱為驅(qū)動(dòng)調(diào)度算法。驅(qū)動(dòng)調(diào)度能降低為若干個(gè)輸入輸出請(qǐng)求服務(wù)所需的總時(shí)間,從而提高系統(tǒng)效率。本實(shí)驗(yàn)要求學(xué)生模擬設(shè)計(jì)一個(gè)驅(qū)動(dòng)調(diào)度程序,觀察驅(qū)動(dòng)調(diào)度程序的動(dòng)態(tài)運(yùn)行過程。通過實(shí)驗(yàn)使學(xué)生理解和掌握驅(qū)動(dòng)調(diào)度的職能。三、實(shí)驗(yàn)題目模擬電梯調(diào)度算法,對(duì)磁盤
2、進(jìn)行移臂和旋轉(zhuǎn)調(diào)度。提示:(1)磁盤是可供多個(gè)進(jìn)程共享的存儲(chǔ)設(shè)備,但一個(gè)磁盤每時(shí)刻只能為一個(gè)進(jìn)程服務(wù)。當(dāng)有進(jìn)程在訪問某個(gè)磁盤時(shí),其他想訪問該磁盤的進(jìn)程必須等待,直到磁盤一次工作結(jié)束。當(dāng)有多個(gè)進(jìn)程提出輸入輸出要求而處于等待狀態(tài)時(shí),可用電梯調(diào)度算法從若干個(gè)等待訪問者中選擇一個(gè)進(jìn)程,讓它訪問磁盤。選擇訪問者的工作由“驅(qū)動(dòng)調(diào)度”進(jìn)程來完成。 由于磁盤與處理器是可以并行工作的、所以當(dāng)磁盤在作為一個(gè)進(jìn)程服務(wù)時(shí),占有處理器的另一進(jìn)程可以提出使用磁盤的要求,也就是說,系統(tǒng)能動(dòng)態(tài)地接收新的輸入輸出請(qǐng)求。為了模擬這種情況,在本實(shí)驗(yàn)中設(shè)置了一個(gè)“接收請(qǐng)求”進(jìn)程?!膀?qū)動(dòng)調(diào)度”進(jìn)程和“接收請(qǐng)求”進(jìn)程能否占有處理器運(yùn)行,
3、取決于磁盤的結(jié)束中斷信號(hào)和處理器調(diào)度策略。在實(shí)驗(yàn)中可用隨機(jī)數(shù)來模擬確定這兩個(gè)進(jìn)程的運(yùn)行順序,以代替中斷處理和處理器調(diào)度選擇的過程。因而,程序的結(jié)構(gòu)可參考圖31初始化輸入在0,1區(qū)間內(nèi)的一個(gè)隨機(jī)數(shù)隨機(jī)數(shù)1/2開始驅(qū)動(dòng)調(diào)度接受請(qǐng)求繼續(xù)?結(jié)束是是否否圖31 程序結(jié)構(gòu)(2)“接收請(qǐng)求”進(jìn)程建立一張“請(qǐng)求I/O”表,指出訪問磁盤的進(jìn)程要求訪問的物理地址,表的格式為:進(jìn)程名柱面號(hào)磁道號(hào)物理記錄號(hào) 假定某個(gè)磁盤組共有200個(gè)柱面,由外向里順序編號(hào)(0199),每個(gè)柱面上有20個(gè)磁道,編號(hào)為019,每個(gè)磁道分成8個(gè)物理記錄,編號(hào)07。進(jìn)程訪問磁盤的物理地址可以用鍵盤輸入的方法模擬得到。圖32是“接收請(qǐng)求”進(jìn)程
4、的模擬算法。 開始有請(qǐng)求?輸入:進(jìn)程名物理地址進(jìn)程排入等待隊(duì)列登記“請(qǐng)求I/O表返回是否 圖 32 “接收請(qǐng)求”模擬算法在實(shí)際的系統(tǒng)中必須把等待訪問磁盤的進(jìn)程排入等待列隊(duì),由于本實(shí)驗(yàn)?zāi)M驅(qū)動(dòng)調(diào)度,為簡單起見,在實(shí)驗(yàn)中可免去隊(duì)列管理部分,故設(shè)計(jì)程序時(shí)可不考慮“進(jìn)程排入等待隊(duì)列”的工作。(3)“驅(qū)動(dòng)調(diào)度”進(jìn)程的功能是查“請(qǐng)求I/O”表,當(dāng)有等待訪問磁盤的進(jìn)程時(shí),按電梯調(diào)度算法從中選擇一個(gè)等待訪問者,按該進(jìn)程指定的磁盤物理地址啟動(dòng)磁盤為其服務(wù)。對(duì)移動(dòng)臂磁盤來說,驅(qū)動(dòng)調(diào)度分移臂調(diào)度和旋轉(zhuǎn)調(diào)度。電梯調(diào)度算法的調(diào)度策略是與移動(dòng)臂的移動(dòng)方向和移動(dòng)臂的當(dāng)前位子有關(guān)的,所以每次啟動(dòng)磁盤時(shí)都應(yīng)登記移動(dòng)臂方向和當(dāng)前
5、位子。電梯調(diào)度算法是一種簡單而實(shí)用的驅(qū)動(dòng)調(diào)度方法,這種調(diào)度策略總是優(yōu)先選擇與當(dāng)前柱面號(hào)相同的訪問請(qǐng)求,從這些請(qǐng)求中再選擇一個(gè)能使旋轉(zhuǎn)距離最短的等待訪問者。如果沒有與當(dāng)前柱面號(hào)相同的訪問請(qǐng)求,則根據(jù)移臂方向來選擇,每次總是沿臂移動(dòng)方向選擇一個(gè)與當(dāng)前柱面號(hào)最近的訪問請(qǐng)求,若沿這個(gè)方向沒有訪問請(qǐng)求時(shí),就改變臂的移動(dòng)方向。這種調(diào)度策略能使移動(dòng)臂的移動(dòng)頻率極小,從而提高系統(tǒng)效率。用電梯調(diào)度算法實(shí)現(xiàn)驅(qū)動(dòng)調(diào)度的模擬算法如圖33。(4)圖31中的初始化工作包括,初始化“請(qǐng)求I/O”表,置當(dāng)前移臂方向?yàn)槔镆?;置?dāng)前位置為0號(hào)柱面,0號(hào)物理記錄。程序運(yùn)行前可假定“請(qǐng)求I/O”表中已經(jīng)有如干個(gè)進(jìn)程等待訪問磁盤。在模
6、擬實(shí)驗(yàn)中,當(dāng)選中一個(gè)進(jìn)程可以訪問磁盤時(shí),并不實(shí)際地啟動(dòng)磁盤,而用顯示:“請(qǐng)求I/O”表;當(dāng)前移臂方向;當(dāng)前柱面號(hào),物理記錄號(hào)來代替圖33中的“啟動(dòng)磁盤”這項(xiàng)工作。置當(dāng)前移臂方向?yàn)橄蛲庖浦卯?dāng)前移臂方向?yàn)橄蛲庖茝拇笥诋?dāng)前柱面號(hào)的訪問請(qǐng)求中選擇一個(gè)最小者從小于當(dāng)前柱面號(hào)的訪問請(qǐng)求中選擇一個(gè)最大者登記當(dāng)前位置;柱面號(hào);物理記錄號(hào);啟動(dòng)磁盤被選者退出“請(qǐng)求I/O”表返回開 始否否查“請(qǐng)求I/O表”有等待訪問者?返回有與當(dāng)前柱面號(hào)相同的訪問者?是否否否是是是是選擇能使旋轉(zhuǎn)距離最短的訪問者當(dāng)前移臂方向是向里?有比當(dāng)前柱面號(hào)大的訪問請(qǐng)求?有比當(dāng)前柱面號(hào)小的訪問請(qǐng)求?圖33 電梯調(diào)度模擬算法四、實(shí)驗(yàn)報(bào)告(1)實(shí)
7、驗(yàn)題目。(2)程序中使用的數(shù)據(jù)結(jié)構(gòu)及其說明。(3)打印一份源程序并附上注釋。(4)打印驅(qū)動(dòng)調(diào)度進(jìn)程每次選擇訪問請(qǐng)求前的“請(qǐng)求I/O”表以及每次選中的進(jìn)程名、訪問的柱面號(hào)、物理記錄號(hào)和當(dāng)前移臂方向(用up代表里移,down代表外移。打印格式為:“請(qǐng)求I/O”表進(jìn)程名 柱面號(hào) 物理記錄號(hào) 方向五、數(shù)據(jù)結(jié)構(gòu)/請(qǐng)求I/O表struct Requie_I_Ostring Pro_Name;/進(jìn)程名int Cy_Num;/柱面號(hào)int Track_Num;/磁道號(hào)int Phy_Re_Num;/物理記錄號(hào)char *Direction;/方向I_O100, a100;/定義兩個(gè)變量數(shù)組,代表等待訪問磁盤的
8、若干個(gè)進(jìn)程struct Requie_I_O Cur_Location;/當(dāng)前位置int last;/最后一個(gè)等待訪問磁盤的進(jìn)程的下標(biāo)六、源代碼#include#include#includeusing namespace std;/請(qǐng)求I/O表struct Requie_I_Ostring Pro_Name;/進(jìn)程名int Cy_Num;/柱面號(hào)int Track_Num;/磁道號(hào)int Phy_Re_Num;/物理記錄號(hào)char *Direction;/方向I_O100, a100;/定義兩個(gè)變量數(shù)組,代表等待訪問磁盤的若干個(gè)進(jìn)程struct Requie_I_O Cur_Location
9、;/當(dāng)前位置int last;/最后一個(gè)等待訪問磁盤的進(jìn)程的下標(biāo)/初始化請(qǐng)求I/O表void Init_I_O()Cur_Location.Cy_Num = 0;/當(dāng)前柱面號(hào)Cur_Location.Phy_Re_Num = 0;/當(dāng)前物理記錄號(hào)Cur_Location.Direction = up;/當(dāng)前方向/已有的若干個(gè)(5個(gè))等待訪問磁盤的進(jìn)程I_O0.Pro_Name = P0; I_O0.Cy_Num = 145; I_O0.Track_Num = 36; I_O0.Phy_Re_Num = 6;I_O1.Pro_Name = P1; I_O1.Cy_Num = 126; I_O1.
10、Track_Num = 97; I_O1.Phy_Re_Num = 1;I_O2.Pro_Name = P2; I_O2.Cy_Num = 67; I_O2.Track_Num = 23; I_O2.Phy_Re_Num = 5;I_O3.Pro_Name = P3; I_O3.Cy_Num = 99; I_O3.Track_Num = 0; I_O3.Phy_Re_Num = 4;I_O4.Pro_Name = P4; I_O4.Cy_Num = 3; I_O4.Track_Num = 63; I_O4.Phy_Re_Num = 7;I_O5.Pro_Name = P5; I_O5.Cy_N
11、um = 100; I_O5.Track_Num = 19; I_O5.Phy_Re_Num = 2;last = 5;/接收請(qǐng)求void Accept_Request()char ans;cout ans;if (ans = Y)last+;cout I_Olast.Pro_Name I_Olast.Cy_Num I_Olast.Track_Num I_Olast.Phy_Re_Num;/有請(qǐng)求所以登記請(qǐng)求I/O表/驅(qū)動(dòng)調(diào)度void Driven_Scheduling()Cur_Location.Cy_Num = 160;Cur_Location.Phy_Re_Num = 13;Cur_Lo
12、cation.Direction = up;if (last 0) cout 無等待訪問磁盤的進(jìn)程! endl;/無等待訪問所以返回else int count0 = 0;/與當(dāng)前柱面號(hào)相同的訪問進(jìn)程數(shù)for (int i = 0; i 0)/有與當(dāng)前柱面號(hào)相同的訪問者0 = 0;/未完成/當(dāng)前移臂方向?yàn)橄蚶飁lse if (string(Cur_Location.Direction) = string(up)int flag=0,m,n=0,temp;/flag=1的時(shí)候判斷是否滿足條件for (int i = 0; i Cur_Location.Cy_Num)flag = 1; n = i
13、; break;temp = I_On.Cy_Num;/將第一個(gè)滿足條件的值保存在tempif (flag = 1)/有比當(dāng)前柱面號(hào)大的訪問者if (last = 0) m = n; /當(dāng)只有一個(gè)元素時(shí),該元素就是我么要找尋的else/在大于當(dāng)前柱面號(hào)的訪問者中選擇一個(gè)最小者for (int i = n; i Cur_Location.Cy_Num)if (temp I_Oi.Cy_Num) temp = I_Oi.Cy_Num; m = i; /登記當(dāng)前位置,柱面號(hào)、物理記錄號(hào)Cur_Location.Cy_Num = I_Om.Cy_Num; Cur_Location.Phy_Re_Num
14、 = I_Om.Phy_Re_Num;/啟動(dòng)磁盤cout 請(qǐng)求I/O表n;cout 當(dāng)前移臂方向?yàn)椋?Cur_Location.Direction endl;cout 當(dāng)前柱面號(hào)為: Cur_Location.Cy_Num endl;cout 當(dāng)前物理記錄號(hào)為: Cur_Location.Phy_Re_Num endl;for (int i = m; i last + 1; i+)I_Oi = I_Oi + 1;/被選者退出last-;/數(shù)組元素減一else/沒有比當(dāng)前柱面號(hào)大的訪問請(qǐng)求Cur_Location.Direction = down;int temp = I_O0.Cy_Num,
15、p = 0;for (int j = 1; j last + 1; j+)/從小于當(dāng)前柱面號(hào)的訪問請(qǐng)求中選擇一個(gè)最大者if (temp I_Oj.Cy_Num)temp = I_Oj.Cy_Num;p = j;Cur_Location.Cy_Num = I_Op.Cy_Num; Cur_Location.Phy_Re_Num = I_Op.Phy_Re_Num;cout 請(qǐng)求I/O表n;cout 當(dāng)前移臂方向?yàn)椋?Cur_Location.Direction endl;cout 當(dāng)前柱面號(hào)為: Cur_Location.Cy_Num endl;cout 當(dāng)前物理記錄號(hào)為: Cur_Locati
16、on.Phy_Re_Num endl;for (int i = p; i last + 1; i+)I_Oi = I_Oi + 1;last-;else/當(dāng)前移臂方向?yàn)橄蛲鈏nt flag=0, m, n;for (int i = 0; i last + 1; i+)if (I_Oi.Cy_Num Cur_Location.Cy_Num)flag = 1; n = i;break;if (flag=1)/有比當(dāng)前柱面號(hào)小的訪問請(qǐng)求int temp = I_On.Cy_Num;for (int i = n ; i last + 1;i+)if (I_Oi.Cy_Num Cur_Location.
17、Cy_Num)if (temp = I_Oi.Cy_Num) temp = I_Oi.Cy_Num; m = i; Cur_Location.Cy_Num = I_Om.Cy_Num; Cur_Location.Phy_Re_Num = I_Om.Phy_Re_Num;cout 請(qǐng)求I/O表n;cout 當(dāng)前移臂方向?yàn)椋?Cur_Location.Direction endl;cout 當(dāng)前柱面號(hào)為: Cur_Location.Cy_Num endl;cout 當(dāng)前物理記錄號(hào)為: Cur_Location.Phy_Re_Num endl;for (int i = m; i last + 1;
18、i+)I_Oi = I_Oi + 1;last-;else/沒有比當(dāng)前柱面號(hào)小的訪問請(qǐng)求Cur_Location.Direction = up;int temp = I_O0.Cy_Num, p;if (last = 0) p = last; elsefor (int i = 1; i I_Oi.Cy_Num) temp = I_Oi.Cy_Num; p = i; Cur_Location.Cy_Num = I_Op.Cy_Num; Cur_Location.Phy_Re_Num = I_Op.Phy_Re_Num;cout 請(qǐng)求I/O表n;cout 當(dāng)前移臂方向?yàn)椋?Cur_Location.Direction endl;cout 當(dāng)前柱面號(hào)為: Cur_Location.Cy_Num endl;cout 當(dāng)前物理記錄號(hào)為: Cur_Location.Phy_Re_Num endl;for (int i = p; i last + 1; i+)I_Oi = I_Oi + 1;last-;void main()double number;/doubl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 混凝土路面修復(fù)施工方案評(píng)估
- 教育局“百日會(huì)戰(zhàn)”校園安全工作總結(jié)
- 環(huán)保組織公眾參與提升方案
- 地鐵建設(shè)安全文明施工方案
- 傳統(tǒng)文化景觀改造施工方案
- 2024至2030年中國胸腺嘧啶行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年中國滅煙器行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年自動(dòng)正反面貼標(biāo)簽機(jī)項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年空調(diào)電機(jī)防震橡膠件項(xiàng)目投資價(jià)值分析報(bào)告
- 2024年中國背帶工裝褲市場(chǎng)調(diào)查研究報(bào)告
- 酒店會(huì)員卡施行方案
- 福建2023年高考英語試題+答案word
- 酒店客人投訴處理技巧培訓(xùn)PPT教學(xué)講座課件
- 新概念第二冊(cè)英語lesson 44 隨堂小測(cè)
- 衛(wèi)生監(jiān)督典型案例分析(食品安全)-文本資料課件
- CAD培訓(xùn)課件(基礎(chǔ)教程)
- 人工智能1第一章緒論課件
- 腎囊腫去頂減壓術(shù)病人的醫(yī)療護(hù)理
- 一汽-夏利48pin維修手冊(cè)-ver
- 中國風(fēng)書香校園宣傳主題班會(huì)PPT
- 妊娠劇吐課件
評(píng)論
0/150
提交評(píng)論