-
大小: 5.1MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-26
- 語言: C/C++
- 標(biāo)簽: 操作系統(tǒng)??
資源簡介
計(jì)算機(jī)操作系統(tǒng)的實(shí)驗(yàn)課:磁盤調(diào)度算法的c++模擬實(shí)現(xiàn)。包含可直接執(zhí)行的工程壓縮包,有詳盡的注釋。

代碼片段和文件信息
/*
磁盤調(diào)度程序
輸入:當(dāng)前磁頭位置,磁頭移動方向,磁道訪問請求序列
輸出:磁頭依次訪問的磁道號順序,磁頭移動的總磁道數(shù)
算法:先來先服務(wù)(FCFS),最短尋道時(shí)間優(yōu)先(SSTF),掃描算法(SCAN)
*/
#include
#include
#include
#define?DISK_SUM?200
#define?REQUEST__COUNT?8
using?namespace?std;
void?FCFS(int?currentNum?int?sequence[REQUEST__COUNT])
{
cout?<“磁頭依次訪問的磁道號順序:“;
cout?< for?(int?i=0;?i? {
cout?< }
cout?<
int?count?=?abs(sequence[0]-currentNum);
for?(int?i?=?1;?i? {
count?+=?abs(sequence[i]?-?sequence[i?-?1]);
}
cout?<“磁頭移動的總磁道數(shù):“?<
double?average?=?(double)count?/?(double)REQUEST__COUNT;
cout?<“平均尋道長度:“?< }
void?SSTF(int?currentNum?int?sequence[REQUEST__COUNT])
{
int?temp;
int?a[REQUEST__COUNT?+?1];
//把初始位置和序列合并至一個數(shù)組
a[0]?=?currentNum;
for?(int?i?=?1;?i? {
a[i]?=?sequence[i-1];
}
//按照最短尋道時(shí)間排序
for?(int?j?=?0;?j? {
for?(int?i?=?REQUEST__COUNT;?i?>?j+1;?i--)
{
if?(abs(a[i]?-?a[j])? {//若后一個的距離較短則交換
temp?=?a[i];
a[i]?=?a[i?-?1];
a[i?-?1]?=?temp;
}
}
}
cout?<“磁頭依次訪問的磁道號順序:“;
for?(int?i?=?0;?i? {
cout?< }
cout?<
int?count?=?0;
for?(int?i?=?1;?i? {
count?+=?abs(a[i]?-?a[i?-?1]);
}
cout?<“磁頭移動的總磁道數(shù):“?<
double?average?=?(double)count?/?(double)REQUEST__COUNT;
cout?<“平均尋道長度:“?<}
void?SCAN(int?currentNum?int?sequence[REQUEST__COUNT]?int?direction)
{
int?left[REQUEST__COUNT]?right[REQUEST__COUNT];
int?result[REQUEST__COUNT];
int?p?=?0q?=?0;//數(shù)組下標(biāo)
//將序列分成小于當(dāng)前位置的和大于當(dāng)前位置的
????for?(int?i?=?0;?i? {
if?(sequence[i]? {
left[p++]?=?sequence[i];
}
else
{
right[q++]?=?sequence[i];
}
}
//對left按從大到小排序,right按從小到大排序
int?temp;
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
if?(left[j]? {
temp?=?left[j];
left[j]?=?left[j+1];
left[j+1]?=?temp;
}
}
}
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
if?(right[j]?>?right[j?+?1])
{
temp?=?right[j];
right[j]?=?right[j?+?1];
right[j?+?1]?=?temp;
}
}
}
????
if?(direction?==?0)
{//先向左掃描
for?(int?i?=?0;?i? {
result[i]?=?left[i];
}
for?(int?i?=?p;?i? {
result[i]?=?right[i?-?p];
}
}
else
{//向右掃描
for?(int?i?=?0;?i? {
result[i]?=?right[i];
}
for?(int?i?=?q;?i? {
result[i]?=?left[i?-?q];
}
}
cout?<“磁頭依次訪問的磁道號順序:“;
cout?< for?(int?i?=?0;?i? {
cout?< }
cout?<
int?count?=?abs(result[0]?-?curre
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
????..A..H.?????29184??2017-11-27?17:00??diskDispatch\.vs\diskDispatch\v15\.suo
?????文件????4861952??2017-11-27?17:00??diskDispatch\.vs\diskDispatch\v15\Browse.VC.db
?????文件???25690112??2017-11-27?16:41??diskDispatch\.vs\diskDispatch\v15\ipch\AutoPCH\d43cc503e999643a\MAIN.ipch
?????文件?????112640??2017-11-27?16:48??diskDispatch\Debug\diskDispatch.exe
?????文件????1954024??2017-11-27?16:48??diskDispatch\Debug\diskDispatch.ilk
?????文件????2641920??2017-11-27?16:48??diskDispatch\Debug\diskDispatch.pdb
?????文件?????????33??2017-11-24?18:26??diskDispatch\diskDispatch\data.txt
?????文件????????207??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\diskDispatch.log
?????文件????????638??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\diskDispatch.tlog\CL.command.1.tlog
?????文件??????19210??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\diskDispatch.tlog\CL.read.1.tlog
?????文件????????540??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\diskDispatch.tlog\CL.write.1.tlog
?????文件????????214??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\diskDispatch.tlog\diskDispatch.lastbuildstate
?????文件???????1190??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\diskDispatch.tlog\li
?????文件???????3314??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\diskDispatch.tlog\li
?????文件????????518??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\diskDispatch.tlog\li
?????文件?????276223??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\main.obj
?????文件?????338944??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\vc141.idb
?????文件?????438272??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\vc141.pdb
?????文件???????5826??2017-11-23?19:41??diskDispatch\diskDispatch\diskDispatch.vcxproj
?????文件???????1057??2017-11-23?19:41??diskDispatch\diskDispatch\diskDispatch.vcxproj.filters
?????文件???????4861??2017-11-27?16:11??diskDispatch\diskDispatch\main.cpp
?????文件???????1448??2017-11-23?18:26??diskDispatch\diskDispatch.sln
?????目錄??????????0??2017-11-23?18:32??diskDispatch\.vs\diskDispatch\v15\ipch\AutoPCH\d43cc503e999643a
?????目錄??????????0??2017-11-23?18:29??diskDispatch\.vs\diskDispatch\v15\ipch\AutoPCH
?????目錄??????????0??2017-11-23?18:29??diskDispatch\.vs\diskDispatch\v15\ipch
?????目錄??????????0??2017-11-27?17:00??diskDispatch\.vs\diskDispatch\v15
?????目錄??????????0??2017-11-27?16:48??diskDispatch\diskDispatch\Debug\diskDispatch.tlog
?????目錄??????????0??2017-11-23?18:26??diskDispatch\.vs\diskDispatch
?????目錄??????????0??2017-11-27?16:48??diskDispatch\diskDispatch\Debug
????...D.H.?????????0??2017-11-23?18:26??diskDispatch\.vs
............此處省略6個文件信息
評論
共有 條評論