实验二、作业调度模拟实验

专业:商业软件工程  姓名:王泽锴 学号:201406114113

一、实验目的

(1)加深对作业调度算法的理解;

(2)进行程序设计的训练。

二、实验内容和要求

(1)实验要求

  用高级语言编写一个或多个作业调度的模拟程序。

  单道批处理系统的作业调度程序。作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素。

(2)实验内容

  根据指定的实验课题,完成设计、编码和调试工作,完成实验报告。

三、实验方法、步骤及结果测试

1.     源程序名:4.cpp         可执行程序名4.exe

2.     原理分析及流程图

  

3.     主要程序段及其解释:、

void FCFS()
{ //调用输入函数
base(); int i,j,k = ;
int temp[];
for(i=;i<num;i++)
temp[i]=i; //按作业到达时间进行排序
for(i=;i<num;i++){
for(j=i+;j<num;j++){
if(job[temp[i]].arrtime>job[j].arrtime){
k = temp[i];
temp[i] = temp[j];
temp[j] = k;
}
}
} //计算周转时间、带权周转时间
job[temp[]].startime = job[temp[]].arrtime;
job[temp[]].finitime = job[temp[]].startime + job[temp[]].reqtime;
job[temp[]].TAtime = (float)job[temp[]].finitime - job[temp[]].arrtime;
job[temp[]].TAWtime = job[temp[]].TAtime/job[temp[]].reqtime;
for(i=;i<num;i++){
job[temp[i]].startime = job[temp[i-]].finitime;
job[temp[i]].finitime = job[temp[i]].startime + job[temp[i]].reqtime;
job[temp[i]].TAtime = (float)job[temp[i]].finitime - job[temp[i]].arrtime;
job[temp[i]].TAWtime = job[temp[i]].TAtime/job[temp[i]].reqtime;
} printf("经按到达时间排序后,未达到队列是\n");
printf("作业名 到达时间 CPU所需时间 开始时间 结束时间 周转时间 带权周转时间\n"); //输出相关内容
for(i=;i<num;i++)
{
printf(" %s\t %d\t\t%d\t %d\t %d\t %f\t %f\n",job[temp[i]].name,job[temp[i]].arrtime,
job[temp[i]].reqtime,job[temp[i]].startime,job[temp[i]].finitime,job[temp[i]].TAtime,job[temp[i]].TAWtime);
} //计算平均周转时间、平均带权周转时间
for(i=;i<num;i++)
{
AVGTAtime += job[temp[i]].TAtime;
AVGTAWtime += job[temp[i]].TAWtime;
} printf("\n\n平均周转时间=%f\n",AVGTAtime/num);
printf("平均带权周转时间=%f\n\n",AVGTAWtime/num);
}

4.     运行结果及分析

实验分析:实验结果与预期的一致,对于输出内容也进行了测试,也与结果一致。

四、实验总结

    FCFS算法相对比较容易实现,主要是先到先服务,只要按照到达时间进行排序,然后计算周转时间,带权周转时间,就能很简单的计算出平均周转时间,平均带权周转时间。

 

OS实验报告--FCFS算法的更多相关文章

  1. OS实验报告——作业调度模拟程序

    一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行, ...

  2. 2016级算法第二次上机-B.Bamboo的OS实验

    Bamboo的OS实验 分析 首先理解题意,要完成不同数量的不同命令,但是完成相同的命令之间必须有n个间隔,为使得时间最短,自然优先用其他命令来填充这n分钟的时间,由于数量少的命令可以用来填充空隙,所 ...

  3. OS第1次实验报告:熟悉使用Linux命令和剖析ps命令

    零.个人信息 姓名:陈韵 学号:201821121053 班级:计算1812 一.实验目的 熟悉Linux命令行操作 二.实验内容 使用man查询命令使用手册 基本命令使用 三.实验报告 1. 实验环 ...

  4. UFLDL实验报告3:Self-taught

    Self-taught 自我学习器实验报告 1.Self-taught 自我学习实验描述 自我学习是无监督特征学习算法,自我学习意味着算法能够从未标注数据中学习,从而使机器学习算法能够获得更大数量的数 ...

  5. UFLDL实验报告2:Sparse Autoencoder

    Sparse Autoencoder稀疏自编码器实验报告 1.Sparse Autoencoder稀疏自编码器实验描述 自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值, ...

  6. UFLDL实验报告1: Softmax Regression

    PS:这些是今年4月份,跟斯坦福UFLDL教程时的实验报告,当时就应该好好整理的…留到现在好凌乱了 Softmax Regression实验报告 1.Softmax Regression实验描述 So ...

  7. 20165230 《Java程序设计》实验五《网络编程与安全》实验报告

    20165230 <Java程序设计>实验五<网络编程与安全>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...

  8. 20145207《Java程序设计》实验五(网络编程与安全)实验报告

    <Java 程序设计>实验五(网络编程与安全)实验报告 目录 改变 网络编程与安全实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.不过这篇博客我只能做到写 ...

  9. 20145120 《Java程序设计》实验五实验报告

    20145120 <Java程序设计>实验五实验报告 实验名称:Java网络编程 实验内容: 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验内容. ...

随机推荐

  1. 例子:Database - Linq to sql

    DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库. DataCon ...

  2. 10款html5开发工具,实用+好用

    利用HTML5工具不仅可以帮助设计师和开发者创建更具吸引力的网站,还能增加网站的可用性和可访问性.本文收集了10款HTML5开发工具让你在网页中搭建特效.动画.视频.音频等诸多功能,为你节省更多开发时 ...

  3. jQuery是什么?

    jQuery就是javascript的一个库,把我们常用的一些功能进行了封装,方便我们来调用,提高我们的开发效率. 极大地简化了 JavaScript 编程. Javascipt跟jQuery的区别: ...

  4. Android:Layout_weight的深刻理解

    最近写Demo,突然发现了Layout_weight这个属性,发现网上有很多关于这个属性的有意思的讨论,可是找了好多资料都没有找到一个能够说的清楚的,于是自己结合网上资料研究了一下,终于迎刃而解,写出 ...

  5. Intel RealSense SDK 简翻

    :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px ...

  6. loadrunner关联和事务

    1.关联 不关联,录制没有问题,回放时可能会出错. 排除字符限制,输入因素,如果自己手动操作网页时不会报错,回放时报错,那么可以肯定,有数据需要使用关联. 如果录制没有错误,且对脚本没有进行任何修改, ...

  7. Mac下手动安装SafariDriver extension

    环境:Mac OS X Yosemite 10.10.4下, Safari 8 Step 1:第一次运行SafariDriver时,先找到WebDriver extension的安装路径,比如/Use ...

  8. 411. Minimum Unique Word Abbreviation

    A string such as "word" contains the following abbreviations: ["word", "1or ...

  9. Spring学习笔记(3)——Bean的注入方式

    依赖注入 依赖注入支持属性注入.构造函数注入.工厂注入. 属性注入: 属性注入即通过setXxx()方法注入Bean的属性值或依赖对象 属性注入要求Bean提供一个默认的构造函数(无参构造函数),并为 ...

  10. Your build settings specify a provisioning profile with the UUID, no provisioning profile

    在Archive项目时,出现了“Your build settings specify a provisioning profile with the UUID “”, however, no suc ...