欢迎来到天天文库
浏览记录
ID:27948438
大小:71.50 KB
页数:15页
时间:2018-12-07
《操作系统a实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一作业调度一、实验目的本实验的目的是通过模拟作业调度算法的设计加深对作业管理基本原理的理解。二、实验原理作业管理是用户与操作系统的接口。作业调度的主要功能是检查系统是否能满足用户作业的资源要求以及按照一定的算法选取作业。三、主要仪器及耗材1.硬件:IBM-PC机及其兼容机。2.软件环境:(1)操作系统DOS3.0以上、windows、unix、linux。(2)c语言编程工具四、实验内容与步骤1.采用先来先服务算法和运行时间最短者优先算法模拟设计作业调度程序。2.本实验模拟作业调度,所以可以不考虑有关“预输入”程序的工作。假定“预
2、输入”程序已经把一批作业的信息存放在输入井了,并为它们建立了如下的作业表:用户名作业名状态运行时间资源要求 主存磁带AZYA收容0.3小时15K2BZYB收容0.5小时60K1CZYC收容0.1小时50K3DZYD收容0.4小时10K2EZYE收容0.1小时30K3其中状态分为三种:收容状态--作业已在输入井,当尚未被选中执行:执行状态--作业被选中,正在执行;完成状态--作业执行结束。3.程序代码:#include#include#include#include3、e.h>#defineN5//作业数#defineT5//资源数#defineS100//主存大小typedefstructwork{charusername[10];//用户名charworkname[10];//作业名floattime;//作业运行时间charstate;//状态R为收容,Z表示执行状态,W为完成intstore;//主存inttape;//磁带}WORK;intSJF();//运行时间最短者优先算法intFCFS();//先来先服务intchoiceWork();//选择一个"收容状态",资源能满足的作业voi4、dAdminister();//执行程序intt=T;//m为系统中剩余的磁带资源量ints=S;//s为主存剩余大小WORKw[N];//工作数组voidmain(){inti;printf("初始化:");for(i=0;i5、%d个作业:运行时间:",i+1);scanf("%f",&w[i].time);printf("第%d个作业:状态:",i+1);scanf("%s",&w[i].state);printf("第%d个作业:主存:",i+1);scanf("%d",&w[i].store);printf("第%d个作业:磁带:",i+1);scanf("%d",&w[i].tape);}Administer();//执行程序}voidAdminister(){//执行程序inti,j,f;intn=0;//主存中的作业数for(i=0;i6、+)if(w[i].state=='Z'){t=t-w[i].tape;s=s-w[i].store;n++;}if(s<07、8、t<09、10、n>2){printf("初始化失败,退出系统");return;}charworkname[10];charusername[10];for(;;){floatp;intk;intq;charb;getchar();time_tt;srand((unsigned)time(&t));printf("电脑随机数是:");for(k=0;k<1;k++)q=rand()%10;p=q*0.1;11、printf("%f",p);if(p>0.5){printf("随机数大于0.5,转入作业表");}else{printf("随机数不大于0.5,转入主存");}printf("继续(N)、返回(B)、显示当前著作业状态(D)还是退出系统(Q):");scanf("%s",&b);if(b=='N'){if(p>0.5&&p<=1){f=0;for(i=0;i0&&s>0){//主存中还能装入作业j=cho12、iceWork();if(j<0){//没选到printf("等待作业执行结束归还资源.");continue;}else{//为作业分配资源t=t-w[j].tape;s=s-w[j].store;w[j].sta
3、e.h>#defineN5//作业数#defineT5//资源数#defineS100//主存大小typedefstructwork{charusername[10];//用户名charworkname[10];//作业名floattime;//作业运行时间charstate;//状态R为收容,Z表示执行状态,W为完成intstore;//主存inttape;//磁带}WORK;intSJF();//运行时间最短者优先算法intFCFS();//先来先服务intchoiceWork();//选择一个"收容状态",资源能满足的作业voi
4、dAdminister();//执行程序intt=T;//m为系统中剩余的磁带资源量ints=S;//s为主存剩余大小WORKw[N];//工作数组voidmain(){inti;printf("初始化:");for(i=0;i5、%d个作业:运行时间:",i+1);scanf("%f",&w[i].time);printf("第%d个作业:状态:",i+1);scanf("%s",&w[i].state);printf("第%d个作业:主存:",i+1);scanf("%d",&w[i].store);printf("第%d个作业:磁带:",i+1);scanf("%d",&w[i].tape);}Administer();//执行程序}voidAdminister(){//执行程序inti,j,f;intn=0;//主存中的作业数for(i=0;i6、+)if(w[i].state=='Z'){t=t-w[i].tape;s=s-w[i].store;n++;}if(s<07、8、t<09、10、n>2){printf("初始化失败,退出系统");return;}charworkname[10];charusername[10];for(;;){floatp;intk;intq;charb;getchar();time_tt;srand((unsigned)time(&t));printf("电脑随机数是:");for(k=0;k<1;k++)q=rand()%10;p=q*0.1;11、printf("%f",p);if(p>0.5){printf("随机数大于0.5,转入作业表");}else{printf("随机数不大于0.5,转入主存");}printf("继续(N)、返回(B)、显示当前著作业状态(D)还是退出系统(Q):");scanf("%s",&b);if(b=='N'){if(p>0.5&&p<=1){f=0;for(i=0;i0&&s>0){//主存中还能装入作业j=cho12、iceWork();if(j<0){//没选到printf("等待作业执行结束归还资源.");continue;}else{//为作业分配资源t=t-w[j].tape;s=s-w[j].store;w[j].sta
5、%d个作业:运行时间:",i+1);scanf("%f",&w[i].time);printf("第%d个作业:状态:",i+1);scanf("%s",&w[i].state);printf("第%d个作业:主存:",i+1);scanf("%d",&w[i].store);printf("第%d个作业:磁带:",i+1);scanf("%d",&w[i].tape);}Administer();//执行程序}voidAdminister(){//执行程序inti,j,f;intn=0;//主存中的作业数for(i=0;i6、+)if(w[i].state=='Z'){t=t-w[i].tape;s=s-w[i].store;n++;}if(s<07、8、t<09、10、n>2){printf("初始化失败,退出系统");return;}charworkname[10];charusername[10];for(;;){floatp;intk;intq;charb;getchar();time_tt;srand((unsigned)time(&t));printf("电脑随机数是:");for(k=0;k<1;k++)q=rand()%10;p=q*0.1;11、printf("%f",p);if(p>0.5){printf("随机数大于0.5,转入作业表");}else{printf("随机数不大于0.5,转入主存");}printf("继续(N)、返回(B)、显示当前著作业状态(D)还是退出系统(Q):");scanf("%s",&b);if(b=='N'){if(p>0.5&&p<=1){f=0;for(i=0;i0&&s>0){//主存中还能装入作业j=cho12、iceWork();if(j<0){//没选到printf("等待作业执行结束归还资源.");continue;}else{//为作业分配资源t=t-w[j].tape;s=s-w[j].store;w[j].sta
6、+)if(w[i].state=='Z'){t=t-w[i].tape;s=s-w[i].store;n++;}if(s<0
7、
8、t<0
9、
10、n>2){printf("初始化失败,退出系统");return;}charworkname[10];charusername[10];for(;;){floatp;intk;intq;charb;getchar();time_tt;srand((unsigned)time(&t));printf("电脑随机数是:");for(k=0;k<1;k++)q=rand()%10;p=q*0.1;
11、printf("%f",p);if(p>0.5){printf("随机数大于0.5,转入作业表");}else{printf("随机数不大于0.5,转入主存");}printf("继续(N)、返回(B)、显示当前著作业状态(D)还是退出系统(Q):");scanf("%s",&b);if(b=='N'){if(p>0.5&&p<=1){f=0;for(i=0;i0&&s>0){//主存中还能装入作业j=cho
12、iceWork();if(j<0){//没选到printf("等待作业执行结束归还资源.");continue;}else{//为作业分配资源t=t-w[j].tape;s=s-w[j].store;w[j].sta
此文档下载收益归作者所有