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

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

一、        实验目的

 

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.      运行结果及分析

运行结果:

 

 

 

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

 

 

四、        实验总结

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

原文地址:https://www.cnblogs.com/wucanlong/p/5394924.html