操作系統(tǒng)實驗頁面置換算法先來先服務最短尋道優(yōu)先_第1頁
操作系統(tǒng)實驗頁面置換算法先來先服務最短尋道優(yōu)先_第2頁
操作系統(tǒng)實驗頁面置換算法先來先服務最短尋道優(yōu)先_第3頁
操作系統(tǒng)實驗頁面置換算法先來先服務最短尋道優(yōu)先_第4頁
操作系統(tǒng)實驗頁面置換算法先來先服務最短尋道優(yōu)先_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、-作者xxxx-日期xxxx操作系統(tǒng)實驗頁面置換算法先來先服務最短尋道優(yōu)先【精品文檔】學號P71514032 專業(yè) 計算機科學與技術 姓名 實驗日期2017/12/7 教師簽字 成績 實驗報告【實驗名稱】 磁盤調度先來先服務策略 最短尋道策略 【實驗目的】磁盤調度中尋道時間直接影響到數(shù)據(jù)訪問的快慢,通過本次實驗學習如何處理好磁盤尋道時間?!緦嶒炘怼?. 先來先服務算法先來先服務算法根據(jù)進程請求訪問磁盤的先后次序進行調度。2. 最短尋道時間優(yōu)先算法最短尋道時間優(yōu)先算法要求訪問的磁道與當前磁頭所在的磁道距離最近,以使每次的尋道時間最短?!緮?shù)據(jù)結構和符號說明】ypedef struct Track

2、 int id;/磁道序列 int state=0;/是否訪問過,未被訪問置狀態(tài)為0 Track;Track trackN;/最大磁道數(shù)為100Track track1N;int stepN;/移動距離int num,i,current_track,num1;/需要訪問的次數(shù)函數(shù)說明:void init()/初始化程序void input()/輸入函數(shù)void FCFS()/先來先服務int abs(int a,int b)/相減的絕對值int Serch_min_pos()/尋找到當前磁道最短的需求磁道void SSTF()/最短尋道優(yōu)先void output(Track a)/輸出函數(shù)vo

3、id output_average_track()/輸出平均尋道時間int show()/顯示用戶界面先來先服務(FCFS)最短尋道時間優(yōu)先(SSTF)代碼:#include#define N 100typedef struct Track int id;/磁道序列 int state=0;/是否訪問過,未被訪問置狀態(tài)為0 Track;Track trackN;/最大磁道數(shù)為100Track track1N;int stepN;/移動距離int num,i,current_track,num1;void init()/初始化程序 num=0; for (i=0; inum; i+) track

4、i.state=-1;/id置為1 track1i.state=-1; stepi=-1;/移動距離為-1 void input()/輸入函數(shù) printf(輸入當前磁道n); scanf(%d,¤t_track); num1=current_track; printf(輸入要訪問的磁道數(shù)目n); scanf(%d,&num); printf(輸入要訪問磁道序列n); for(i=0; inum; i+) scanf(%d,&tracki.id);void FCFS()/先來先服務 for(i=0; inum; i+) if(current_track-tracki.id)0?a-

5、b:b-a;int Serch_min_pos()/尋找到當前磁道最短的需求磁道 int min=45536;/最小距離標志 int pos; for(int i=0; iabs(tracki.id,current_track)/尋找最小距離 min=abs(tracki.id,current_track); pos=i; trackpos.state=1; return pos;/返回在數(shù)組中的位置void SSTF()/最短尋道優(yōu)先 for(i=0; inum; i+)/計數(shù)器 track1i=trackSerch_min_pos();/更新到要輸出的數(shù)組中 stepi=abs(track

6、1i.id,current_track);/移動距離 current_track= track1i.id;/標志 void output(Track a)/輸出函數(shù) printf(nn n,num1); printf(=n);/排班 printf(被訪問的下一個磁道tt移動距離(磁道數(shù))n); for(i=0; inum; i+) printf(t%4dtt|t%4dn,ai.id,stepi); printf(=n);void output_average_track()/輸出平均尋道時間 double sum=0;/和 for(i=0; inum; i+) sum+=stepi; prin

7、tf( 平均尋道長度%3.2fnnn,sum/num);/輸出int show()/顯示用戶界面 int choose;/選擇 printf(n*早期的磁盤調度算法*n); printf(tt1、先來先服務(FCFS)n); printf(tt2、最短尋道時間優(yōu)先(SSTF)n); printf(tt3、退出(EXIT)n); scanf(%d,&choose); return choose;int main() do init(); switch(show()/返回值是選擇 case 1:/FCFS input(); FCFS(); output(track); output_average

8、_track(); break; case 2:/最短尋道 input(); SSTF(); output(track1); output_average_track(); break; case 3:/退出 return 0; default: break; while(1); return 0;截圖:主界面開始,輸入選擇先來先服務還是最短尋道優(yōu)先,輸入當前磁道,輸入要訪問的磁道,輸入要訪問的磁道序列。先來先服務(FCFS)最短尋道優(yōu)先(SSTF)【小結與討論】1、先來先服務算法是一種簡單的磁盤調度算法。它根據(jù)進程請求訪問磁盤的先后次序進行調度。此算法的優(yōu)點是較為公平與簡單,并且每個進程的請

9、求都能依次得到處理,不會出現(xiàn)某一進程的請求長期得不到滿足的情況。但此算法由于未對尋道進行優(yōu)化,致使平均尋道時間可能較長;而最短尋道時間優(yōu)先算法要求每次訪問的磁道與當前磁頭所在的磁道距離最近,以使每次的尋道時間最短,但這種調度算法卻不能保證平均尋道時間最短,因為只能做到局部最優(yōu)。2、本實驗用數(shù)組就可以很方便簡潔地解決問題,唯一需要注意的就是在算法中,每一次尋道需要對之前的磁道號進行暫存設置一個current_track(當前磁道),如果已查詢到,需將狀態(tài)置為1,這樣才方便尋找和計算尋道距離。3、FCFS算法根據(jù)磁道號需要被訪問的順序依次訪問磁道,所以磁道被訪問順序在磁道需要順序確定時,即被確定,然后用依次減法即可算出移動距離,相對來說實驗的復雜度較低,易于實現(xiàn)。4、SSTF算法則相較于FCFS算法復雜得多。在確定被訪

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論