操作系统实验先来先服务FCFS和短作业优先SJF进程调度算法.docx
- 文档编号:9334853
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:12
- 大小:118.20KB
操作系统实验先来先服务FCFS和短作业优先SJF进程调度算法.docx
《操作系统实验先来先服务FCFS和短作业优先SJF进程调度算法.docx》由会员分享,可在线阅读,更多相关《操作系统实验先来先服务FCFS和短作业优先SJF进程调度算法.docx(12页珍藏版)》请在冰豆网上搜索。
操作系统实验先来先服务FCFS和短作业优先SJF进程调度算法
操作系统实验报告
实验一
先来先服务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)输出:
要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。
实现提示:
用C++语言实现提示:
1)程序中进程调度时间变量描述如下:
staticintMaxNum=100;
intArrivalTime[MaxNum];
intServiceTime[MaxNum];
intFinishTime[MaxNum];
intWholeTime[MaxNum];
doubleWeightWholeTime[MaxNum];
doubleAverageWT_FCFS,AverageWT_SJF;
doubleAverageWWT_FCFS,AverageWWT_SJF;
2)进程调度的实现过程如下:
变量初始化;
接收用户输入n,T1,…,Tn,S1,…,Sn;算法选择1-FCFS,2-SJF;
按照选择算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间;
计算所有进程的平均周转时间和平均带权周转时间;
按格式输出调度结果。
实验要求:
1)上机前认真复习FCFS和SJF进程调度调度算法,熟悉进程调度的执行过程;
2)上机时独立编程、调试程序;
3)根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图)。
【源程序】
头文件
#include
#defineMaxNum100
structProcess_struct{
intNumber;rrivalTime;
for(i=0;i { Process[i].ServiceTime=temp_time; Process[i].FinishTime=Process[i].ServiceTime+Process[i].WholeTime; Process[i].run_flag=1; temp_time=Process[i].FinishTime; Process[i].order=i+1; }return0; } 头文件 #include intSJF();holeTime; j=1; while((j { run_time=Process[i].WholeTime; i=j; } j++; } erviceTime=Process[number_schedul].ArrivalTime; Process[number_schedul].FinishTime=Process[number_schedul].ServiceTime+Process[number_schedul].WholeTime; Process[number_schedul].run_flag=1; temp_time=Process[number_schedul].FinishTime; Process[number_schedul].order=1; temp_counter=1; while(temp_counter { for(j=0;j { if((Process[j].ArrivalTime<=temp_time)&&(! Process[j].run_flag)) { run_time=Process[j].WholeTime; number_schedul=j; break; } } for(j=0;j { if((Process[j].ArrivalTime<=temp_time)&&(! Process[j].run_flag)) if(Process[j].WholeTime { run_time=Process[j].WholeTime; number_schedul=j; } } erviceTime=temp_time; Process[number_schedul].FinishTime=Process[number_schedul].ServiceTime+Process[number_schedul].WholeTime; Process[number_schedul].run_flag=1; temp_time=Process[number_schedul].FinishTime; temp_counter++; Process[number_schedul].order=temp_counter; }return0; } 主程序 #include #include"" #include"" usingnamespacestd; intPinput();来先服务\n"); printf("2.短作业优先\n"); printf("0.退出\n"); scanf("%d",&option); switch(option) { case0: printf("运行结束。 \n"); break; case1: printf("对进程用先来先服务调度。 \n\n"); FCFS(); Poutput(); break; case2: printf("对进程用短作业优先调度。 \n\n"); SJF(); Poutput(); break; } } intPinput()ame); printf("pleaseinputtheArrvialTime: \n"); scanf("%d",&Process[i].ArrivalTime); printf("pleaseinputtheWholeTime: \n"); scanf("%d",&Process[i].WholeTime); Process[i].ServiceTime=0; Process[i].FinishTime=0; Process[i].WeightWholeTime=0; Process[i].order=0; Process[i].run_flag=0; }return0; } intPoutput()eightWholeTime=Process[i].FinishTime-Process[i].ArrivalTime; f1=Process[i].WeightWholeTime/Process[i].WholeTime; turn_round_time+=Process[i].WeightWholeTime; w+=f1; printf("时刻%d: 进程%s开始运行。 ",Process[i].ServiceTime,Process[i].Name); printf("%s,%d,%d,%d,%d,%d,%f,%f\n",Process[i].Name,Process[i].ArrivalTime,Process[i].WholeTime,Process[i].ServiceTime,Process[i].FinishTime,Process[i].order,Process[i].WeightWholeTime,f1); } printf("average_turn_round_timer=%f\n",turn_round_time/N); printf("weight_average_turn_round_timer=%f\n",w/N); return0; } 【实例运行结果截图】 实例(教材P92-图3-4) 进程名 A B C D E 平均 到达时间 0 1 2 3 4 服务时间 4 3 5 2 4 FCFS 完成时间 4 7 12 14 18 周转时间 4 6 10 11 14 9 带权周转时间 1 2 2 SJF 完成时间 4 9 18 6 13 周转时间 4 8 16 3 9 8 带权周转时间 1 先来先服务算法(FCFS) 短作业优先算法(SJF)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 先来先 服务 FCFS 作业 优先 SJF 进程 调度 算法