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

     

  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/wangzekai/p/5395000.html
Copyright © 2011-2022 走看看