先来先服务FCFS和短作业优先SJF进程调度算法 【实验题目】:先来先服务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 #include #define Number 5 void main() { int n; int daoda[Number],fuwu[Number],i; cout<<"请依次输入各个进程的到达时间并以空格间隔:"; for(i=0;i>daoda[i]; } cout<<"请依次输入各个进程的服务时间,并以空格间隔:"; for(i=0;i>fuwu[i]; } cout<<"请输入n=1 选择FCFS 或者n=2 选择SJF 或者n=3 同时调用FCFS和SJF,n="; cin>>n; while(n<1||n>3){ cout<<"输入的n 有误,请重新输入n,n="; cin>>n; } struct statedd //声明结构 { bool doneF,doneS; int daoda,fuwu; float wancheng,zhouzhuan,daiquan,wan,zhou,dai; } ; statedd process[Number];//声明结构变量,这里为数组 int timeflyF=0,timeflyS=0;//定义两个类似于秒表的变量 int j,k,l,nextproF,nextproS; // 获取数据 for(i=0;i