FCFS和SJF进程调度算法实验报告材料.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
xx大学 操作系统 实验报告 姓名: 学号: 班级: 实验日期: 实验名称:先来先服务FCFS和短作业优先SJF进程调度算法 实验一 先来先服务FCFS和短作业优先SJF进程调度算法 1. 实验目的: 通过这次实验,理解FCFS和SJF进程调度算法的运行原理,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。: 2. 需求分析 (1) 输入的形式和输入值的范围; 输入:进程个数N 范围:0N=100 依次输入(进程名 进程到达时间 范围:0time=100 进程服务时间) 范围:0time=100 选择一种算法:1—FCFS,2—SJF 范围:1或2或0 0—退出 (2) 输出的形式 进程名字 到达时间 运行时间 开始运行时间 结束时间 执行顺序 周转时间 带权周转时间 时刻*:进程*开始运行 *** *** *** *** *** *** *** *** 时刻*:进程*开始运行 *** *** *** *** *** *** *** *** 。 。 。 。 平均周转时间: 平均带权周转时间: (3) 程序所能达到的功能 输入进程的个数N,以及每个进程的到达时间和运行时间。通过选择FCFS或是SJF进程调度算法进行调度,计算出每个进程的 开始运行时间、结束时间、执行顺序、周转时间、带权周转时间,并最终求得 平均周转时间 和 平均带权周转时间。 (4) 测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。 正确一(FCFS) 正确二(SJF) 输入参数错误 3、概要设计 所有抽象数据类型的定义: static int MaxNum=100; int ArrivalTime[MaxNum];//到达时间 int ServiceTime[MaxNum];//服务时间 int FinishTime[MaxNum];//结束时间 int WholeTime[MaxNum];//周转时间 double WeightWholeTime[MaxNum];//带权周转时间 double AverageWT_FCFS,AverageWT_SJF; //平均周转时间 double AverageWWT_FCFS,AverageWWT_SJF; //平均带权周转时间 主程序的流程: 变量初始化 接受用户输入的N,T1…..Tn,S1….Sn; 选择算法进行进程调度,计算进程的开始运行时间、结束时间、执行顺序、周转时间、带权周转时间; 计算所有进程的平均周转时间、平均带权周转时间; 按照格式输出调度结果。 各程序模块之间的层次(调用)关系 Main函数通过对Pinput函数进行调用,对函数的成员变量进行赋值,再通过算法的选择对算法函数进行选择调用,求出题目要求的各个数据结果,最后通过Poutput函数对结果进行格式输出。 4、详细设计 实现程序模块的具体算法。 int FCFS(){ //先来先服务算法 int i; int temp_time=0; temp_time=Process[0].ArrivalTime; for(i=0;iN;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; } return 0; } int SJF() //短作业优先算法 { int temp_time=0; int i=0,j; int number_schedul,temp_counter; double run_time; run_time=Process[i].WholeTime; j=1; while((jN)(Process[i].ArrivalTime==Process[j].ArrivalTime )) { if(Process[j].WholeTime Process[i].WholeTime ) { run_time=Process[i].WholeTime ; i=j; } j++; } number_schedul=i; Process[number_schedul].ServiceTime=Process[number_schedul].ArrivalTime ; Process[

文档评论(0)

dmz158 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档