zoukankan      html  css  js  c++  java
  • 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("经按到达时间排序后,未达到队列是
    ");
        printf("作业名  到达时间  CPU所需时间  开始时间  结束时间  周转时间  带权周转时间
    ");
    
        //输出相关内容
        for(i=0;i<num;i++)    
        {
            printf("  %s	   %d		%d	  %d	    %d	   %f	   %f
    ",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("
    
    平均周转时间=%f
    ",AVGTAtime/num);
        printf("平均带权周转时间=%f
    
    ",AVGTAWtime/num);
    }

    4.     运行结果及分析

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

    四、实验总结

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

     

  • 相关阅读:
    软件工程第一次结对作业
    软件工程第二次作业
    vue之vuex
    ceshi
    第3次 结构与部分
    第二次作业
    获得领跑衫感言
    期末总结
    第十四,十五周作业
    第七周作业
  • 原文地址:https://www.cnblogs.com/wangzekai/p/5395000.html
Copyright © 2011-2022 走看看