zoukankan      html  css  js  c++  java
  • 1112实验二报告

    实验二 作业调度模拟程序

    13物联网  谢敏  201306104116

    一、 实验目的

    1. 实验目的

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

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

    2.实验要求

    用高级语言编写一个或多个作业调度的模拟程序。按照模拟数据的到达时间和所需运行时间,执行FCFS, SJF和HRRN调度算法,程序计算各作业的开始执行时间,各作业的完成时间,周转时间和带权周转时间(周转系数)。

    二、 实验内容

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

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

    1. 源程序名1.c ;可执行程序名:1.exe

         2.原理分析及流程图

    先定义一个进程的结构体,内容包括进程名称、到达时间、执行时间、开始时间、完成时间、周转时间。再让客户输入,接着输入要用的算法,然后系统显示该算法运行完的结果。

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

    main()
    {
        struct stu s[MAX];
        int i,j,p;
        printf("输入进程的个数:");
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            getchar();
            printf("输入第个%d进程的名字:",i+1);
            scanf("%c",&s[i].name);
            printf("输入第%d个进程的到达时间:",i+1);
            scanf("%d",&s[i].gettime);
            printf("输入第%d个进程的执行时间:",i+1);
            scanf("%d",&s[i].time);
            s[i].kstime=0;
            s[i].wctime=0;
            s[i].zztime=0;
        }
        printf("            name  gettime  time  kstime  wctime  zztime
    ");
        for(j=0;j<n;j++)
        {
        printf("jinchen      %c      %d      %d      %d       %d       %d
    ",s[j].name,s[j].gettime,s[j].time,s[j].kstime,s[j].wctime,s[j].zztime);
        }
        while(1)
        {
        printf("请选择要使用的算法:1,FCFS;2,SJF;3,HRRF:");
        scanf("%d",&p);
        switch(p)
        {
        case 1:
            fcfs(s);
            break;
        case 2:
            sjf(s);
            break;
        case 3:
            hrrf(s);
            break;
        }
        }
    }
    void fcfs(struct stu d[])
    {
        int i,j,q;
        struct stu tim;
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(d[i].gettime>d[j].gettime)
                {
                    tim=d[i];
                    d[i]=d[j];
                    d[j]=tim;
                }
            }
        }
        q=d[0].gettime;
        for(i=0;i<n;i++)
        {
            if(q<d[i].gettime)
                q=d[i].gettime;
            d[i].kstime=q;
            d[i].wctime=q+d[i].time;
            d[i].zztime=d[i].wctime-d[i].gettime;
            q=q+d[i].wctime;
        }
        printf("以下是FCFS的调度结果:
    ");
        printf("            name  gettime  time  kstime  wctime  zztime
    ");
        for(j=0;j<n;j++)
        {
        printf("jinchen      %c      %d      %d      %d       %d       %d
    ",d[j].name,d[j].gettime,d[j].time,d[j].kstime,d[j].wctime,d[j].zztime);
        }
    }
    void sjf(struct stu d[])
    {
        int i,j,q;
        struct stu tim;
        q=d[0].gettime;
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(d[j].gettime<=q)
                {
                    if(d[i].time>d[j].time)
                    {
                        tim=d[i];
                        d[i]=d[j];
                        d[j]=tim;
                    }
                }
            }
            q=q+d[i].time;
        }
    
        q=d[0].gettime;
        for(i=0;i<n;i++)
        {
            if(q<d[i].gettime)
                q=d[i].gettime;
            d[i].kstime=q;
            d[i].wctime=q+d[i].time;
            d[i].zztime=d[i].wctime-d[i].gettime;
            q=q+d[i].wctime;
        }
        printf("以下是SJF的调度结果:
    ");
        printf("            name  gettime  time  kstime  wctime  zztime
    ");
        for(j=0;j<n;j++)
        {
        printf("jinchen      %c      %d      %d      %d       %d       %d
    ",d[j].name,d[j].gettime,d[j].time,d[j].kstime,d[j].wctime,d[j].zztime);
        }
    }

     4.运行结果及分析

    四、 实验总结

    由于我的能力有限,我自己只做出了两个算法,第三个算法实在想不出来怎么做。本次的实验主要的问题是根据算法的思想来为进程排序,其中最简单的是fcfs算法,至于hrrf算法,我自己找不到方法来给它排序,导致做不出来。

  • 相关阅读:
    字符数组数据映射转换到实体对象model注解方式 demo
    字符数组转换及数字求和 java8 lambda表达式 demo
    java8 Lambda及Stream学习笔记
    java读取txt文件行的两种方式对比
    sftp jsch文件移动备份的思路
    APOI2009-抢掠计划
    NOIP2011
    省选算法(转)
    割点
    实验十 团队作业6:团队项目用户验收&Beta冲刺
  • 原文地址:https://www.cnblogs.com/aa88/p/4959804.html
Copyright © 2011-2022 走看看