




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗四實驗報告實驗源碼:#include "stdio.h"#include <math.h>#include <stdlib.h> int a20;int i,n,k,init,flag1 = 1;/ 先來先服務 void FCFS(int a,int n,int init)int i,s,sum,temp = 0;int b20;for(i = 0;i < n;i + )bi = ai; s = init; sum = 0; printf("nFCFS 調度結果 :n"); for(i = 0;i < n;i +
2、) / 被訪問的磁道號 printf("%3dt",bi);/ 計算移動距離 temp = abs(s - bi);printf("%3dn",temp); sum += temp; s = bi;printf(" 平均尋道長度 :%.1f%nn",sum * 1.0 / n); / 最短尋道法 void SSTF(int a,int n,int init)int i,j,s,sum = 0,p,temp = 0;int b20;for(i = 0;i < n;i + ) bi = ai;printf("nSSTF 調
3、度結果 :n");for(i = n - 1;i >= 0;i - )s = b0;p = 0;for(j = 0;j <= i;j + ) if(abs(bj - init) < abs(s - init) s = bj;p = j;bp = bi;/ 被訪問的磁道號printf("%3dt",s);/ 計算移動距離temp = abs(s - init);printf("%3dn",temp);sum += temp;init = s;printf(" 平均尋道長度 :%.1f%nn",sum * 1.
4、0 / n); / 掃描算法void SCAN(int a,int n,int init)int i,j,s,sum = 0,p,biaoji,temp = 0,k1; int b20;for(i = 0;i < n;i + )bi = ai;printf("n*SCAN掃描算法*n");printf("1. 移動臂向磁道號減少的方向2.移動臂向磁道號增加的方向printf(" *printf(" 請在下面輸入您的選擇 :");scanf("%d",&k1);switch(k1)case 1: / 磁
5、道號減小方向printf("nSCAN( 磁道號減少的方向 )調度結果 :n");for(i = n - 1;i >= 0;i - )biaoji = 0;for(j = 0;j <= i;j + )if(bj - init < 0)biaoji = 1;p = j;break;if(biaoji = 1)s = bp;for(j = 0;j <= i;j + )if(bj < init && init - bj < init - s) s = bj; p = j;bp = bi;/ 被訪問的磁道號 printf(&quo
6、t;%3dt",s);/ 計算移動距離 temp = init - s;printf("%3dn",temp);sum += temp;init = s;elses = b0;for(j = 0;j <= i;j + )if(bj - init <= s - init)s = bj; p = j;bp = bi;/ 被訪問的磁道號printf("%3dt",s);/ 計算移動距離 temp = abs(init - s);printf("%3dn",temp);sum += temp;init = s;break
7、;case 2: / 磁道號增加方向printf("nSCAN( 磁道號增加方向 )調度結果 :n"); for(i = n - 1;i >= 0;i - )biaoji = 0;for(j = 0;j <= i;j + )if(bj - init > 0)biaoji = 1;p = j; break;if(biaoji = 1)s = bp;for(j = 0;j <= i;j + )if(bj > init && bj - init< s - init)s = bj;p = j;bp = bi;/ 被訪問的磁道號pr
8、intf("%3dt",s);/ 計算移動距離temp = s - init;printf("%3dn",temp);sum += s - init;init = s;elses = b0;for(j = 0;j <= i;j + )if(init - bj <= init - s)s = bj;p = j;bp = bi;/ 被訪問的磁道號printf("%3dt",s);/ 計算移動距離temp = abs(init - s);printf("%3dn",temp); sum += temp; in
9、it = s;break;default:printf("n 請輸入 1 - 2 之間的整數 !n");break;printf(" 平均尋道長度 :%.1f%nn",sum*1.0/n); / 循環算法void CSCAN(int a,int n,int init)int temp;int k = 1;int l,r,d;int b20;int i,j,sum = 0;int init_temp = init;for(i = 0;i < n;i + ) bi = ai;for(i = 0;i < n;i + )for(j = i + 1;j
10、 < n;j + ) if(bi > bj)/ 對磁道號進行從小到大排列 temp = bi;bi = bj; bj = temp; if(bn - 1 <= init)/ 判斷整個數組里的數是否都小于當前磁道號 printf("nCSCAN 調度結果 :n");for(i = 0;i < n;i + )/ 被訪問的磁道號printf("%3dt",bi); / 計算移動距離printf("%3dn",abs(init_temp - bi); init_temp = bi;sum = init - b0 + b
11、n - 1;/ 計算移動距離else if(b0 >= init)/ 判斷整個數組里的數是否都大于當前磁道號printf("nCSCAN 調度結果 :n");for(i = 0;i < n;i + )/ 被訪問的磁道號 printf("%3dt",bi);/ 計算移動距離 printf("%3dn",abs(init_temp - bi); init_temp = bi;sum = bn - 1 - init;/ 計算移動距離elsewhile(bk < init)/ 逐一比較以確定 K 值 k + ;l = k -
12、 1;r = k;printf("n*循環算法);n");printf("1. 移動臂向磁道號減少的方向2.移動臂向磁道號增加的方向*n");printf(printf(" 請在下面輸入您的選擇 :");scanf("%d",&d); printf("nCSCAN 調度結果 :n");switch(d)case 1:/ 磁道號減小方向for(j = l;j >= 0;j - ) / 被訪問的磁道號printf("%3dt",bj); / 計算移動距離printf
13、("%3dn",abs(init_temp - bj); init_temp = bj;for(j = n - 1;j >= r;j - )/ 被訪問的磁道號printf("%3dt",bj);/ 計算移動距離printf("%3dn",abs(init_temp - bj); init_temp = bj;sum = 2*(bn - 1 - b0) - br + init;/ 計算移動距離 break;case 2:/ 磁道號增加方向for(j = r;j < n;j + )/ 被訪問的磁道號printf("%
14、3dt",bj);/ 計算移動距離printf("%3dn",abs(init_temp - bj); init_temp = bj;for(j = 0;j < r;j + )/ 被訪問的磁道號printf("%3dt",bj);/ 計算移動距離printf("%3dn",abs(init_temp - bj); init_temp = bj;sum = 2 * (bn - 1 - b0) + br - 1 - init;/ 計算移動距離 break;default:printf("n 請輸入 1 - 2 之
15、間的整數 !n");break;printf("n 平均尋道長度: %.1f%nn",sum*1.0/n);void DataInput()printf(" 請輸入需要訪問的磁道總數: "); scanf("%d",&n);printf("n");for(i = 0;i < n;i + )printf(" 需要訪問的磁道 %d:",i + 1); scanf("%d",&ai);printf("n");printf(&quo
16、t; 請輸入指針所在磁道 :"); scanf("%d",&init);printf("n");system("cls");/ 顯示需要訪問的磁道printf(" 需要訪問的磁道序列為: ");for(i = 0;i < n;i + )printf("%d ",ai);printf("n");void main()DataInput();int menu=-1;while(true)n");*n");(SSTF)n");n
17、");n");n");*n");printf("n*n"); printf(" 磁盤調度算法 printf("*n"); printf("*printf("1. 先來先服務 (FCFS) 2.最短尋道時間優先 printf("3. 掃描算法 (SCAN) 4.循環算法 (CSCAN) printf("5. 退出 (EXIT)printf("0. 返回上一層 (RETURN) printf("* printf("*n"); pr
18、intf(" 請在下面輸入您的選擇 :"); scanf("%d",&menu);switch(menu)case 1:FCFS(a,n,init); break;case 2:SSTF(a,n,init); break;case 3:SCAN(a,n,init); break;case 4:CSCAN(a,n,init); break;case 5:exit(0); break;case 0: system("cls"); DataInput(); break;default:break;if(menu != 1 &
19、& menu != 2 && menu != 3 && menu != 4 && menu !=5 && menu !=0) system("cls");printf("n 請輸入 0 - 5 之間的整數! n"); continue;實驗結果截圖:程序運行:輸入相關數據:進入選擇算法界面:需要訪冋的磯道序列為磁盤調度算法<FCF£><SCAN)<EXIT>|XiM 鋼擁HtHtFXXKJOCiMiM眞遅泛疑負耳XXKXiMiMiM豪抵怔<:«耳耳<3<:算酬荼底怔:HEXX疑劌離峙KNNKX捕列猶賓耳耳)<)<址:摘轉1<*耳KX;KN;MIC恆耳 請在下面輸入您的選擇;口最短尋道時間優先算法:掃描算法: £:件業 操作系統實驗f i 口 i 5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工作室設計與工作環境優化
- 工作中的時間管理與自律
- 工業設計與產品創新實踐
- 工業設計創新與技術趨勢
- 工業風餐廳裝修設計思路
- 工作場所中的安全衛生規范
- 工廠企業火災防范與應急處理
- 工程機械結構強度與穩定性研究
- 工程質量管理中的監理職責與實施策略
- 工程機械的故障診斷與維修
- 湛江市2024-2025學年初三預測密卷:化學試題試卷解析含解析
- DB35T 2191-2024 縣級國土空間總體規劃編審規程
- AQ 1083-2011 煤礦建設安全規范 (正式版)
- 2024年中華人民共和國企業所得稅年度納稅申報表(帶公式)20240301更新
- 江蘇省蘇州市常熟市2023-2024學年五年級下學期數學期末檢測
- 河南省洛陽市理工學院附中2025屆數學高一下期末考試試題含解析
- 珍惜時間三分鐘演講稿小學生(23篇)
- 交響音樂賞析智慧樹知到期末考試答案2024年
- 2024中考復習必背初中英語單詞詞匯表(蘇教譯林版)
- 大壩模型制作方案
- 2024年北京門頭溝區社區工作者招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論