- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操纵系统十大算法之功课调剂
操作系统十大算法之作业调度
十大题型算法全实现——(八)作业调度
作者名:不详 出处:北京自考热线 05年7月5日
作业调度主要有FIFO,运算时间短的作业优先,优先数调度算法,响应比最高者优先调度算法,均衡调度算法
6月四号上午的考题
模拟最高响应比优先作业调度算法
输入:作业流文件,其中存储的是一系列要执行的作业,
每个作业包括三个数据项:
作业号、作业进入系统的时间(用一整数表示,如10:10,表示成1010)、估计执行时间(单位分)优先级(0级最高)
参数用空格隔开,下面是示例:
1 800 50
2 815 30
3 830 25
4 835 20
5 845 15
6 900 10
7 920 5
其中调度时刻为最后一个作业到达系统的时间!
输出作业号!进入内存的时间!每行输出一个作业信息
本程序包括:FIFO,运算时间短的作业优先,优先数调度算法,响应比最高者优先调度算法
VC++调试通过
(C)copyright by Neo
欢迎大家测试 请问题请Email:sony006@163.com
*/
#includestdio.h
#includeiostream.h
#includeiomanip.h
#includestring.h
const int MAXJOB=50; //定义最大作业
//定义数据结构体
typedef struct node{
int number;
int reach_time;
int reach_hour;
int reach_minite;
int need_time;
int privilege;
float excellent;
int start_time;
int wait_time;
int visited;
}job;
job jobs[MAXJOB];
int quantity;
//初始化函数
void initial()
{
int i;
for(i=0;iMAXJOB;i++){
jobs[i].number=0;
jobs[i].reach_time=0;
jobs[i].reach_hour=0;
jobs[i].reach_minite=0;
jobs[i].privilege=0;
jobs[i].excellent=0;
jobs[i].start_time=0;
jobs[i].wait_time=0;
jobs[i].visited=0;
}
quantity=0;
}
//重置作业数据函数
void reset()
{ int i;
for(i=0;iMAXJOB;i++){
jobs[i].start_time=0;
jobs[i].wait_time=0;
jobs[i].visited=0;
}
}
//读入作业数据函数
void readData()
{
FILE *fp;
char fname[20];
int i;
cout请输入作业数据文件名:;
strcpy(fname,8job.txt);
cinfname;
if((fp=fopen(fname,r))==NULL){
cout错误,文件打不开,请检查文件名:)endl;
}
else{
while(!feof(fp)){
fscanf(fp,%d %d %d %d,jobs[quantity].number,jobs[quantity].reach_time,jobs[quantity].need_time,jo
bs[quantity].privilege);
jobs[quantity].reach_hour=jobs[quantity].reach_time/100;
jobs[quantity].reach_minite=jobs[quantity].reach_time%100;
quantity++;
}
//输出初始作业数据
cout输出初始作业数据endl;
cout---------------------------------------------------------------endl;
cout.setf(2);
coutsetw(10)作业号setw(12)到达时间setw(14)所需时间(分)setw(14)优先级(01)endl;
for(i=0;iquantity;i++){
coutsetw(10)jobs[i].numbersetw(12)jobs[i].reach_timesetw(14)jobs[i].need_timesetw(1
文档评论(0)