-
大小: 27.4MB文件類型: .zip金幣: 1下載: 0 次發(fā)布日期: 2023-07-05
- 語言: C/C++
- 標簽: 操作系統(tǒng)??調(diào)度算法??進程調(diào)度??c/c++??
資源簡介
先來先服務(wù)算法,最短作業(yè)優(yōu)先算法,最短剩余時間優(yōu)先算法,響應(yīng)比最高者優(yōu)先算法,優(yōu)先級調(diào)度算法,輪轉(zhuǎn)調(diào)度算法,多級反饋隊列調(diào)度 c/c++實現(xiàn)
代碼片段和文件信息
//?SchedulingAlgorithm.cpp:?定義控制臺應(yīng)用程序的入口點。
//
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
//時間片
int?TIMER=1;
//事件類型
enum?EventType?{?ARRIVAL_EVENT?FINISH_EVENT?TIMER_EVENT?};
//任務(wù)結(jié)構(gòu)
struct?Job
{
string?name;???????//作業(yè)名
int?arriveTime=0;??????//作業(yè)到達時間
float?needTime=0;????????//作業(yè)所需運行時間
int?priority=0;????????//作業(yè)優(yōu)先級,數(shù)字越小,優(yōu)先級越高
Job(string?name?int?at?int?nt?int?p)?{
this->name?=?name;
needTime?=?nt;
arriveTime?=?at;
priority?=?p;
}
Job(){}
};
//事件鏈表結(jié)點
struct?Event
{
EventType?type=?ARRIVAL_EVENT;????????????//事件類型
int?jobBeginTime=0;??????????//作業(yè)開始時間
bool?isFirstExe=true;???????????//判斷是否第一次執(zhí)行,用于記錄作業(yè)開始時間
int?happenTime=0;????????????//發(fā)生時刻
int?remainTime=0;????????????//剩余運行時間
double?hrr=0;????????????????//最高響應(yīng)比
Job?job;???????????????????//作業(yè)????
Event?*next=NULL;???????????????//事件指針
Event()
{
type?=?ARRIVAL_EVENT;
jobBeginTime?=?0;
happenTime?=?0;
remainTime?=?0;
hrr?=?0;
job?=?Job();
next?=?NULL;
isFirstExe?=?true;
}
Event(int?ht?int?jbt?Job?j)
{
Event();
happenTime?=?ht;
jobBeginTime?=?jbt;
job?=?j;
remainTime?=?j.needTime;
}
};
//*******************************事件隊列相關(guān)函數(shù)************************************
/*?作業(yè)復(fù)制函數(shù)?*/
void?CopyJob(Job?*dest?const?Job?*sour);
/*?抓取頭結(jié)點之外的第一個事件
*?作為返回值返回?*/
Event?*FetchFirstEvent(Event?*head);
/*?按作業(yè)名稱刪除第一個匹配項,
*?刪除成功返回TRUE,不存在該節(jié)點返回FALSE
*/
bool?DeleteByJobName(Event?*head?string?jobName);
/*?刪除事件隊列?*/
void?DestroyQueue(Event?*head);
//打印事件
void?ShowEvent(Event*?eventHeadEvent?*e);
//事件初始化
void?InitEvent(Event*?&seventHead);
//*******************************進程調(diào)度相關(guān)函數(shù)************************************
/*?插入函數(shù)?*/
void?InsertByHappenTime(Event?*head?Event?*e);
void?InsertByHRR(Event?*head?Event?*e);
void?InsertByJobTime(Event*?eventHeadlist?&q?Event?*e);
void?InsertByPriority(Event*?eventHead?list?&q?Event?*e);
void?InsertByRemainTime(Event*??eventHead?list?&q?Event?*e);
void?InsertTail(Event*??eventHead?list?&head?Event?*e);
/*?排序函數(shù)?*/
void?SortByHRR(list?&q?int?currentTime);
/*?調(diào)度函數(shù)?*/
void?FCFS(Event?*eventHead);
void?SJF(Event?*eventHead);
void?SRTF(Event?*eventHead);
void?HRRF(Event?*eventHead);
void?Priority(Event?*?eventHead);????//搶占式優(yōu)先級調(diào)
void?RR(Event?*eventHead);??????//時間片大小為1
void?MFQ(Event?*eventHead);
//作業(yè)復(fù)制
void?CopyJob(Job?*dest?const?Job?*sour)
{
dest->name=?sour->name;
dest->arriveTime?=?sour->arriveTime;
dest->needTime?=?sour->needTime;
dest->priority?=?sour->priority;
}
//抓取頭結(jié)點之外的第一個事件
Event?*FetchFirstEvent(Event?*head)
{
return?head->next;
}
bool?DeleteByJobName(Event?*head?string?jobName)
{
Event*?cur?=?head;
if?(cur->job.name?==?jobName)
{
head?=?cur->next;
return?true;
}
while?(cur->next)
{
if?(cur->next->job.name?==?jobName)
{
cur->next
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\.vs\
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\.vs\SchedulingAlgorithm\
?????目錄???????????0??2018-01-22?00:05??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\
?????文件???????41472??2018-01-22?00:05??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\.suo
?????文件?????5115904??2018-01-22?00:05??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\Browse.VC.db
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\
?????目錄???????????0??2018-01-21?23:34??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\1bbc704d75c80605\
?????文件?????2949120??2018-01-20?18:14??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\1bbc704d75c80605\SCHEDALGOS.ipch
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\3fea8d1db1cd53fc\
?????文件????25624576??2018-01-21?13:06??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\3fea8d1db1cd53fc\SCHEDULINGALGORITHM.ipch
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\8daaa8c35c21839\
?????文件?????2949120??2018-01-20?18:31??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\8daaa8c35c21839\SCHEDALGOS.ipch
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\98f6b88ea3fbc7e6\
?????文件?????2949120??2018-01-20?18:26??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\98f6b88ea3fbc7e6\SIMULATION_SJF.ipch
?????目錄???????????0??2018-01-21?23:34??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\bfc810fa6751e0d4\
?????文件????31588352??2018-01-21?23:34??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\bfc810fa6751e0d4\SCHEDULINGALGORITHM.ipch
?????目錄???????????0??2018-01-21?13:11??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\cc2e3244b16f535c\
?????文件????31588352??2018-01-21?23:02??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\cc2e3244b16f535c\SCHEDULINGALGORITHM.ipch
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\cde2ad304aa12b61\
?????文件?????2949120??2018-01-20?18:26??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\cde2ad304aa12b61\SIMULATION_FCFS.ipch
?????目錄???????????0??2018-01-21?13:10??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\fdf6b6ebe38c513f\
?????文件????37289984??2018-01-20?18:31??SchedulingAlgorithm\.vs\SchedulingAlgorithm\v15\ipch\AutoPCH\fdf6b6ebe38c513f\MAIN.ipch
?????目錄???????????0??2018-01-21?22:29??SchedulingAlgorithm\Debug\
?????文件??????122368??2018-01-21?22:33??SchedulingAlgorithm\Debug\SchedulingAlgorithm.exe
?????文件??????635844??2018-01-21?22:33??SchedulingAlgorithm\Debug\SchedulingAlgorithm.ilk
?????文件?????1069056??2018-01-21?22:33??SchedulingAlgorithm\Debug\SchedulingAlgorithm.pdb
?????目錄???????????0??2018-01-21?23:02??SchedulingAlgorithm\SchedulingAlgorithm\
?????目錄???????????0??2018-01-21?22:33??SchedulingAlgorithm\SchedulingAlgorithm\Debug\
?????目錄???????????0??2018-01-21?22:33??SchedulingAlgorithm\SchedulingAlgorithm\Debug\Scheduli.4A1D0C84.tlog\
............此處省略15個文件信息
評論
共有 條評論