先来先服务和短作业优先调度算法.docx
- 文档编号:10237854
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:14
- 大小:142.76KB
先来先服务和短作业优先调度算法.docx
《先来先服务和短作业优先调度算法.docx》由会员分享,可在线阅读,更多相关《先来先服务和短作业优先调度算法.docx(14页珍藏版)》请在冰豆网上搜索。
先来先服务和短作业优先调度算法
《操作系统》实验一实验报告
【实验题目】:
先来先服务FCFS和短作业优先SJF进程调度算法
【实验目的】
通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。
【实验内容】
问题描述:
设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。
假设有n个进程分别在T1,…,Tn时刻到达系统,它们需要的服务时间分别为S1,…,Sn。
分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。
程序要求如下:
1)进程个数n;每个进程的到达时间T1,…,Tn和服务时间S1,…,Sn;选择算法1-FCFS,2-SJF。
2)要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;
3)输出:
要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:
进程B开始运行”等等;
4)输出:
要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。
【实验过程】
#include
usingnamespacestd;
#defineMaxNum100
intArrivalTime[MaxNum];
doubleServiceTime[MaxNum];
doubleFinishTime[MaxNum];
doubleWholeTime[MaxNum];
doubleAVEWholeTime[MaxNum];
doubleAVEWeightWholeTime[MaxNum];
doubleWeightWholeTime[MaxNum];
doubleAverageWT_FCFS,AverageWT_SJF;
doubleAverageWWT_FCFS,AverageWWT_SJF;
doubleAllTime,WeightAllTime;
doublea[MaxNum];
intb[MaxNum];
intc[MaxNum];
intd[MaxNum];
voidFCFS();
voidSJF();
voidFCFS()
{
intProcessNum;
cout<<"----------先来先服务算法----------"< cout<<"请输入进程个数: "; cin>>ProcessNum; cout<<"输入进程到达时间: "; cout< for(inti=0;i { cin>>ArrivalTime[i]; //cout< } cout< cout<<"请输入进程服务时间: "; cout< for(inti=0;i { cin>>ServiceTime[i]; //cout< } cout< for(inti=0;i { FinishTime[i]=ServiceTime[i]; } for(inti=0;i { FinishTime[i+1]=FinishTime[i]+FinishTime[i+1]; } for(inti=0;i { cout<<"时刻"< 第"< "< } cout<<"PCFS完成时间: "; for(inti=0;i { cout< } cout< cout<<"PCFS周转时间: "; for(inti=0;i { WholeTime[i]=FinishTime[i]-ArrivalTime[i]; } for(inti=0;i { cout< } cout< cout<<"PCFS平均周转时间: "; for(inti=0;i { AVEWholeTime[i]=WholeTime[i]; //cout< } for(inti=0;i { AVEWholeTime[i+1]=AVEWholeTime[i]+AVEWholeTime[i+1]; //cout< AllTime=AVEWholeTime[i+1]; } cout< AverageWT_FCFS=AllTime/ProcessNum; cout<<"平均周转时间"< cout<<"PCFS带权周转时间: "; for(inti=0;i { WeightWholeTime[i]=WholeTime[i]/ServiceTime[i]; } for(inti=0;i { cout< } cout< cout<<"PCFS平均带权周转时间: "; for(inti=0;i { AVEWeightWholeTime[i]=WeightWholeTime[i]; //cout< } for(inti=0;i { AVEWeightWholeTime[i+1]=AVEWeightWholeTime[i]+AVEWeightWholeTime[i+1]; WeightAllTime=AVEWeightWholeTime[i+1]; //cout< } AverageWWT_FCFS=WeightAllTime/ProcessNum; cout<<"平均带权周转时间"< } voidSJF() { intProcessNum; cout<<"----------短作业优先算法----------"< cout<<"请输入进程个数: "; cin>>ProcessNum; cout<<"输入进程到达时间: "; cout< for(inti=0;i { cin>>ArrivalTime[i]; //cout< } cout< cout<<"请输入进程服务时间: "; cout< for(inti=0;i { cin>>ServiceTime[i]; //cout< } cout< for(inti=0;i { a[i]=ServiceTime[i]; } for(inti=1;i { doubleexchange; for(intj=i+1;j { if(a[i]>a[j]) { exchange=a[i]; a[i]=a[j]; a[j]=exchange; } } } FinishTime[0]=ServiceTime[0]; for(inti=1;i { //b[0]=0; for(intj=1;j { if(a[i]==ServiceTime[j]) { b[i]=j; //cout< break; } } } for(inti=1;i { //cout< //cout< /** ***通过下边的转换,使得完成时间小于到达时间时 ***下一个进程和下下一个进程顺序交换 **/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 先来先 服务 作业 优先 调度 算法