磁盤調(diào)度算法的模擬實(shí)現(xiàn).doc_第1頁
磁盤調(diào)度算法的模擬實(shí)現(xiàn).doc_第2頁
磁盤調(diào)度算法的模擬實(shí)現(xiàn).doc_第3頁
磁盤調(diào)度算法的模擬實(shí)現(xiàn).doc_第4頁
磁盤調(diào)度算法的模擬實(shí)現(xiàn).doc_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

磁盤調(diào)度算法的模擬實(shí)現(xiàn) 學(xué) 院 專 業(yè) 學(xué) 號 學(xué) 生 姓 名 指導(dǎo)教師姓名 2014年3月19日 目錄一、 課設(shè)簡介21.1 課程設(shè)計(jì)題目21.2 課程設(shè)計(jì)目的21.3 課程設(shè)計(jì)要求2二、 設(shè)計(jì)內(nèi)容32.1功能實(shí)現(xiàn)32.2流程圖3 2.3具體內(nèi)容. 3三、 測試數(shù)據(jù).43.3 測試用例及運(yùn)行結(jié)果4四、 源代碼5五、 總結(jié)12 5.1 總結(jié).一、課設(shè)簡介1.1 課程設(shè)計(jì)題目 磁盤調(diào)度算法的模擬實(shí)現(xiàn)11.2 程序設(shè)計(jì)目的操作系統(tǒng)課程設(shè)計(jì)是計(jì)算機(jī)專業(yè)重要的教學(xué)環(huán)節(jié),它為學(xué)生提供了一個既動手又動腦,將課本上的理論知識和實(shí)際有機(jī)的結(jié)合起來,獨(dú)立分析和解決實(shí)際問題的機(jī)會。 1)進(jìn)一步鞏固和復(fù)習(xí)操作系統(tǒng)的基礎(chǔ)知識。 2)培養(yǎng)學(xué)生結(jié)構(gòu)化程序、模塊化程序設(shè)計(jì)的方法和能力。 3)提高學(xué)生調(diào)試程序的技巧和軟件設(shè)計(jì)的能力。 4)提高學(xué)生分析問題、解決問題以及綜合利用C語言進(jìn)行程序設(shè)計(jì)的能力。1.3 設(shè)計(jì)要求1)磁頭初始磁道號,序列長度,磁道號序列等數(shù)據(jù)可從鍵盤輸入,也可從文件讀入。 2)最好能實(shí)現(xiàn)磁道號序列中磁道號的動態(tài)增加。3)磁道訪問序列以鏈表的形式存儲4)給出各磁盤調(diào)度算法的調(diào)度順序和平均尋道長度二、設(shè)計(jì)內(nèi)容2.1 功能實(shí)現(xiàn)設(shè)計(jì)并實(shí)現(xiàn)一個本別利用下列磁盤調(diào)度算法進(jìn)行磁盤調(diào)度的模擬程序。1) 先來先服務(wù)算法FCFS 2) 最短尋道時(shí)間優(yōu)先算法SSTF 2.2流程圖開始選擇算法SSTFFCFS結(jié)束2.3具體內(nèi)容1)先來先服務(wù)算法FCFS 這是一種比較簡單的磁盤調(diào)度算法。它根據(jù)進(jìn)程請求訪問磁盤的先后次序進(jìn)行調(diào)度。此算法的優(yōu)點(diǎn)是公平、簡單,且每個進(jìn)程的請求都能依次得到處理,不會出現(xiàn)某一進(jìn)程的請求長期得不到滿足的情況。此算法由于未對尋道進(jìn)行優(yōu)化,在對磁盤的訪問請求比較多的情況下,此算法將降低設(shè)備服務(wù)的吞吐量,致使平均尋道時(shí)間可能較長,但各進(jìn)程得到服務(wù)的響應(yīng)時(shí)間的變化幅度較小。 2)最短尋道時(shí)間優(yōu)先算法SSTF 該算法選擇這樣的進(jìn)程,其要求訪問的磁道與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時(shí)間最短,該算法可以得到比較好的吞吐量,但卻不能保證平均尋道時(shí)間最短。其缺點(diǎn)是對用戶的服務(wù)請求的響應(yīng)機(jī)會不是均等的,因而導(dǎo)致響應(yīng)時(shí)間的變化幅度很大。在服務(wù)請求很多的情況下,對內(nèi)外邊緣磁道的請求將會無限期的被延遲,有些請求的響應(yīng)時(shí)間將不可預(yù)期。三、 測試數(shù)據(jù)3.1 先來先服務(wù)算法輸入磁道序列:55 58 39 18 90 160 150 38 184當(dāng)前磁道號:1003.2 最短尋道時(shí)間優(yōu)先算法(1)當(dāng)前磁道號大于磁道序列中的最大的磁道號時(shí) 輸入磁道序列:55 58 39 18 90 160 150 38 184當(dāng)前磁道號:100 3.3 測試結(jié)果 四、源代碼#include#include#includeusing namespace std;typedef struct nodeint data;struct node *next;Node,*Linklist;void main()void Create_Linklist(Node *); void fcfs();/聲明先來先服務(wù)函數(shù)FCFSvoid sstf();/聲明最短尋道時(shí)間優(yōu)先函數(shù)SSTF void print(Node *); /輸出鏈表函數(shù)int s; /s是選擇哪個算法printf(*磁盤調(diào)度算法*n); printf(t*1,先來先服務(wù)算法FCFSn); printf(t*2,最短尋道時(shí)間優(yōu)先算法SSTFn); printf(t*0,退出n); printf(t*請選擇:); scanf(%d,&s);while(s!=0) switch(s) case 1:printf(tt*你選擇了:先來先服務(wù)算法FCFSn);fcfs();break; case 2:printf(tt*你選擇了:最短尋道時(shí)間優(yōu)先算法SSTFn);sstf(); break; printf(tt*退出請選0,繼續(xù)請選1,2,n); scanf(%d,&s);/*/void fcfs()/先來先服務(wù)算法void Create_Linklist(Node *);void print(Node *); int Length_Linklist(Node *);Node *l,*head;/*m,*n;*/float num=0; /num為平均尋道長度 int c,f;head=(Node *)malloc(sizeof(Node);head-next=NULL;printf(*新建一個單鏈表,以0作為結(jié)束標(biāo)志:*n); Create_Linklist(head);c=Length_Linklist(head); printf(tt*從幾號磁道開始:*); scanf(%d,&f); /f為磁道號print(head); printf(t*鏈表長度為:%dn,c);l=head-next; for(int i=0;idata-f);f=l-data;l=l-next;num=num/c; printf(tt*先來先服務(wù)的尋道順序是:n);print(head);printf(tt*平均尋道長度:%fn,num);/*/void sstf()/最短尋道時(shí)間優(yōu)先算法void Create_Linklist(Node *);void print(Node *); int Length_Linklist(Node *);Node *p,*q,*r,*s,*l,*m,*head;int c,f; head=(Node *)malloc(sizeof(Node);head-next=NULL;printf(*新建一個單鏈表,以0作為結(jié)束標(biāo)志:*n); Create_Linklist(head);c=Length_Linklist(head); printf(tt*從幾號磁道開始:*); scanf(%d,&f); /f為磁道號print(head); printf(t*鏈表長度為:%dn,c);l=(Node *)malloc(sizeof(Node);l-next=NULL;m=l;q=head;p=head-next;s=head;r=head-next;float num=0;for(int i=0;idata);for(int j=0;jnext;q=q-next;if(abs(f-p-data)data);r=p;s=q;num+=abs(f-r-data);f=r-data;s-next=r-next;r-next=NULL;m-next=r;m=r;q=head; p=head-next;s=head;r=head-next;num=num/c;printf(tt*最短尋道時(shí)間優(yōu)先順序是:n);print(l);printf(tt*平均尋道長度:%fn,num);/*/void print(Node *head) /輸出鏈表Node *p;p=head-next;coutnext=NULL) printf(%dt,p-data);printf(n);elsewhile(p-next!=NULL)printf(%dt,p-data);p=p-next;printf(%dt,p-data);printf(n);/*/void Create_Linklist(Node *head)/創(chuàng)建鏈表Node *p,*q; int i; scanf(%d,&i); q=head;while(i!=0)p=(Node *)malloc(sizeof(Node);p-next=NULL;p-data=i;q-next=p;q=p;cini;/*c+;*/*/int Length_Linklist(Node *head)/計(jì)算鏈表長int l;Node *p;p= head-next;l=1;while(p-next)p=p-next;l+;return l;五、總結(jié)通過此次課程設(shè)計(jì),我對操作系統(tǒng)的基礎(chǔ)知識了解得更透徹了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論