操作系统之磁盘调度——SCAN实例讲解
操作系統(tǒng)之進(jìn)程調(diào)度——優(yōu)先權(quán)法和輪轉(zhuǎn)法(附上樣例講解)
操作系統(tǒng)之銀行家算法—詳解流程及案例數(shù)據(jù)
操作系統(tǒng)之多線程編程—讀者優(yōu)先/寫(xiě)者優(yōu)先詳解
操作系統(tǒng)之存儲(chǔ)管理——FIFO算法和LRU算法
操作系統(tǒng)之磁盤(pán)調(diào)度——SCAN實(shí)例講解
要求
一、實(shí)驗(yàn)?zāi)康?#xff1a;
磁盤(pán)是高速、大容量、旋轉(zhuǎn)型、可直接存取的存儲(chǔ)設(shè)備。它作為計(jì)算機(jī)系統(tǒng)的輔助存儲(chǔ)器,擔(dān)負(fù)著繁重的輸入輸出工作,在現(xiàn)代計(jì)算機(jī)系統(tǒng)中往往同時(shí)會(huì)有若干個(gè)要求訪問(wèn)磁盤(pán)的輸入輸出要求。系統(tǒng)可采用一種策略,盡可能按最佳次序執(zhí)行訪問(wèn)磁盤(pán)的請(qǐng)求。由于磁盤(pán)訪問(wèn)時(shí)間主要受尋道時(shí)間T的影響,為此需要采用合適的尋道算法,以降低尋道時(shí)間。本實(shí)驗(yàn)要求學(xué)生模擬設(shè)計(jì)一個(gè)磁盤(pán)調(diào)度程序,觀察調(diào)度程序的動(dòng)態(tài)運(yùn)行過(guò)程。通過(guò)實(shí)驗(yàn)讓學(xué)生理解和掌握磁盤(pán)調(diào)度的職能。
二、實(shí)驗(yàn)內(nèi)容:
模擬電梯調(diào)度算法,對(duì)磁盤(pán)進(jìn)行移臂操作
三、提示及要求:
1、假設(shè)磁盤(pán)只有一個(gè)盤(pán)面,并且磁盤(pán)是可移動(dòng)頭磁盤(pán)。
2、磁盤(pán)是可供多個(gè)進(jìn)程共享的存儲(chǔ)設(shè)備,但一個(gè)磁盤(pán)每個(gè)時(shí)刻只能為一個(gè)進(jìn)程服務(wù)。當(dāng)有進(jìn)程在訪問(wèn)某個(gè)磁盤(pán)時(shí),其它想訪問(wèn)該磁盤(pán)的進(jìn)程必須等待,直到磁盤(pán)一次工作結(jié)束。當(dāng)有多個(gè)進(jìn)程提出輸入輸出請(qǐng)求而處于等待狀態(tài)時(shí),可用電梯調(diào)度算法從若干個(gè)等待訪問(wèn)者中選擇一個(gè)進(jìn)程,讓它訪問(wèn)磁盤(pán)。為此設(shè)置“驅(qū)動(dòng)調(diào)度”進(jìn)程。
3、由于磁盤(pán)與處理器是并行工作的,所以當(dāng)磁盤(pán)在為一個(gè)進(jìn)程服務(wù)時(shí),占有處理器的其它進(jìn)程可以提出使用磁盤(pán)(這里我們只要求訪問(wèn)磁道),即動(dòng)態(tài)申請(qǐng)?jiān)L問(wèn)磁道,為此設(shè)置“接受請(qǐng)求”進(jìn)程。
4、為了模擬以上兩個(gè)進(jìn)程的執(zhí)行,可以考慮使用隨機(jī)數(shù)來(lái)確定二者的允許順序,程序結(jié)構(gòu)圖參考附圖:
5、“接受請(qǐng)求”進(jìn)程建立一張“進(jìn)程請(qǐng)求I/O”表,指出等待訪問(wèn)磁盤(pán)的進(jìn)程要求訪問(wèn)的磁道,表的格式如下:
| 進(jìn)程名 | 要訪問(wèn)的磁道 |
|進(jìn)程id| 磁道號(hào):|
6、 “磁盤(pán)調(diào)度”的功能是查“請(qǐng)求I/O”表,當(dāng)有等待訪問(wèn)的進(jìn)程時(shí),按電梯調(diào)度算法(SCAN算法)從中選擇一個(gè)等待訪問(wèn)的進(jìn)程,按其指定的要求訪問(wèn)磁道。SCAN算法參考課本第九章。算法模擬框圖略。
7、附圖中的“初始化”工作包括:初始化“請(qǐng)求I/O”表,設(shè)置置當(dāng)前移臂方向;當(dāng)前磁道號(hào)。并且假設(shè)程序運(yùn)行前“請(qǐng)求I/O”表中已有若干進(jìn)程(4~8個(gè))申請(qǐng)?jiān)L問(wèn)相應(yīng)磁道。
四、實(shí)驗(yàn)報(bào)告:
1、實(shí)驗(yàn)題目。
2、程序中用到的數(shù)據(jù)結(jié)構(gòu)及其說(shuō)明。
3、打印源程序并附注釋。
4、實(shí)驗(yàn)結(jié)果內(nèi)容如下:打印“請(qǐng)求I/O”表,當(dāng)前磁道號(hào),移臂方向,被選中的進(jìn)程名和其要求訪問(wèn)的磁道,看是否體現(xiàn)了電梯調(diào)度(SCAN)算法。體會(huì)與問(wèn)題。
五、 附圖:
理解
上面就是實(shí)驗(yàn)要求。
本實(shí)驗(yàn)的核心就是對(duì)SCAN算法的理解,SCAN被稱(chēng)為梯度算法。因?yàn)樗粌H兼顧距離的遠(yuǎn)近還兼顧方向性。
Scan算法思想大致為:
- 當(dāng)設(shè)備無(wú)訪問(wèn)請(qǐng)求時(shí),磁頭不動(dòng);
- 當(dāng)有訪問(wèn)請(qǐng)求時(shí),磁頭按一個(gè)方向移動(dòng),在移 [2] 動(dòng)過(guò)程中對(duì)遇到的訪問(wèn)請(qǐng)求進(jìn)行服務(wù),然后判斷該方向上是否還有訪問(wèn)請(qǐng)求,如果有則繼續(xù)掃描;否則改變移動(dòng)方向,并為經(jīng)過(guò)的訪問(wèn)請(qǐng)求服務(wù),如此反復(fù)。
- 如下圖所示:
代碼
這大致就是流程,當(dāng)然,你可以動(dòng)態(tài)的增加io請(qǐng)求(接受請(qǐng)求)。
附上代碼:
輸出案例
測(cè)試數(shù)據(jù):
若有錯(cuò)誤的地方,還請(qǐng)大神指正。
如果對(duì)后端、爬蟲(chóng)、數(shù)據(jù)結(jié)構(gòu)算法等感性趣歡迎關(guān)注我的個(gè)人公眾號(hào)交流:bigsai
總結(jié)
以上是生活随笔為你收集整理的操作系统之磁盘调度——SCAN实例讲解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 操作系统之存储管理——FIFO算法和LR
- 下一篇: springboot入门demo详解(解