四种进程调度算法FCFS、时间片轮换、优先级调度、最短作业优先
四种进程调度算法FCFS、时间片轮换、优先级调度、最短作业优先
#include<iostream>
#include<string>
using namespace std;
class Process
{
public:
string ProcessName; // 进程名字
int Time; // 进程需要时间
int leval; // 进程优先级
int LeftTime; // 进程运行一段时间后还需要的时间
};
//////////////////////////////////////////////////////
void Copy ( Process proc1, Process proc2); // 把proc2赋值给proc1
void Sort( Process pr[], int size) ; // 此排序后按优先级从大到小排列
void sort1(Process pr[], int size) ; // 此排序后按需要的cpu时间从小到大排列
void Fcfs( Process pr[], int num, int Timepice); // 先来先服务算法
void TimeTurn( Process process[], int num, int Timepice); // 时间片轮转算法
void Priority( Process process[], int num, int Timepice); // 优先级算法
//////////////////////////////////////////////////////////////////////////
void main()
{
int a;
cout<<endl;
cout<<" 选择调度算法: "<<endl;
cout<<" 1: FCFS 2: 时间片轮换 3: 优先级调度 4: 最短作业优先 "<<endl;
cin>>a;
const int Size =30;
Process process[Size] ;
int num;
int TimePice;
cout<<" 输入进程个数:"<<endl;
cin>>num;
cout<<" 输入此进程时间片大小: "<<endl;
cin>>TimePice;
for( int i=0; i< num; i++)
{
string name;
int CpuTime;
int Leval;
cout<<" 输入第 "<< i+1<<" 个进程的名字、 cpu时间和优先级 :"<<endl;
cin>>name;
cin>> CpuTime>>Leval;
process[i].ProcessName =name;
process[i].Time =CpuTime;
process[i].leval =Leval;
cout<<endl;
}
for ( int k=0;k<num;k++)
process[k].LeftTime=process[k].Time ;//对进程剩余时间初始化
cout<<" ( 说明: 在本程序所列进程信息中, 优先级一项是指进程运行后的优先级 !! )";
cout<<endl; cout<<endl;
cout<<"进程名字 "<<"共需占用CPU时间 "<<" 还需要占用时间 "<<" 优先级 "<<" 状态 "<<endl;
if(a==1)
Fcfs(process,num,TimePice);
else if(a==2)
TimeTurn( process, num, TimePice);
else if(a==3)
{
Sort( process, num);
Priority( process , num, TimePice);
}
else // 最短作业算法,先按时间从小到到排序,再调用Fcfs算法即可
{
sort1(process,num);
Fcfs(process,num,TimePice);
}
}
/////////////////////////////////
void Copy ( Process proc1, Process proc2)
{
proc1.leval =proc2.leval ;
proc1.ProcessName =proc2.ProcessName ;
proc1.Time =proc2.Time ;
}
/////////////////////////////////////////////
void Sort( Process pr[], int size) //以进程优先级高低排序
{// 直接插入排序
for( int i=1;i<size;i++)
{
Process temp;
temp = pr[i];
int j=i;
while(j>0 && temp.leval<pr[j-1].leval)
{
p
r[j] = pr[j-1];
j--;
}
pr[j] = temp;
} // 直接插入排序后进程按优先级从小到大排列
for( int d=size-1;d>size/2;d--)
{
Process temp;
temp=pr [d];
pr [d]
四种进程调度算法FCFS、时间片轮换、优先级调度、最短作业优先
= pr [size-d-1];
pr [size-d-1]=temp;
} // 此排序后按优先级从大到小排列
}
///////////////////////////////////////////////////
void sort1 ( Process pr[], int size) // 以进程时间从低到高排序
{// 直接插入排序
for( int i=1;i<size;i++)
{
Process temp;
temp = pr[i];
int j=i;
while(j>0 && temp.Time < pr[j-1].Time )
{
pr[j] = pr[j-1];
j--;
}
pr[j] = temp;
}
}
////////////////////////////////
////
//// 先来先服务算法的实现
/////////////////////////////////
void Fcfs( Process process[], int num, int Timepice)
{ // process[] 是输入的进程,num是进程的数目,Timepice是时间片大小
//
while(true)
{
if(num==0)
{
cout<<" 所有进程都已经执行完毕 !"<<endl;
exit(1);
}
if(process[0].LeftTime==0)
{
cout<<" 进程 "<<process[0].ProcessName<< " 已经执行完毕 !"<<endl;
for (int i=0;i<num;i++)
process[i]=process[i+1];
num--;
}
else if(process[num-1].LeftTime==0)
{
cout<<" 进程 "<<process[num-1].ProcessName<< " 已经执行完毕 !"<<endl;
num--;
}
else
{
cout<<endl; //输出正在运行的进程
process[0].LeftTime=process[0].LeftTime- Timepice;
process[0].leval =process[0].leval-1;
cout<<" "<<process[0].ProcessName <<" "<<process[0].Time <<" ";
cout<<process[0].LeftTime <<" "<<process[0].leval<<" 运行";
cout<<endl;
for(int s=1;s<num;s++)
{
cout<<" "<<process[s].ProcessName <<" "<<process[s].Time <<" ";
cout<<process[s].LeftTime <<" "<<process[s].leval<<" 等待 "<<endl; ;
}
} // else
cout<<endl;
system(" pause");
cout<<endl;
} // while
}
////////////////////////////////////////////////
///
/// 时间片轮转调度算法实现
/////////////////////////////////////////
…… 此处隐藏:3565字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




