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

专业:商业软件工程  姓名:王泽锴 学号: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. 用PowerMock mock final类constructors

    也相对简单,直接贴代码 被测方法 public class EmployeeServiceWithParam { public void createEmployee(final Employee e ...

  2. android studio使用中遇到的问题

    旧版和新版切换会报错(点击更正, 不影响程序使用) 2.debug正常, 打包签名程序时候报错 String index out of range: -82 java.lang.StringIndex ...

  3. 使用WebDriverWait类处理等待(sleep)的问题

    用selenium进行web UI的自动化开发时,经常遇到loading需要等待的时候,或者需要验证一个action之后某个dialog是否呈现或者消失.对于这类情况是不建议用sleep(xx)来死等 ...

  4. t4 加载文件到解决方案

    Use EnvDTE add/remove multiple files to project By admin | décembre 17, 2013 Un commentaire Project ...

  5. HyperV采用硬盘拷贝的方式迁移虚拟机后的问题处理

    公司有一台RSA认证服务器,是在windows 2008 R2下的虚拟机,最近总是出现服务中断的情况,考虑到宿主机性能较差,于是想迁移到新的服务器中. 本想通过SCVMM来迁移,但因功能不可用,所以采 ...

  6. 调试 zeromq 发现 accept 死循环

    起因:在群里一个同学说使用 zeromq 的时候出了点儿问题,问题描述如下“router连接十几万客户端后,然后把router杀死,重启,这时候zeromq的某个线程99%的cpu,卡死了,再也接受不 ...

  7. MFC中使用FLASH

    一.准备工作 第一步:下载并安装Adobe Flash Player. 从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的Flash Player(大约 ...

  8. FastFDS配置安装

    先说环境: win7旗舰版,配CRT连接虚拟机,虚拟机用的vmware Player,安装的CentOS6.4版本. 1.添加用户 useradd fastdfs 这步可以不做,后面的操作用root账 ...

  9. iOS学习之设计模式

    iOS开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~ (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势:解耦合 敏捷 ...

  10. firefox vimperator插件

    firefox vimperator插件实在是强大,最喜欢的几个功能做个笔记. 如何复制网页上的文字:c进入caret模式,定位cursor到要复制的开始位置--v进入visual模式,用hjkl键选 ...