操作系统八大调度算法c/c++实现


先来先服务算法,最短作业优先算法,最短剩余时间优先算法,响应比最高者优先算法,优先级调度算法,轮转调度算法,多级反馈队列调度 c/c++实现
资源截图
代码片段和文件信息
// SchedulingAlgorithm.cpp: 定义控制台应用程序的入口点。
//
#include 
#include 
#include 
#include 
#include 
using namespace std;

//时间片
int TIMER=1;

//事件类型
enum EventType { ARRIVAL_EVENT FINISH_EVENT TIMER_EVENT };
//任务结构
struct Job
{
string name;       //作业名
int arriveTime=0;      //作业到达时间
float needTime=0;        //作业所需运行时间
int priority=0;        //作业优先级,数字越小,优先级越高
Job(string name int at int nt int p) {
this->name = name;
needTime = nt;
arriveTime = at;
priority = p;
}
Job(){}
};
//事件链表结点
struct Event
{
EventType type= ARRIVAL_EVENT;            //事件类型
int jobBeginTime=0;          //作业开始时间
bool isFirstExe=true;           //判断是否第一次执行,用于记录作业开始时间
int happenTime=0;            //发生时刻
int remainTime=0;            //剩余运行时间
double hrr=0;                //最高响应比
Job job;                   //作业    
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;
}
};
//*******************************事件队列相关函数************************************
/* 作业复制函数 */
void CopyJob(Job *dest const Job *sour);

/* 抓取头结点之外的第一个事件
* 作为返回值返回 */
Event *FetchFirstEvent(Event *head);

/* 按作业名称删除第一个匹配项,
* 删除成功返回TRUE,不存在该节点返回FALSE
*/
bool DeleteByJobName(Event *head string jobName);

/* 删除事件队列 */
void DestroyQueue(Event *head);

//打印事件
void ShowEvent(Event* eventHeadEvent *e);

//事件初始化
void InitEvent(Event* &seventHead);
//*******************************进程调度相关函数************************************
/* 插入函数 */
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);

/* 排序函数 */
void SortByHRR(list &q int currentTime);

/* 调度函数 */
void FCFS(Event *eventHead);
void SJF(Event *eventHead);
void SRTF(Event *eventHead);
void HRRF(Event *eventHead);
void Priority(Event * eventHead);    //抢占式优先级调
void RR(Event *eventHead);      //时间片大小为1
void MFQ(Event *eventHead);

//作业复制
void CopyJob(Job *dest const Job *sour)
{
dest->name= sour->name;
dest->arriveTime = sour->arriveTime;
dest->needTime = sour->needTime;
dest->priority = sour->priority;
}



//抓取头结点之外的第一个事件
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.vsSchedulingAlgorithm
     目录           0  2018-01-22 00:05  SchedulingAlgorithm.vsSchedulingAlgorithmv15
     文件       41472  2018-01-22 00:05  SchedulingAlgorithm.vsSchedulingAlgorithmv15.suo
     文件     5115904  2018-01-22 00:05  SchedulingAlgorithm.vsSchedulingAlgorithmv15Browse.VC.db
     目录           0  2018-01-21 13:10  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipch
     目录           0  2018-01-21 23:34  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCH
     目录           0  2018-01-21 13:10  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCH1bbc704d75c80605
     文件     2949120  2018-01-20 18:14  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCH1bbc704d75c80605SCHEDALGOS.ipch
     目录           0  2018-01-21 13:10  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCH3fea8d1db1cd53fc
     文件    25624576  2018-01-21 13:06  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCH3fea8d1db1cd53fcSCHEDULINGALGORITHM.ipch
     目录           0  2018-01-21 13:10  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCH8daaa8c35c21839
     文件     2949120  2018-01-20 18:31  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCH8daaa8c35c21839SCHEDALGOS.ipch
     目录           0  2018-01-21 13:10  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCH98f6b88ea3fbc7e6
     文件     2949120  2018-01-20 18:26  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCH98f6b88ea3fbc7e6SIMULATION_SJF.ipch
     目录           0  2018-01-21 23:34  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCHfc810fa6751e0d4
     文件    31588352  2018-01-21 23:34  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCHfc810fa6751e0d4SCHEDULINGALGORITHM.ipch
     目录           0  2018-01-21 13:11  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCHcc2e3244b16f535c
     文件    31588352  2018-01-21 23:02  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCHcc2e3244b16f535cSCHEDULINGALGORITHM.ipch
     目录           0  2018-01-21 13:10  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCHcde2ad304aa12b61
     文件     2949120  2018-01-20 18:26  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCHcde2ad304aa12b61SIMULATION_FCFS.ipch
     目录           0  2018-01-21 13:10  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCHfdf6b6ebe38c513f
     文件    37289984  2018-01-20 18:31  SchedulingAlgorithm.vsSchedulingAlgorithmv15ipchAutoPCHfdf6b6ebe38c513fMAIN.ipch
     目录           0  2018-01-21 22:29  SchedulingAlgorithmDebug
     文件      122368  2018-01-21 22:33  SchedulingAlgorithmDebugSchedulingAlgorithm.exe
     文件      635844  2018-01-21 22:33  SchedulingAlgorithmDebugSchedulingAlgorithm.ilk
     文件     1069056  2018-01-21 22:33  SchedulingAlgorithmDebugSchedulingAlgorithm.pdb
     目录           0  2018-01-21 23:02  SchedulingAlgorithmSchedulingAlgorithm
     目录           0  2018-01-21 22:33  SchedulingAlgorithmSchedulingAlgorithmDebug
     目录           0  2018-01-21 22:33  SchedulingAlgorithmSchedulingAlgorithmDebugScheduli.4A1D0C84.tlog
............此处省略15个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)