版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三利用预约表编程计算非线性流水线的任务调度方案一、实验目的通过本实验帮助学生理解单功能非线性流水线基本任务调度方法.二、实验环境开发工具使用windows平台下的vc++6.0.三、实验内容给定某单功能非线性流水线的预约表,通过编程求出所有不冲突的任务调度方案并输出.流水线功能段数随机。四、实验结果#include<stdiooh〉include〈iostream。h〉includeviomanip。h〉#include〈string.h〉constintMAXJOB=50;〃定义数据结构体typedefstructnode{intnumber;intreach_time;intreach_hour;intreach_minite;intneed_time;intprivilege;floatexcellent;intstart_time;intwait_time;intvisited;}job;jobjobs[MAXJOB];intquantity;//初始化函数voidinitial(){inti;for(i=0;i〈MAXJOB;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;}voidreset()//重置作业数据函数{inti;for(i=0;i〈MAXJOB;i++)(jobs[i].start_time=0;jobs[i]。wait_time=0;jobs[i]。visited=0;}}voidreadData()〃读入作业数据函数{FILE*fp;charfname[20];inti;cout〈〈”请输入作业数据文件名:”;strcpy(fname,”8job.txt”);cin>>fname;if((fp=fopen(fname,"r"))==NULL){cout〈〈”错误,文件打不开,请检查文件名:)"<<endl;}else{while(!feof(fp)){fscanf(fp,”%d%d%d%d”,&jobs[quantity]onumber,&jobs[quantity]。reach_time,&jobs[quantity].need_time,&jobs[quantity].privilege);jobs[quantity]oreach_hour=jobs[quantity].reach_time/100;jobs[quantity].reach_minite=jobs[quantity]oreach_time%100;quantity++;}〃输出初始作业数据cout<<"输出初始作业数据"<〈endl;cout<<"-——-——-—-—-—--■—”<<endl;cout.setf(2);cout〈<setw(10)〈<”作业号”〈<setw(12)<<”到达时间"<<setw(14)〈〈”所需时间(分)”<<setw(14)<〈”优先级(0〉1)”〈<endl;for(i=0;i〈quantity;i++)(cout〈〈setw(10)〈vjobs[i]。number<<setw(12)〈vjobs[i].reach_timevvsetw(14)vvjobs[i]。need_time<〈setw(14)<〈jobs[i].privilege<〈endl;}}}//FIFO算法voidFIFO(){inti;intcurrent_hour;intcurrent_minute;inttotal_time=0;coutv〈endl;〃输出作业流coutv〈endlv〈"FIFO算法作业流”<vendl;coutv〈”-——------—————---————--------——----”vvendl;cout。setf(2);coutv〈setw(10)〈<"作业号”〈〈setw(12)〈〈”到达时间”〈vsetw(12)vv”开始时间”<〈setw(14)<〈”周转时间(分)”〈〈endl;current_hour=jobs[0].reach_hour;current_minute=jobs[0]。reach_minite;for(i=0;i(quantity;i++)(jobs[i]。start_time=current_hour*100+current_minute;jobs[i].wait_time=(current_hour-jobs[i]。reach_hour)*60+(current_minute—jobs[i].reach_minite)+jobs[i].need_time;cout〈vsetw(10)〈vjobs[i]。number〈〈setw(12)<〈jobs[i].reach_time〈〈setw(12)〈vjobs[i].start_time〈〈setw(14)〈vjobs[i]。wait_time<〈endl;current_hour=current_hour+(jobs[i]。need_time+current_minute)/60;current_minute=(jobs[i]。need_time+current_minute)%60;total_time+=jobs[i].wait_time;}cout(<endl<<”总周转时间:”vvtotal_time〈〈”平均周转时间:”vvtotal_time/quantity〈<endl;}voidshorter()〃运算时间短的作业优先算法{inti,j,p;intcurrent_hour;intcurrent_minute;intcurrent_need_time;inttotal_time=0;〃输出作业流cout<〈endl;cout〈〈endl<〈”时间短作业优先算法作业流(开始调度时刻为最后一个作业到达系统的时间)”<〈endl;cout<〈"——————-——-——--——--——--——-----——"<<endl;cout.setf(2);cout〈〈setw(10)〈<”作业号”<<setw(12)〈<”到达时间"〈〈setw(14)<〈"所需时间(分)”〈<setw(12)<<"开始时间”〈〈setw(14)〈<"周转时间(分)"〈<endl;current_hour=jobs[quantity-1].reach_hour;current_minute=jobs[quantity—1].reach_minite;for(i=0;i〈quantity;i++){current_need_time=30000;for(j=0;j(quantity;j++)(if((jobs[j]。visited==0)&&(jobs[j]。need_time<current_need_time))(P=j;current_need_time=jobs[j]。need_time;}}jobs[p].start_time=current_hour*100+current_minute;jobs[p].wait_time=(current_hour-jobs[p].reach_hour)大60+(current_minute-jobs[p]。reach_minite)+jobs[p]。need_time;cout〈<setw(10)〈〈jobs[p].number〈〈setw(12)〈<jobs[p].reach_time〈〈setw(14)〈〈jobs[p]。need_time<<setw(12)<<jobs[p]。start_time(<setw(14)〈〈jobs[p].wait_time<〈endl;current_hour=current_hour+(jobs[p]。need_time+current_minute)/60;current_minute=(jobs[p].need_time+current_minute)%60;jobs[p]。visited=1;total_time+=jobs[p].wait_time;}cout〈<endl〈<"总周转时间:"<<total_time〈〈”平均周转时间:"(<total_time/quantity〈〈endl;}voidprivilege。〃优先数调度算法{inti,j,p;intcurrent_hour;intcurrent_minute;intcurrent_privilege;inttotal_time=0;//输出作业流cout<<endl;cout〈〈endl<<”优先数调度算法作业流(开始调度时刻为最后一个作业到达系统的时间)”<〈endl;cout<<"---——-----——--——---——-——------——--——-——--——--——--——-”<<endl;coutosetf(2);cout<<setw(10)<〈"作业号”〈〈setw(12)<<”到达时间”〈〈setw(14)〈〈”优先级(0〉1)”〈<setw(12)<〈"开始时间”〈〈setw(14)<<”周转时间(分)”<〈endl;current_hour=jobs[quantity-1].reach_hour;current_minute=jobs[quantity—1]。reach_minite;for(i=0;i<quantity;i++)(current_privilege=30000;for(j=0;j<quantity;j++){if((jobs[j].visited==0)&&(jobs[j]。privilege<current_privilege)){P=j;current_privilege=jobs[j]。privilege;}}jobs[p]ostart_time=current_hour*100+current_minute;jobs[p]。wait_time=(current_hour——jobs[p]。reach_hour)*60+(current_minute—jobs[p]。reach_minite)+jobs[p]oneed_time;cout〈〈setw(10)<<jobs[p].number<〈setw(12)<〈jobs[p]。reach_time〈〈setw(14)〈〈jobs[p].privilege〈<setw(12)<<jobs[p]。start_time〈〈setw(14)<<jobs[p].wait_time<<endl;current_hour=current_hour+(jobs[p]。need_time+current_minute)/60;current_minute=(jobs[p]。need_time+current_minute)%60;jobs[p]ovisited=1;total_time+=jobs[p]。wait_time;}cout<<endl<<”总周转时间:”<〈total_time<〈”平均周转时间:"〈<total_time/quantity<〈endl;}〃响应比最高者优先调度算法voidexcellent(){inti,j,p;intcurrent_hour;intcurrent_minute;floatcurrent_excellent;inttotal_time=0;〃输出作业流cout<<endl;cout〈〈endl〈<”响应比高者优先调度算法作业流(开始调度时刻为最后一个作业到达系统的时间)"<<endl;cout〈〈”——-——-————--——--————-———-----—-——”<<endl;cout。setf(2);cout〈〈setw(10)<〈”作业号”〈<setw(12)<<”到达时间"<<setw(12)〈〈”开始时间”〈<setw(14)<<”周转时间(分)”<〈endl;current_hour=jobs[quantity—1]。reach_hour;current_minute=jobs[quantity—1].reach_minite;for(i=0;i<quantity;i++)(current_excellent=—1;for(j=0;j<quantity;j++){if(jobs[j]。visited==0){jobs[j]。wait_time=(current_hour-jobs[j].reach_hour)大60+(current_minute-jobs[j]。reach_minite);jobs[j].excellent=(float)(jobs[j].wait_time/jobs[j]。need_time);}}for(j=0;j<quantity;j++){if((jobs[j].visited==0)&&(jobs[j]。excellent>current_excellent)){P=j;current_excellent=jobs[j]。excellent;}}jobs[p]。start_time=current_hour大100+current_minute;jobs[p]。wait_time=(current_hour-jobs[p]。reach_hour)大60+(current_minute-jobs[p]。reach_minite)+jobs[p]。need_time;cout<<setw(10)〈〈jobs[p].number<<setw(12)<〈jobs[p].reach_time〈<setw(12)<<jobs[p]。start_time〈<setw(14)<〈jobs[p]。wait_time<<endl;current_hour=current_hour+(jobs[p].need_time+current_minute)/60;current_minute=(jobs[p].need_time+current_minute)%60;jobs[p]。visited=1;total_time+=jobs[p]。wait_time;}cout〈〈endl〈<”总周转时间:"〈〈total_time〈〈”平均周转时间:"〈<total_time/quantity〈〈endl;}Voidmain(){initial();readData();FIFO();shorter();reset();privilege();reset(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023-2024学年安徽省五市联考高二上学期期末考试地理试题(C卷)(解析版)
- 2025蔬菜买卖合同范文
- 2024年度天津市公共营养师之三级营养师通关题库(附答案)
- 2024年度天津市公共营养师之二级营养师练习题及答案
- 河北成立腌酱菜生产加工公司可行性分析报告
- 2024年度四川省公共营养师之三级营养师能力测试试卷B卷附答案
- 建筑再生利用可行性报告
- 2025现代挖机个人买卖合同
- 2025年电焊机电缆项目可行性研究报告
- 2025正规商品买卖合同(版)
- (完整版)非计划性拔管鱼骨图
- DB32∕T 3377-2018 城市公共建筑人防工程规划设计规范
- 中建三局住宅工程精益建造实施指南
- 分布式光伏发电项目并网验收意见单
- 网站隐私政策模板
- YY∕T 1831-2021 梅毒螺旋体抗体检测试剂盒(免疫层析法)
- 消弧产品规格实用标准化规定
- 装饰装修工程施工合理化建议和降低成本措施提要:完整
- 第十四章35kV变电站保护整定值计算实例
- 液态模锻工艺介绍
- 水泵水轮机结构介绍
评论
0/150
提交评论