OS实验报告--FCFS算法
实验二、作业调度模拟实验
专业:商业软件工程 姓名:王泽锴 学号: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算法的更多相关文章
- OS实验报告——作业调度模拟程序
一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行, ...
- 2016级算法第二次上机-B.Bamboo的OS实验
Bamboo的OS实验 分析 首先理解题意,要完成不同数量的不同命令,但是完成相同的命令之间必须有n个间隔,为使得时间最短,自然优先用其他命令来填充这n分钟的时间,由于数量少的命令可以用来填充空隙,所 ...
- OS第1次实验报告:熟悉使用Linux命令和剖析ps命令
零.个人信息 姓名:陈韵 学号:201821121053 班级:计算1812 一.实验目的 熟悉Linux命令行操作 二.实验内容 使用man查询命令使用手册 基本命令使用 三.实验报告 1. 实验环 ...
- UFLDL实验报告3:Self-taught
Self-taught 自我学习器实验报告 1.Self-taught 自我学习实验描述 自我学习是无监督特征学习算法,自我学习意味着算法能够从未标注数据中学习,从而使机器学习算法能够获得更大数量的数 ...
- UFLDL实验报告2:Sparse Autoencoder
Sparse Autoencoder稀疏自编码器实验报告 1.Sparse Autoencoder稀疏自编码器实验描述 自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值, ...
- UFLDL实验报告1: Softmax Regression
PS:这些是今年4月份,跟斯坦福UFLDL教程时的实验报告,当时就应该好好整理的…留到现在好凌乱了 Softmax Regression实验报告 1.Softmax Regression实验描述 So ...
- 20165230 《Java程序设计》实验五《网络编程与安全》实验报告
20165230 <Java程序设计>实验五<网络编程与安全>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...
- 20145207《Java程序设计》实验五(网络编程与安全)实验报告
<Java 程序设计>实验五(网络编程与安全)实验报告 目录 改变 网络编程与安全实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.不过这篇博客我只能做到写 ...
- 20145120 《Java程序设计》实验五实验报告
20145120 <Java程序设计>实验五实验报告 实验名称:Java网络编程 实验内容: 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验内容. ...
随机推荐
- linux安装jdk(以centos安装jdk1.7为例)
1准备工作: 1 虚拟机一台vmware12,安装64位centos 2 oracle官网下载jdk1.7-linux-x64.rpm 3 winscp将jdk传送到linux上面 2开始安装: 1 ...
- 火狐和IE浏览器的兼容问题汇总
1.window.event code=(navigator.appName="Netscape")?event.which:event.keycode; 2.event.x mx ...
- Onedrive 明年初基础容量缩小到5G,执行这一步骤避免(保持30G)
Onedrive作为微软的云盘,相当实用,存储一些照片文档. 之前微软一直执行免费用户可以永久拥有30G空间(基础+开启功能获得). 但微软打算从明年开始减低这一优惠至5G. 不过最近微软有一些放松, ...
- x.2
某些原因,和女朋友分手了,难过 订的M18XR3居然提前了半个多月到货,开心 想想一个人的孤单,还是有点难过 转眼间人生已经过去小半,剩下的除去苟延残喘20年,也就不到20年时间蹦跶.都说人生如戏,既 ...
- Unity 几种碰撞模式
1.OnControllerColliderHit 事件 (角色控制器使用) 2.Physics.Raycast 函数 3.OnTriggerEnter 事件 (碰撞物体使用,给碰撞物体添加碰撞器, ...
- js限制文本框只能输入数字方法小结(转)
这篇文章主要分享下js代码限制文本框中只能输入数字的多个实例,学习下js控制文本框中输入数字的方法,需要的朋友可以参考下 有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数 ...
- Android Studio运行SlidingView报错 FloatMath函数
1,错误信息时这样的(图片百度的,但是提醒的是一样的) 我们点击这个错误提示,就会跳到出错的地方 2,开始的时候觉得很蛋疼,因为这个SlidingView是从别处导过来的,没什么问题把...就很久就 ...
- 触发Full GC执行的情况
除直接调用System.gc外,触发Full GC执行的情况有如下四种. 1. 旧生代空间不足 旧生代空间只有在新生代对象转入及创建为大对象.大数组时才会出现不足的现象,当执行Full GC后空间仍然 ...
- Android编译系统参考手册
build/core/clear_vars.mk Clear out values of all variables used by rule templates 清除LOCAL变量,每个模块的And ...
- 接口json返回 封装
/** * @param string $str * @param string $str2 * 10001 成功 * 10002 失败 * 10003 参数缺少 * */function js ...