OS实验报告--FCFS算法

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

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

一、实验目的

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

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

二、实验内容和要求

(1)实验要求

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

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

(2)实验内容

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

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

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

2.     原理分析及流程图

  

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

void FCFS()
{

    //调用输入函数
    base();

    int i,j,k = 0;
    int temp[100];
    for(i=0;i<num;i++)
        temp[i]=i;

    //按作业到达时间进行排序
    for(i=0;i<num;i++){
        for(j=i+1;j<num;j++){
            if(job[temp[i]].arrtime>job[j].arrtime){
                k = temp[i];
                temp[i] = temp[j];
                temp[j] = k;
            }
        }
    }

    //计算周转时间、带权周转时间
    job[temp[0]].startime = job[temp[0]].arrtime;
    job[temp[0]].finitime = job[temp[0]].startime + job[temp[0]].reqtime;
    job[temp[0]].TAtime = (float)job[temp[0]].finitime - job[temp[0]].arrtime;
    job[temp[0]].TAWtime = job[temp[0]].TAtime/job[temp[0]].reqtime;
    for(i=1;i<num;i++){
        job[temp[i]].startime = job[temp[i-1]].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=0;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=0;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算法相对比较容易实现,主要是先到先服务,只要按照到达时间进行排序,然后计算周转时间,带权周转时间,就能很简单的计算出平均周转时间,平均带权周转时间。

 

时间: 2024-10-11 21:33:45

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

数据结构与算法 第四次实验报告 图

数据结构与算法 第四次实验报告 姓名:许恺 学号:2014011329 班级:计算机14-1     中国石油大学(北京)计算机科学与技术系 1.图的定义,文件为"Graph.h" #ifndef GRAPH_H//定义头文件 #define GRAPH_H #include<string>//引入标准库中的头文件 using namespace std; const int MaxSize=12; struct ArcNode//定义边表结点 { int adjvex;/

A1-2017级算法上机第一次练习赛 L Bamboo的OS实验

题目描述 每周五Bamboo都要"恋恋不舍"的早退OS的上机实验千里迢迢来看望大家上机 :) 于是第二天Bamboo就要着手赶OS的ddl. 是这样,这次的OS实验给了x个编号为1-30的命令(比如5个命令1 2 3 3 3 ),要求在小黑窗上自己应用. 假设Bamboo每1分钟能完成一个命令,完成这些命令的顺序无所谓,以1分钟为单元,在1分钟里,Bamboo可以选择完成一个命令或者思考人生.更重要的是,为了不产生崩溃情绪,Bamboo要求在执行两个相同编号的命令之间必须要有n个分钟单

实验二 实验报告

实验二 作业调度模拟程序 13物联网  陈梓帆  201306104108 一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素. 作业调度算法: 1) 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统

UFLDL实验报告3:Self-taught

Self-taught 自我学习器实验报告 1.Self-taught 自我学习实验描述 自我学习是无监督特征学习算法,自我学习意味着算法能够从未标注数据中学习,从而使机器学习算法能够获得更大数量的数据,因而更有可能取得更好的性能.在本实验中,我们将按照自我学习的步骤,使用稀疏自编码器和softmax分类器去构造一个手写数字分类器. 实现流程 Step 1 :产生训输入和测试样本集 Step 2 :训练稀疏自编码器 Step 3 :提取特征 Step 4 :训练和测试softMax分类器 Ste

UFLDL实验报告1: Softmax Regression

PS:这些是今年4月份,跟斯坦福UFLDL教程时的实验报告,当时就应该好好整理的…留到现在好凌乱了 Softmax Regression实验报告 1.Softmax Regression实验描述 Softmax回归模型是逻辑回归模型的推广,它可以把数据分类到两个以上的类别.在本实验中,我们的目标是采用Softmax回归模型对MNIST手写数字数据库进行分类,识别每个手写数字,把它们归类于0到9之间的10个类别.实验中需要计算成本函数J,参数Theta,成本函数的梯度,及预测假设h. Figure

UFLDL实验报告2:Sparse Autoencoder

Sparse Autoencoder稀疏自编码器实验报告 1.Sparse Autoencoder稀疏自编码器实验描述 自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如 .自编码神经网络尝试学习一个 的函数.换句话说,它尝试逼近一个恒等函数,从而使得输出 接近于输入 .当我们为自编码神经网络加入某些限制,比如给隐藏神经元加入稀疏性限制,那么自编码神经网络即使在隐藏神经元数量较多的情况下仍然可以发现输入数据中一些有趣的结构.稀疏性可以被简单地解释如下.如果当神经

20145207《Java程序设计》实验五(Java开发环境的熟悉)实验报告

<Java 程序设计>实验五(网络编程与安全)实验报告 目录 改变 网络编程与安全实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.不过这篇博客我只能做到写好,毕竟里面的东西我说我做得出来我自己都不信.. 代码贴的·,这个真的不会做实话实说 网络编程与安全实验要求 任务一: 编写MyBC.java实现中缀表达式转后缀表达式的功能 编写MyDC.java实现从上面功能中获取的表达式中实现后缀表达式求值的功能 任务二: 结对编程:一人负责客户端,另一人负责服务器 注

实验报告: 人脸识别方法回顾与实验分析 【OpenCV测试方法源码】

趁着还未工作,先把过去做的东西整理下出来~   Github源码:https://github.com/Blz-Galaxy/OpenCV-Face-Recognition (涉及个人隐私,源码不包含测试样本,请谅解~) 对实验结果更感兴趣的朋友请直接看 第5章 [摘要]这是一篇关于人脸识别方法的实验报告.报告首先回顾了人脸识别研究的发展历程及基本分类:随后对人脸识别技术方法发展过程中一些经典的流行的方法进行了详细的阐述:最后作者通过设计实验对比了三种方法的识别效果并总结了人脸识别所面临的困难与

20145321 实验五实验报告

20145321 实验五实验报告 实验五 Java网络编程 1.客户端步骤: 建立网络连接 交换数据:加密使用AES或者DES/AES或者DES加密密钥key并发送 关闭网络连接 2.服务器端步骤: 监听端口 获得连接 交换数据:使用服务器的公钥加密/公钥算法使用RSA或DH/检验发送信息的完整性使用MD5或者SHA3 关闭连接 实验内容 使用Java语言进行网络编程,对明文进行加密 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.掌握密码技术的使用: 实验步骤 查询IP地址:打