预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《操作系统》实验一实验报告 【实验题目】:先来先服务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<iostream> 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<<"----------先来先服务算法----------"<<endl; cout<<"请输入进程个数:"; cin>>ProcessNum; cout<<"输入进程到达时间:"; cout<<endl; for(inti=0;i<ProcessNum;i++) { cin>>ArrivalTime[i]; //cout<<endl; } cout<<endl; cout<<"请输入进程服务时间:"; cout<<endl; for(inti=0;i<ProcessNum;i++) { cin>>ServiceTime[i]; //cout<<endl; } cout<<endl; for(inti=0;i<ProcessNum;i++) { FinishTime[i]=ServiceTime[i]; } for(inti=0;i<ProcessNum;i++) { FinishTime[i+1]=FinishTime[i]+FinishTime[i+1]; } for(inti=0;i<ProcessNum-1;i++) { cout<<"时刻"<<FinishTime[i]<<":第"<<i+2<<"个进程开始运行。"<<endl; } cout<<"PCFS完成时间:"; for(inti=0;i<ProcessNum;i++) { cout<<FinishTime[i]<<""; } cout<<endl; cout<<"PCFS周转时间:"; for(inti=0;i<ProcessNum;i++) { WholeTime[i]=FinishTime[i]-ArrivalTime[i]; } for(inti=0;i<ProcessNum;i++) { cout<<WholeTime[i]<<""; } cout<<endl; cout<<"PCFS平均周转时间:"; for(inti=0;i<ProcessNum;i++) { AVEWholeTime[i]=WholeTime[i]; //cout<<AVEWholeTime[i]<<endl; } for(inti=0;i<ProcessNum;i++) { AVEWhol