• 操作系统---实验二、作业调度模拟程序


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

    一、        实验目的

     

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

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

    .实验要求

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

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

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

     

    1. 1.      源程序名:work1.0.cpp

    可执行程序名:work1.0..exe

    1. 2.      原理分析及流程图

    存储结构:结构体数组

    原理分析:根据实验要求,该程序需要对作业信息进行读入、输入、插入、删除等操作,经过选择调度方法,然后输出调度结果。

    实验流程:阅读实验要求,先规划程序结构把程序分为多个部分,然后完善各个部分,最后把各个程序段结合起来à调试

    程序运行流程:根据提示输入相应的数字进行功能的选择。

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

    结构体:

     1 struct msg
     2 {
     3 char name[10];
     4 int startTime;//到达时间
     5 int runTime;//服务时间    
     6 int endTime;//完成时间
     7 int doTime;//调度时间
     8 float turnaroundTime;//周转时间
     9 float weightedTurnaroundTime;//带权周转时间
    10 };

    主函数:

     1 void main(){
     2     
     3     msg user[24];
     4     int n=0;
     5     float averageTime[2];//用数组来存储平均周转时间(下标为0)和带权平均周转时间(下标为1)
     6     int select1;
     7     int select2=1;;
     8     printf("----作业调度算法的C程序模拟----");
     9     
    10     while(1)
    11     {
    12         printf("
    
    	---菜单---
    
    ");
    13         printf("	1.读取作业详情文件
    ");
    14         printf("	2.输入作业信息
    ");
    15         printf("	3.插入作业
    ");
    16         printf("	4.删除作业
    ");        
    17         printf("	5.选择调度算法(默认为先到先服务算法)
    ");            
    18         printf("	6.进行调度并输出结果
    ");
    19         printf("	7.退出
    ");
    20         printf("	---请进行选择(1~7):");
    21         scanf("%d",&select1);
    22         switch(select1)
    23         {
    24         case 1:
    25             n=readFile(user);
    26             break;
    27         case 2:        
    28             n=input(user,n);//接收数据    
    29             break;
    30         case 3:
    31             n=insertTheHomework(user,n);
    32             break;
    33         case 4:
    34             deleteJob(user,n);
    35             if(n>0)
    36                 n--;
    37             break;
    38         case 5:
    39             select2=selectWay();//选择调度算法
    40             break;
    41         case 6:
    42             dealWith(select2,user, averageTime,n);//调度计算
    43             output(user,averageTime,n);//输出结果
    44             break;
    45         case 7:
    46             exit(0);
    47             break;
    48         }
    49     }
    50 }

    存储作业信息的文件:1.txt

    该文件的内容: 

    001 0 100
    002 2 10
    003 30 6
    004 4 2
    005 50 1

    (注意数据之间用制表符分隔开,不然会读取失败)

     源代码地址 :https://github.com/helloyoucan/work/blob/master/work1.0.cpp

    1. 4.      运行结果及分析

    运行结果:

     

     

     

    实验结果符合预料的结果。

     

     

    四、        实验总结

    经过这次作业模拟调度实验,充分地了解到系统是如何调入处理作业的,以及调度作业是用到的几种调度算法。

  • 相关阅读:
    Xcode一些好用的插件,以及这些插件的管理器
    iOS证书说明和发布
    iOS开发—音乐的播放
    POJ 1287 Networking 【最小生成树Kruskal】
    HDU1233 还是畅通工程【最小生成树】
    POJ 1251 + HDU 1301 Jungle Roads 【最小生成树】
    128 编辑器 【双栈】
    154. 滑动窗口【单调队列】
    5. 多重背包问题 II 【用二进制优化】
    4. 多重背包问题 I
  • 原文地址:https://www.cnblogs.com/wucanlong/p/5394924.html
Copyright © 2020-2023  润新知