欢迎来到天天文库
浏览记录
ID:44216532
大小:198.07 KB
页数:9页
时间:2019-10-19
《王赫操作系统实验四》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、学校代码:10128学号:201320905069胡弟夬寧《计算机操作系统》实验报告题目:先来先服务FCFS和短作业优先SJF进程调度算法学生姓名:王赫学院:理学院系别:数学系信息与计算科学班级:信计13-2班任课教师:杜雅娟二O—六年五月—、实验目的通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。二、实验内容问题描述:设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在T1,…,Tn时刻到达系统,它们需耍的服务时间分别为S1,…,Sno分别采用先来先服务FCFS和短作业
2、优先SJF进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转吋间。程序要求如下:1)进程个数n;每个进程的到达时间T1,…,Tn和服务时间S1,…,Sn;选择算法1-FCFS,2-SJFo2)要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等;4)输出:要求输岀计算出来的每个进程的周转时间,带权周转吋间
3、,所有进程的平均周转吋间,带权平均周转吋间。三、实验代码及截图头文件FCFS.h#include#defineMaxNum100intArrivalTime;intScrviccTimc;intFinishTime;intWholeTime;intrun_flag;intorder;〃到达时间〃开始运行时间//运行结束吋间〃运行时间〃调度标志〃运行次序structProccss_struct{intNumber;charName[MaxNumJ;〃进程编号〃进程名称doubleWcightWholcTimc;〃周转时间doubleAv
4、erageWT_FCFS,AverageWT_SJF;〃平均周转时间doubleAverageWWT_FCFS,AverageWWT.SJF;〃平均带权周转时间}Process[MaxNum];intN;〃实际进程个数intFCFS();〃先来先服务intFCFS(){〃先来先服务算法inti;inttemp_time=0;〃当前时间tcmp_tiiTic=Proccss[0].ArrivalTimc;for(i=0;i5、ssfi].ServiceTime+Processfi].WholeTime;Proccss[i].run_flag=l;temp_time=Process[i]-FinishTime;Process[i].order=i+1;(return0;头文件SJF.h#includeintSJF();〃短作业优先intSJF(){〃短作业优先算法inttemp_time=0;〃当期那时间inti=(),j;intnumber_schedul,temp_counter;〃进程编号,当前已执行进程个数floatrun_time;run_time6、=Process[i].WholeTime;j=l;while((j7、j].AiTivalTime))〃判断是否有两个进程同时到达{if(Process[jJ.WholeTime8、ess[number_schedulJ.ArrivalTime;Process[number_schedulJ.FinishTime=Process[number_schedul].ServiceTime+Process[number_schedul].WholeTime;Process[number_schedul].run_flag=1;temp_time=Process[number_schedul].FinishTime;Process[number_schedulJ.order=1;temp_counter=l;while(temp_count9、er
5、ssfi].ServiceTime+Processfi].WholeTime;Proccss[i].run_flag=l;temp_time=Process[i]-FinishTime;Process[i].order=i+1;(return0;头文件SJF.h#includeintSJF();〃短作业优先intSJF(){〃短作业优先算法inttemp_time=0;〃当期那时间inti=(),j;intnumber_schedul,temp_counter;〃进程编号,当前已执行进程个数floatrun_time;run_time
6、=Process[i].WholeTime;j=l;while((j7、j].AiTivalTime))〃判断是否有两个进程同时到达{if(Process[jJ.WholeTime8、ess[number_schedulJ.ArrivalTime;Process[number_schedulJ.FinishTime=Process[number_schedul].ServiceTime+Process[number_schedul].WholeTime;Process[number_schedul].run_flag=1;temp_time=Process[number_schedul].FinishTime;Process[number_schedulJ.order=1;temp_counter=l;while(temp_count9、er
7、j].AiTivalTime))〃判断是否有两个进程同时到达{if(Process[jJ.WholeTime8、ess[number_schedulJ.ArrivalTime;Process[number_schedulJ.FinishTime=Process[number_schedul].ServiceTime+Process[number_schedul].WholeTime;Process[number_schedul].run_flag=1;temp_time=Process[number_schedul].FinishTime;Process[number_schedulJ.order=1;temp_counter=l;while(temp_count9、er
8、ess[number_schedulJ.ArrivalTime;Process[number_schedulJ.FinishTime=Process[number_schedul].ServiceTime+Process[number_schedul].WholeTime;Process[number_schedul].run_flag=1;temp_time=Process[number_schedul].FinishTime;Process[number_schedulJ.order=1;temp_counter=l;while(temp_count
9、er
此文档下载收益归作者所有