版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)操作系統(tǒng)原理及應(yīng)用課程設(shè)計(jì)報(bào)告磁盤調(diào)度算法 學(xué)院(系): 計(jì)算機(jī)科學(xué)與工程學(xué)院 班 級(jí): 37-5 學(xué)號(hào) 學(xué)生姓名: 時(shí)間: 從 2013 年 12 月16日 到 2013 年12月20日1、課程設(shè)計(jì)的目的本課程設(shè)計(jì)是學(xué)生學(xué)習(xí)完操作系統(tǒng)原理及應(yīng)用課程后,進(jìn)行的一次全面的綜合訓(xùn)練,通過(guò)課程設(shè)計(jì),讓學(xué)生更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,加深對(duì)操作系統(tǒng)基礎(chǔ)理論和重要算法的理解,加強(qiáng)學(xué)生的動(dòng)手能力。2、課程設(shè)計(jì)的內(nèi)容及要求編程序?qū)崿F(xiàn)下述磁盤調(diào)度算法,并求出每種算法的平均尋道長(zhǎng)
2、度:要求設(shè)計(jì)主界面以靈活選擇某算法,且以下算法都要實(shí)現(xiàn)1、先來(lái)先服務(wù)算法(FCFS)2、最短尋道時(shí)間優(yōu)先算法(SSTF)3、掃描算法(SCAN)4、循環(huán)掃描算法(CSCAN)3、實(shí)現(xiàn)原理磁盤是可供多個(gè)進(jìn)程共享的設(shè)備,當(dāng)有多個(gè)進(jìn)程都要求訪問(wèn)磁盤時(shí),應(yīng)采用一種最佳調(diào)度算法,以使各進(jìn)程對(duì)磁盤的平均訪問(wèn)時(shí)間最小。由于在訪問(wèn)磁盤的時(shí)間中,主要是尋道時(shí)間,因此,磁盤調(diào)度的目標(biāo)是使磁盤的平均尋道時(shí)間最少。目前常用的磁盤調(diào)度算法有先來(lái)先服務(wù)、最短尋道時(shí)間優(yōu)先、掃描和循環(huán)掃描等算法。其中,平均尋道長(zhǎng)度(L)為所有磁道所需移動(dòng)距離之和除以總的所需訪問(wèn)的磁道數(shù)(N),即:L=(M1+M2+Mi+MN)/N其中Mi為
3、磁頭從上一各磁道到這個(gè)磁道所需移動(dòng)的距離。4、算法1.先來(lái)先服務(wù)算法(FCFS)這是一種最簡(jiǎn)單的磁盤調(diào)度算法。它根據(jù)進(jìn)程請(qǐng)求訪問(wèn)磁盤的先后次序進(jìn)行調(diào)度。此算法只考慮訪問(wèn)者提出訪問(wèn)請(qǐng)求的先后次序,按照先后次序依次訪問(wèn)磁道號(hào)。移動(dòng)距離等于上一個(gè)被訪問(wèn)的磁道號(hào)減去當(dāng)前訪問(wèn)的磁道號(hào)的絕對(duì)值,平均尋道長(zhǎng)度等于所有移動(dòng)距離之和除以磁道被訪問(wèn)的次數(shù)。2.短尋道時(shí)間優(yōu)先算法(SSTF)該算法選擇這樣的進(jìn)程,其要求訪問(wèn)的磁道與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時(shí)間最短,而不管訪問(wèn)者到來(lái)的先后次序。實(shí)現(xiàn)時(shí)可以先對(duì)磁道號(hào)進(jìn)行從小到大排序保存在數(shù)組里,然后與當(dāng)前磁道號(hào)比較,選擇離自己最近的訪問(wèn),每比較一次,當(dāng)
4、前磁道號(hào)也跟著變化,移動(dòng)距離等于上一個(gè)被訪問(wèn)的磁道號(hào)減去當(dāng)前訪問(wèn)的磁道號(hào)的絕對(duì)值。但當(dāng)數(shù)組里的最大值小于當(dāng)前磁道號(hào)時(shí),就逆序訪問(wèn),此時(shí)移動(dòng)距離的和就等于當(dāng)前磁道號(hào)減去數(shù)組中最小數(shù);當(dāng)數(shù)組中最小的數(shù)大于當(dāng)前磁道號(hào)時(shí),就正序訪問(wèn),此時(shí)移動(dòng)距離的和等于數(shù)組中最大值減當(dāng)前磁道號(hào),平均尋道長(zhǎng)度等于所有移動(dòng)距離之和除以磁道被訪問(wèn)的次數(shù)。3.掃描算法(SCAN)SCAN 算法又稱電梯調(diào)度算法。該算法先考慮磁頭的移動(dòng)方向,再考慮距離近的訪問(wèn)。所以可以對(duì)即將訪問(wèn)的磁道號(hào)進(jìn)行從小到大排序保存在數(shù)組里,然后與當(dāng)前磁道號(hào)比較,當(dāng)磁頭移動(dòng)方向向磁道號(hào)增加的方向移動(dòng)時(shí),就先依次訪問(wèn)比當(dāng)前磁道號(hào)大的數(shù),再逆向訪問(wèn)比自己小的
5、數(shù);當(dāng)磁頭移動(dòng)方向是向磁道號(hào)減小的方向時(shí)就先訪問(wèn)比自己的小的,然后逆向訪問(wèn)比自己大的,移動(dòng)距離等于上一個(gè)被訪問(wèn)的磁道號(hào)減去當(dāng)前訪問(wèn)的磁道號(hào)的絕對(duì)值。但當(dāng)數(shù)組里的最大值小于當(dāng)前磁道號(hào)時(shí),兩種方向都是逆序?qū)Υ诺捞?hào)訪問(wèn),此時(shí)移動(dòng)距離的和就等于當(dāng)前磁道號(hào)減去數(shù)組中最小數(shù);當(dāng)數(shù)組中最小的數(shù)大于當(dāng)前磁道號(hào)時(shí),兩種方向都是正序?qū)Υ诺捞?hào)訪問(wèn),此時(shí)移動(dòng)距離的和等于數(shù)組中最大值減當(dāng)前磁道號(hào),平均尋道長(zhǎng)度等于所有移動(dòng)距離之和除以磁道被訪問(wèn)的次數(shù)。4.循環(huán)掃描算法(CSCAN)CSCAN算法是在SCAN算法的基礎(chǔ)上規(guī)定磁頭單向移動(dòng),即掃描時(shí)要么向磁道號(hào)增加的方向的訪問(wèn),要么向磁道號(hào)減小的方向訪問(wèn)。所以可以對(duì)即將訪問(wèn)的
6、磁道號(hào)進(jìn)行從小到大排序保存在數(shù)組里,然后與當(dāng)前磁道號(hào)比較,當(dāng)磁頭移動(dòng)方向向磁道號(hào)增加的方向移動(dòng)時(shí),就先依次訪問(wèn)比當(dāng)前磁道號(hào)大的數(shù),再返回磁道最里面朝增加的方向訪問(wèn)比自己小的數(shù);當(dāng)磁頭移動(dòng)方向是向磁道號(hào)減小的方向時(shí)就先訪問(wèn)比自己的小的,然后返回到磁道最外層訪問(wèn)比自己大的,移動(dòng)距離等于上一個(gè)被訪問(wèn)的磁道號(hào)減去當(dāng)前訪問(wèn)的磁道號(hào)的絕對(duì)值。但當(dāng)向磁道號(hào)增加的方向時(shí),數(shù)組里的最大值小于當(dāng)前磁道號(hào)或數(shù)組中最小的數(shù)大于當(dāng)前磁道號(hào)時(shí),都是正序訪問(wèn);而當(dāng)向磁道號(hào)減小的方向時(shí),數(shù)組里的最大值小于當(dāng)前磁道號(hào)或數(shù)組中最小的數(shù)大于當(dāng)前磁道號(hào)時(shí),都是逆序訪問(wèn);此時(shí)移動(dòng)距離的和等于數(shù)組中最大值減當(dāng)前磁道號(hào),平均尋道長(zhǎng)度等于所
7、有移動(dòng)距離之和除以磁道被訪問(wèn)的次數(shù)。5、程序中使用的數(shù)據(jù)結(jié)構(gòu)及使用的變量說(shuō)明和作用int cidao = new int1000;/將被訪問(wèn)的磁道號(hào)存入cidao數(shù)組int sum = 0;/求移動(dòng)距離之和double avg = 0;/求平均尋道時(shí)間string str = txtnum.Text.Split(,);/從txtnum里面獲取訪問(wèn)的磁道號(hào)int now = Convert.ToInt32(txtnow.Text);/獲取當(dāng)前的磁道號(hào)for (int i = 0; i str.Length; i+)/將獲取的磁道號(hào)存入磁道號(hào)數(shù)組cidaoi = Convert.ToInt32(s
8、tri);private void btnFCFS_Click(object sender, EventArgs e)先來(lái)先服務(wù)FCFS算法private void btnSSTF_Click(object sender, EventArgs e)最短尋道時(shí)間優(yōu)先SSTFprivate void btnSCANhigh_Click(object sender, EventArgs e)從里向外掃描private void btnSCANlow_Click(object sender, EventArgs e)從外向里掃描private void btnCSCANhigh_Click(objec
9、t sender, EventArgs e)從里向外循環(huán)掃描private void btnCSCANlow_Click(object sender, EventArgs e)從外向里循環(huán)掃描private void btnexit_Click(object sender, EventArgs e)退出窗體private void txtnum_KeyDown(object sender, KeyEventArgs e)快捷鍵Tab選擇輸入框關(guān)鍵算法實(shí)現(xiàn)流程圖先來(lái)先服務(wù)FCFS算法:最短尋道時(shí)間算法:掃描算法:向磁道號(hào)增加的方向:從磁道號(hào)減小的方向:循環(huán)掃描算法: 從磁道號(hào)增加的方向:從磁道號(hào)
10、減小的方向:實(shí)現(xiàn)代碼 / / 先來(lái)先服務(wù)FCFS / / / private void btnFCFS_Click(object sender, EventArgs e) txtresult.Clear();/清除顯示 int cidao = new int1000;/被訪問(wèn)的磁道號(hào)數(shù)組 int sum = 0;/移動(dòng)距離之和 double avg = 0;/平均尋道時(shí)間 string str = txtnum.Text.Split(,);/從txtnum里面獲取訪問(wèn)的磁道號(hào) int now = Convert.ToInt32(txtnow.Text);/當(dāng)前的磁道號(hào) for (int i =
11、 0; i str.Length; i+) /將獲取的磁道號(hào)存入磁道號(hào)數(shù)組 cidaoi = Convert.ToInt32(stri); sum += Math.Abs(now - cidao0);/當(dāng)前的磁道號(hào)減去磁道號(hào)數(shù)組中的第一個(gè)值取絕對(duì)值 for (int i = 0; i str.Length; i+) /輸出FCFS磁盤調(diào)度結(jié)果 txtresult.Text = txtresult.Text + cidaoi + ,; for (int i = 0, j = 1; j str.Length; i+, j+) /累計(jì)總的移動(dòng)距離 sum += Math.Abs(cidaoj - c
12、idaoi); avg = (double)sum / str.Length;/平均尋道長(zhǎng)度 lblsum.Text = 總移動(dòng)距離: + sum.ToString();/在Label中顯示總移動(dòng)距離 lblavg.Text = 平均尋道長(zhǎng)度: + avg.ToString(0.00);/在Label中顯示平均尋道時(shí)間 / / 最短尋道時(shí)間優(yōu)先SSTF / / / private void btnSSTF_Click(object sender, EventArgs e) txtresult.Clear();/清除顯示 int cidao = new int1000;/被訪問(wèn)的磁道號(hào)數(shù)組 in
13、t sum = 0;/移動(dòng)距離之和 double avg = 0;/平均尋道時(shí)間 int temp;/中間變量 int k = 1; int m, n; string str = txtnum.Text.Split(,);/從txtnum里面獲取訪問(wèn)的磁道號(hào) int now = Convert.ToInt32(txtnow.Text);/當(dāng)前的磁道號(hào) for (int i = 0; i str.Length; i+) /將獲取的磁道號(hào)存入磁道號(hào)數(shù)組 cidaoi = Convert.ToInt32(stri); /對(duì)磁道號(hào)進(jìn)行從小到大排列 for (int i = 0; i str.Lengt
14、h; i+) for (int j = i + 1; j cidaoj) temp = cidaoi; cidaoi = cidaoj; cidaoj = temp; /數(shù)組的最后一個(gè)小于當(dāng)前磁道號(hào),則數(shù)組逆序輸出,此時(shí)的移動(dòng)距離之和等于當(dāng)前磁道號(hào)減去最小的磁道號(hào) if (cidaostr.Length - 1 = 0; i-) txtresult.Text = txtresult.Text + cidaoi + ,; sum = now - cidao0;/移動(dòng)距離之和 /數(shù)組的第一個(gè)數(shù)大于當(dāng)前磁道號(hào),正序輸出,此時(shí)的移動(dòng)距離之和等于最大的磁道號(hào)減去當(dāng)前磁道號(hào) else if (cidao0
15、 = now) for (int i = 0; i str.Length; i+) txtresult.Text = txtresult.Text + cidaoi + ,; sum = cidaostr.Length - 1 - now;/移動(dòng)距離之和 /當(dāng)前磁道號(hào)的大小介于數(shù)組的最大值與最小值之間 else /k的初始值為,從數(shù)組的第二個(gè)數(shù)開始逐一與當(dāng)前磁道號(hào)比較 while (cidaok = 0) & (n str.Length) /當(dāng)前位置的前一個(gè)磁道號(hào)離當(dāng)前磁道號(hào)近 if (now - cidaom) = (cidaon - now) txtresult.Text = txtres
16、ult.Text + cidaom + ,;/輸出 sum += now - cidaom;/移動(dòng)距離之和 now = cidaom;/當(dāng)前磁道號(hào)改變 m = m - 1;/與數(shù)組的前半部分比較 /當(dāng)前位置的后一個(gè)磁道號(hào)離當(dāng)前磁道號(hào)近 else txtresult.Text = txtresult.Text + cidaon + ,; ;/輸出 sum += cidaon - now;/移動(dòng)距離之和 now = cidaon;/當(dāng)前磁道號(hào)改變 n = n + 1;/與數(shù)組的后半部分比較 /數(shù)組的第一個(gè)數(shù)比當(dāng)前磁道號(hào)大 if (m = -1) for (int j = n; j = 0; j-)
17、/輸出 txtresult.Text = txtresult.Text + cidaoj + ,; sum += cidaostr.Length - 1 - cidao0;/移動(dòng)距離之和 avg = (double)sum / str.Length;/平均尋道長(zhǎng)度 lblsum.Text = 總移動(dòng)距離: + sum.ToString();/在Label中顯示總移動(dòng)距離 lblavg.Text = 平均尋道長(zhǎng)度: + avg.ToString(0.00);/在Label中顯示平均尋道時(shí)間 / / 磁道號(hào)增加的方向掃描 / / / private void btnSCANhigh_Click(o
18、bject sender, EventArgs e) txtresult.Clear();/清除顯示 int cidao = new int1000;/被訪問(wèn)的磁道號(hào)數(shù)組 int sum = 0;/移動(dòng)距離之和 double avg = 0;/平均尋道時(shí)間 int temp;/中間變量 int k = 1; int m, n; string str = txtnum.Text.Split(,);/從txtnum里面獲取訪問(wèn)的磁道號(hào) int now = Convert.ToInt32(txtnow.Text);/當(dāng)前的磁道號(hào) for (int i = 0; i str.Length; i+) /
19、將獲取的磁道號(hào)存入磁道號(hào)數(shù)組 cidaoi = Convert.ToInt32(stri); /對(duì)磁道號(hào)進(jìn)行從小到大排列 for (int i = 0; i str.Length; i+) for (int j = i + 1; j cidaoj) temp = cidaoi; cidaoi = cidaoj; cidaoj = temp; /數(shù)組的最后一個(gè)小于當(dāng)前磁道號(hào),則數(shù)組逆序輸出,此時(shí)的移動(dòng)距離之和等于當(dāng)前磁道號(hào)減去最小的磁道號(hào) if (cidaostr.Length - 1 = 0; i-) txtresult.Text = txtresult.Text + cidaoi + ,;
20、/移動(dòng)距離之和 sum = now - cidao0; /數(shù)組的第一個(gè)數(shù)大于當(dāng)前磁道號(hào),正序輸出,此時(shí)的移動(dòng)距離之和等于最大的磁道號(hào)減去當(dāng)前磁道號(hào) else if (cidao0 = now) for (int i = 0; i str.Length; i+) txtresult.Text = txtresult.Text + cidaoi + ,; sum = cidaostr.Length - 1 - now;/移動(dòng)距離之和 /當(dāng)前磁道號(hào)的大小介于數(shù)組的最大值與最小值之間 else /k的初始值為,從數(shù)組的第二個(gè)數(shù)開始逐一與當(dāng)前磁道號(hào)比較 while (cidaok now) k+; /k
21、+1比當(dāng)前磁道號(hào)大的時(shí)候 m = k - 1; n = k; for (int j = n; j = 0; j-) txtresult.Text = txtresult.Text + cidaoj + ,; /sum = cidaostr.Length - 1 - cidao0; sum =2 * cidaostr.Length - 1 - now - cidao0; avg = (double)sum / str.Length;/平均尋道長(zhǎng)度 lblsum.Text = 總移動(dòng)距離: + sum.ToString();/在Label中顯示總移動(dòng)距離 lblavg.Text = 平均尋道長(zhǎng)度:
22、 + avg.ToString(0.00);/在Label中顯示平均尋道時(shí)間 / / 磁道號(hào)減小的方向掃描 / / / private void btnSCANlow_Click(object sender, EventArgs e) txtresult.Clear();/清除顯示 int cidao = new int1000;/被訪問(wèn)的磁道號(hào)數(shù)組 int sum = 0;/移動(dòng)距離之和 double avg = 0;/平均尋道時(shí)間 int temp;/中間變量 int k = 1; int m, n; string str = txtnum.Text.Split(,);/從txtnum里面
23、獲取訪問(wèn)的磁道號(hào) int now = Convert.ToInt32(txtnow.Text);/當(dāng)前的磁道號(hào) for (int i = 0; i str.Length; i+) /將獲取的磁道號(hào)存入磁道號(hào)數(shù)組 cidaoi = Convert.ToInt32(stri); /對(duì)磁道號(hào)進(jìn)行從小到大排列 for (int i = 0; i str.Length; i+) for (int j = i + 1; j cidaoj) temp = cidaoi; cidaoi = cidaoj; cidaoj = temp; /數(shù)組的最后一個(gè)小于當(dāng)前磁道號(hào),則數(shù)組逆序輸出,此時(shí)的移動(dòng)距離之和等于當(dāng)前
24、磁道號(hào)減去最小的磁道號(hào) if (cidaostr.Length - 1 = 0; i-) txtresult.Text = txtresult.Text + cidaoi + ,; sum = now - cidao0;/移動(dòng)距離之和 /數(shù)組的第一個(gè)數(shù)大于當(dāng)前磁道號(hào),正序輸出,此時(shí)的移動(dòng)距離之和等于最大的磁道號(hào)減去當(dāng)前磁道號(hào) else if (cidao0 = now) for (int i = 0; i str.Length; i+) txtresult.Text = txtresult.Text + cidaoi + ,; sum = cidaostr.Length - 1 - now;/
25、移動(dòng)距離之和 /當(dāng)前磁道號(hào)的大小介于數(shù)組的最大值與最小值之間 else /k的初始值為,從數(shù)組的第二個(gè)數(shù)開始逐一與當(dāng)前磁道號(hào)比較 while (cidaok = 0; j-)/比當(dāng)前磁道號(hào)小的磁道數(shù)組的左邊輸出 txtresult.Text = txtresult.Text + cidaoj + ,; /sum = now - cidao0; for (int j = n; j str.Length; j+)/比當(dāng)前磁道號(hào)大的磁道數(shù)組的右邊輸出 txtresult.Text = txtresult.Text + cidaoj + ,; /sum = cidaostr.Length - 1 -
26、cidao0; sum = now - cidao0 + cidaostr.Length - 1 - cidao0; avg = (double)sum / str.Length;/平均尋道長(zhǎng)度 lblsum.Text = 總移動(dòng)距離: + sum.ToString();/在Label中顯示總移動(dòng)距離 lblavg.Text = 平均尋道長(zhǎng)度: + avg.ToString(0.00);/在Label中顯示平均尋道時(shí)間 / / 磁道號(hào)增加的方向循環(huán)掃描 / / / private void btnCSCANhigh_Click(object sender, EventArgs e) txtre
27、sult.Clear();/清除顯示 int cidao = new int1000;/被訪問(wèn)的磁道號(hào)數(shù)組 int sum = 0;/移動(dòng)距離之和 double avg = 0;/平均尋道時(shí)間 int temp;/中間變量 int k = 1; int m, n; string str = txtnum.Text.Split(,);/從txtnum里面獲取訪問(wèn)的磁道號(hào) int now = Convert.ToInt32(txtnow.Text);/當(dāng)前的磁道號(hào) for (int i = 0; i str.Length; i+) /將獲取的磁道號(hào)存入磁道號(hào)數(shù)組 cidaoi = Convert.
28、ToInt32(stri); /對(duì)磁道號(hào)進(jìn)行從小到大排列 for (int i = 0; i str.Length; i+) for (int j = i + 1; j cidaoj) temp = cidaoi; cidaoi = cidaoj; cidaoj = temp; /數(shù)組的最后一個(gè)小于當(dāng)前磁道號(hào),則數(shù)組正序輸出,此時(shí)的移動(dòng)距離之和等于最大的磁道號(hào)減去當(dāng)前磁道號(hào) if (cidaostr.Length - 1 = now) for (int i = 0; i = now) for (int i = 0; i str.Length; i+) txtresult.Text = txtr
29、esult.Text + cidaoi + ,; sum = cidaostr.Length - 1 - now;/移動(dòng)距離之和 /當(dāng)前磁道號(hào)的大小介于數(shù)組的最大值與最小值之間 else /k的初始值為,從數(shù)組的第二個(gè)數(shù)開始逐一與當(dāng)前磁道號(hào)比較 while (cidaok now) k+; /k+1比當(dāng)前磁道號(hào)大的時(shí)候 m = k - 1; n = k; for (int j = n; j str.Length; j+)/輸出 txtresult.Text = txtresult.Text + cidaoj + ,; /sum = cidaostr.Length - 1 - now;cidao
30、str.Length - 1 - cidao0 + cidaon - cidao0; for (int j = 0; j n; j+) txtresult.Text = txtresult.Text + cidaoj + ,; /sum = cidaostr.Length - 1 - cidao0 + cidaon-1 - cidao0; sum = cidaon-1 + 2 * (cidaostr.Length - 1 - cidao0) - now; avg = (double)sum / str.Length;/平均尋道長(zhǎng)度 lblsum.Text = 總移動(dòng)距離: + sum.ToSt
31、ring();/在Label中顯示總移動(dòng)距離 lblavg.Text = 平均尋道長(zhǎng)度: + avg.ToString(0.00);/在Label中顯示平均尋道時(shí)間 / / 磁道號(hào)減小的方向循環(huán)掃描 / / / private void btnCSCANlow_Click(object sender, EventArgs e) txtresult.Clear();/清除顯示 int cidao = new int1000;/被訪問(wèn)的磁道號(hào)數(shù)組 int sum = 0;/移動(dòng)距離之和 double avg = 0;/平均尋道時(shí)間 int temp;/中間變量 int k = 1; int m,
32、n; string str = txtnum.Text.Split(,);/從txtnum里面獲取訪問(wèn)的磁道號(hào) int now = Convert.ToInt32(txtnow.Text);/當(dāng)前的磁道號(hào) for (int i = 0; i str.Length; i+) /將獲取的磁道號(hào)存入磁道號(hào)數(shù)組 cidaoi = Convert.ToInt32(stri); /對(duì)磁道號(hào)進(jìn)行從小到大排列 for (int i = 0; i str.Length; i+) for (int j = i + 1; j cidaoj) temp = cidaoi; cidaoi = cidaoj; cidao
33、j = temp; /數(shù)組的最后一個(gè)小于當(dāng)前磁道號(hào),則數(shù)組逆序輸出,此時(shí)的移動(dòng)距離之和等于當(dāng)前磁道號(hào)減去最小的磁道號(hào) if (cidaostr.Length - 1 = 0; i-) txtresult.Text = txtresult.Text + cidaoi + ,; sum = now - cidao0;/移動(dòng)距離之和 /數(shù)組的第一個(gè)數(shù)大于當(dāng)前磁道號(hào),逆序輸出,此時(shí)的移動(dòng)距離之和等于當(dāng)前磁道號(hào)減去最小的磁道號(hào) else if (cidao0 = now) for (int i = str.Length - 1; i = 0; i-) txtresult.Text = txtresult
34、.Text + cidaoi + ,; sum = cidaostr.Length - 1 - now;/移動(dòng)距離之和 /當(dāng)前磁道號(hào)的大小介于數(shù)組的最大值與最小值之間 else /k的初始值為,從數(shù)組的第二個(gè)數(shù)開始逐一與當(dāng)前磁道號(hào)比較 while (cidaok = 0; j-)/輸出 txtresult.Text = txtresult.Text + cidaoj + ,; for (int j = str.Length-1; j = n; j-) txtresult.Text = txtresult.Text + cidaoj + ,; sum = now - cidaon + 2 * (
35、cidaostr.Length - 1 - cidao0); avg = (double)sum / str.Length;/平均尋道長(zhǎng)度 lblsum.Text = 總移動(dòng)距離: + sum.ToString();/在Label中顯示總移動(dòng)距離 lblavg.Text = 平均尋道長(zhǎng)度: + avg.ToString(0.00);/在Label中顯示平均尋道時(shí)間 / / 退出 / / / private void btnexit_Click(object sender, EventArgs e) Application.Exit(); / / 快捷鍵Tab選擇輸入框 / / / privat
36、e void txtnum_KeyDown(object sender, KeyEventArgs e) if (e.KeyCode = Keys.Return) this.txtnum.Focus(); 8、軟件運(yùn)行環(huán)境及限制Microsoft Visual Studio 2005 C# Windows應(yīng)用程序9、結(jié)果輸出及分析編譯并運(yùn)行程序,彈出來(lái)磁盤調(diào)度算法窗體,輸入當(dāng)前磁道號(hào)和寫一個(gè)被訪問(wèn)的磁道號(hào)(磁道號(hào)間用逗號(hào)隔開),然后可以根據(jù)提供的空間選擇不同的算法實(shí)現(xiàn)對(duì)輸入的磁道號(hào)的訪問(wèn);按照教材196頁(yè)的例題輸入相應(yīng)的數(shù)據(jù);2、點(diǎn)擊先來(lái)先服務(wù)(FCFS)按鈕實(shí)現(xiàn)算法,顯示結(jié)果如下:此算法按照請(qǐng)求訪問(wèn)的先后順序訪問(wèn)磁道號(hào),所以輸出結(jié)果和輸入結(jié)果的順序一致,平均尋道長(zhǎng)度為訪問(wèn)的磁道號(hào)之間的移動(dòng)距離之和除以被訪問(wèn)的磁道數(shù)。3、點(diǎn)擊最短尋道時(shí)間優(yōu)先(SSTF)按鈕實(shí)現(xiàn)算法,顯示結(jié)果如下:此算法首先按照距離當(dāng)前磁道號(hào)最近的先訪問(wèn),然后以才被訪問(wèn)的磁道號(hào)為基準(zhǔn),又找離其最近的訪問(wèn),以此類推。平均尋道長(zhǎng)度為訪問(wèn)的磁道號(hào)之間的移動(dòng)距離之和除以被訪問(wèn)的磁道數(shù)。4、點(diǎn)擊磁道增加的方向掃描(SCAN)按鈕實(shí)現(xiàn)算法,顯示結(jié)果如下:此算法首先按照請(qǐng)求訪問(wèn)的磁道號(hào)從小到大排序,然后以當(dāng)前磁道號(hào)為基準(zhǔn),向磁
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《保險(xiǎn)中介》課件
- 《修改棘皮》課件
- 突發(fā)性聾的健康宣教
- 輸尿管癌的臨床護(hù)理
- 繼發(fā)性痛風(fēng)的健康宣教
- 單純性外陰陰道念珠菌病的健康宣教
- 孕期肛門疼痛的健康宣教
- 《迎駕貢酒團(tuán)購(gòu)培訓(xùn)》課件
- 風(fēng)濕病性貧血的健康宣教
- 幼年型皮肌炎的臨床護(hù)理
- 遼寧省大連市2023-2024學(xué)年高三上學(xué)期雙基測(cè)試(期末考試) 地理 含答案
- 2024年4s店提前還款協(xié)議書模板
- 學(xué)校開學(xué)安全隱患自查表
- 倉(cāng)庫(kù)庫(kù)房管理制度規(guī)定(7篇)
- 【9歷期中】安徽省亳州市蒙城縣2023-2024學(xué)年九年級(jí)上學(xué)期11月期中歷史試題(含詳解)
- 名人-袁隆平2-人物介紹
- 2024年建設(shè)工程質(zhì)量檢測(cè)人員-建設(shè)工程質(zhì)量檢測(cè)人員(門窗檢測(cè))考試近5年真題集錦(頻考類試題)帶答案
- 第二章田徑-《立定跳遠(yuǎn)》教案 教學(xué)設(shè)計(jì) 2023-2024學(xué)年人教版初中體育與健康九年級(jí)全一冊(cè)
- 人教版(2024新版)七年級(jí)上冊(cè)英語(yǔ)Unit 7單元測(cè)試卷(含答案)
- 2024年新高考一卷讀后續(xù)寫說(shuō)題課件高三英語(yǔ)上學(xué)期一輪復(fù)習(xí)專項(xiàng)
- 2024年新人教版三年級(jí)數(shù)學(xué)上冊(cè)《第6單元第11課時(shí) 數(shù)字編碼》教學(xué)課件
評(píng)論
0/150
提交評(píng)論