您好,欢迎来到尔游网。
搜索
您的当前位置:首页操作系统实验报告一处理机调度

操作系统实验报告一处理机调度

来源:尔游网
实验课程名称:

实验项目名称 实验者 同组者 处理机调度 专业班级 实验成绩 组别 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一、 实验内容描述(问题域描述) 实验目的: 掌握处理机调度的相关内容,对进程调度算法有深入理解。 实验内容: 模拟实现进程调度功能。 实验要求: 1、 任选一种高级语言实现; 2、 选择1-2种调度算法; 3、 能够输入进程的基本信息,如进程名、提交时间、预估运行时间等; 4、 根据选择的调度算法显示进程调度顺序; 5、 显示完成调度后每个进程的开始时间、完成时间呢、周转时间,带权周转时间; 6、 计算平均周转时间和平均带权周转时间。 二、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 数据结构: 一个作业的描述结构: struct WORK { int num;//进程序号 float startTim;//开始时间 float upTim;//提交时间 float offTim;//结束时间 float costTim;//耗费时间长度 float Ti;//周转时间 float Tr;//带权周转时间 }; 功能框图及功能说明: 主函模块 先入先出算法模输入模块 返回 拟模块 调用 调用 相关时间计算模返回 处理机调度函数块 调用 调用模块 调用 短进程优先算法 返回 返回 模拟模块 输出模块 功能说明: 输入模块、输出模块:负责进程的输入及模拟结果的输出; 处理机调度函数调用模块:选择调用算法完成进程调度; 先入先出算法模拟模块、短进程优先算法模拟模块:实际完成模拟调度功能; 相关时间计算模块:计算开始时间、结束时间,周转时间,带权周转时间。 三、主要仪器设备及耗材 硬件:pc机; 软件:windows2007旗舰版、VS 2010开发环境。 第二部分:实验调试与结果分析(可加页) 一、 实验源程序: # include using namespace std; struct WORK { int num;//进程序号 float startTim;//开始时间 float upTim;//提交时间 float offTim;//结束时间 float costTim;//耗费时间长度 float Ti;//周转时间 float Tr;//带权周转时间 }; void FIFO(WORK *workspace,int workNum); void SJF(WORK *workspace,int workNum); void SUM(WORK *workspace,int workNum,float *T,float *W); int main() { int num; float upTim; float costTim; int workNum; cout<<\"请输入需要被调度的作业的数目:\"<>workNum; WORK *workspace=new WORK[workNum]; cout<<\"请依次输入需要被调度的作业(输入格式:作业序号 作业提交时间(用数字表示) 执行时间):\"<>num>>upTim>>costTim && nFIFO\\n\"<<1<<\"--->最短优先\"<>cho; switch(cho) { case 0: FIFO(workspace,workNum); SUM(workspace,workNum,T,W);break; case 1: SJF(workspace,workNum); SUM(workspace,workNum,T,W);break; } cout<<\"执行顺序\"<<\"\\"<<\"提交时间\"<<\"\\"<<\"执行时间\" <<\"\\"<<\"开始时间\"<<\"\\"<<\"结束时间\"<workspace[j+1].upTim) //大数沉底 { WORK temp; temp=workspace[j+1]; workspace[j+1]=workspace[j]; workspace[j]=temp; } } void SJF(WORK *workspace,int workNum) { float MinUptime=0;//最早的提交时间 FIFO(workspace,workNum);//先按提交时间排序 MinUptime=workspace[0].upTim+workspace[0].costTim; for(int i=0;iworkspace[j+1].costTim) //提交时间大且耗时多的作业沉底 { WORK temp; temp=workspace[j+1]; workspace[j+1]=workspace[j]; workspace[j]=temp; } } else { MinUptime=workspace[j].upTim+workspace[j].costTim;//更新 } } } void SUM(WORK *workspace,int workNum,float *T,float *W) { *T=0; *W=0; for(int i=0;i

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务