如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
《操作系统》实验指导书一、多道程序的转换调度(学时2)实现多道程序的转换调度题目要求:(作业调度和进程调度结合在一起)作业流信息是从指定文本文件(TXT文件)中读取作业信息:作业号进入系统时间估计运行时间优先级内存需求量磁带机需求量都为整型作业调度算法:1、先来先服务;2、最短作业优先(二者选一)进程调度算法:1、先来先服务;2、基于优先级的算法(静态优先级)(二者选一)输出:作业序列格式:作业号时间间隔1800-810(/*8:00-8:10*/)2810-9001900-930平均周转时间:总的周转时间/作业总数周转时间就是作业结束时间减去作业进入系统时间示例:#include<stdio.h>#include<string.h>#include<process.h>#include<stdlib.h>#include<conio.h>#definenull0#definelensizeof(structjnote)structjcb{intstate;intnum;intin;intrun;intpri;intmem;inttape;}job[50];structjnote{intid;intin;intstart;intrun;intend;intpri;intsize;inttape;int*maddr;structjnote*next;};intrest=4,memory[101],*mh=memory,logo=0,fid=0;structjcb*p=job;structjnote*jh=null,*rp=null,*jp=null;txt()/*从txt文件中作业流*/{FILE*fp;charpt;inti,space=0,j=0,data[100],h,k,count;charstr[10];for(i=0;i<100;i++)data[i]=-1;for(i=0;i<20;i++){job[i].num=-1;job[i].tape=-1;job[i].state=-1;}i=0;fp=fopen("job.txt","r+");if(fp==NULL){printf("Cann'tthefile\n");exit(0);}while((pt=getc(fp))!=EOF){if(pt>='0'&&pt<='9'){str[i]=pt;i++;space=0;}else{if(pt==''||pt=='\n'){if(space==1)continue;else{str[i]='\0';data[j]=atoi(str);j++;i=0;space=1;}}}}for(h=0,k=0;data[k]!=-1;k++,h++){job[h].num=data[k];k++;job[h].in=data[k];k++;job[h].run=data[k];k++;job[h].pri=data[k];k++;job[h].mem=data[k];k++;job[h].tape=data[k];}if(job[h-1].tape==-1){str[i]='\0';job[h-1].tape=atoi(str);}clrscr();for(i=0;job[i].num!=-1;i++);return(i);}rpend(start,run)/*计算进程的结束时间*/intstart,run;{intend=0;inti=start%100+run;end=(start/100+i/60)*100+i%60;return(end);}time_time(end,in)/*计算周转时间或计算剩余的运行时间*/intin,end;{inttime;time=end/100*60+end%100-(in/100*60+in%100);return(time);}int*m_pd(intsize)/*内存判断*/{int*mp,*cp;inti=0;mp=cp=mh;while(*mp!=-1){while(*cp==0){cp++;i++;}if(i>=size)return(mp);while(*cp==1)cp++;mp=cp;}return(null);}zy_div_free(mp,msize,tape,h)/*资源分配与释放*/int*mp,msize,tape,h;{int*cp,i=msize;cp