資源簡介
采用C++對(duì)操作系統(tǒng)課程中的LOOK電梯調(diào)度算法進(jìn)行簡單的描述,望采納
代碼片段和文件信息
/*
操作系統(tǒng)實(shí)驗(yàn)3-電梯調(diào)度算法
算法思想:每次總是選擇沿移動(dòng)臂的移動(dòng)方向最近的那個(gè)柱面;如果同一柱面有多個(gè)請(qǐng)求,還需進(jìn)行旋轉(zhuǎn)優(yōu)化。
如果當(dāng)前移動(dòng)方向沒有但是相反方向有訪問請(qǐng)求時(shí),就改變移動(dòng)臂的移動(dòng)方向,然后處理最近的I/O請(qǐng)求。
實(shí)現(xiàn)方案:首先設(shè)置一個(gè)List1存放輸入的一組訪問序列,對(duì)List1進(jìn)行從小到大排序,用戶輸入當(dāng)前停留的柱面,
把當(dāng)前的柱面存入順序隊(duì)列Queue1當(dāng)中,在List當(dāng)中找到當(dāng)前柱面的位置,將其和上一個(gè)、下一個(gè)元素分別做差
比較大小,選擇移動(dòng)方向,之后就是從當(dāng)前位置開始讀取List中的數(shù)存到Queue當(dāng)中,最后輸出一組電梯調(diào)度算法的序列。
實(shí)驗(yàn)時(shí)間:2018.6.8
實(shí)驗(yàn)人:高耀
*/
#include
#include
#include
#include
#include
using?namespace?std;
int?main()?{
queue?Queue1;
list?List1;
int?SUM?=?0;
int?a?b?c;
cout?<“請(qǐng)輸入柱面訪問請(qǐng)求個(gè)數(shù)(包括當(dāng)前訪問的柱面):“?< cin?>>?c;
cout?<“請(qǐng)輸入柱面訪問請(qǐng)求序列(包括當(dāng)前訪問的柱面):“?< for?(int?i?=?0;?i? cin?>>?a;
List1.push_front(a);
}
List1.sort();
cout?<“請(qǐng)輸入當(dāng)前柱面的位置(從之前輸入的序列中選取一個(gè)):“?< cin?>>?b;
if?(b?==?List1.front())?{?
cout?<“電梯調(diào)度算法后的訪問序列為:“;
for?(list::iterator?it?=?List1.begin();?it?!=?List1.end();it++)?{
cout?<*it?< }???
cout?< system(“pause“);
exit(0);
}?
else?if?(b==List1.back())?{?//b?為LIST的最大元素
???????? stackstack;
cout?<“電梯調(diào)度算法后的訪問序列為:“;
for?(list::iterator?iter?=?List1.begin();?iter?!=?List1.end();?iter++)?{
stack.push(*iter);
}?
while?(!stack.emp
- 上一篇:c語言程序設(shè)計(jì)_銷售管理系統(tǒng)
- 下一篇:簡單編譯器
評(píng)論
共有 條評(píng)論