版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
石家庄经济学院实验报告(学院)系:信息工程学院专业:网络工程姓名:何秉乾班级:网络2班学号:407109070501指导教师:王建东日期:2010年1月22日
操作系统实验报告姓名何秉乾学号407109070501日期2010/1/11-2010/1/22实验室260机房指导教师王建东设备编号设计题目作业调度一.设计内容模拟批处理多道操作系统的作业调度二.设计目的每个用户请求计算机计算的一个计算任务叫做一个作业。一个作业从输入初始数据到得到计算结果,要经过若7个步骤的相继执行。例如,编辑、编译、运行等,其中每一个步骤称作一个作业步。用户向系统提出作业加工步骤的方式称作业控制方式,作业控制方式有两种:终端控制方式(又称直接控制方式或联机控制方式)和批处理控制方式(又称自动控制方式或脱机控制方式)。在批处理控制方式下,用户采用系统提供的作业控制语言(JCL)写好作业说明书,说明作业加工的步骤。操作员把一批作业组织成输入流,通过“预输入”手段使每个作业的信息(包括作业说明书、源程序、初始数据等)暂存在辅助存储器的“输入井”中。批处理多道操作系统的作业管理后两个任务:作业调度和作业控制。采用多道程序设计方法的操作系统,在系统中要经常保留多个运行的作业,以提高系统效率。作业调度从系统已接纳的暂存在输入井中的一批作业中挑选出若十个可运行的作业,并为这些被选中的作业分配所需的系统资源。对被选中运行的作业必须按照它们各自的作业说明书规定的步骤进行控制。本实习要求学生模拟作业调度的实现,了解作业调度在操作系统中的作用。三.设计过程1、数据结构设计:设一个结构体数组typedefstructwork{charusername[10];//用户名charworkname[10];〃作业名floattime;〃作业运行时间charstate;〃状态R为收谷,A表小执行状态,T为元成intstore;〃主存inttape;//磁带}WORK;WORKw[N];〃工作数组初始化操作printf("初始化:\n");for(i=0;i<N;i++){printf("--请输入第%d个作业的信息--\n”,i+1);printf("第%d个作业:用户名:”,i+1);scanf("%s",w[i].username);printf("第%d个作业:作业名:”,i+1);scanf("%s",w[i].workname);printf("第%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);}2、算法设计:(1)算法选择函数:intchoice()函数功能:根据要求选择FCFS或SFJ。入口参数:c出口参数:i流程图见图1「”始图1作业调度算法选择流程图(2)先来先服务函数(FCFS):intFCFS()函数功能:FCFS的运算过程入口参数:F出口参数:j或-1流程图见图2所示:
图2先进先出算法流程图短作业优先服务函数(SFJ):intSFJ()函数功能:SFJ的运算过程入口参数:S出口参数:j或-1流程图见图3所示:图3短作业优先算法流程图随机数算法操作函数功能:输入随机数模拟处理器调度入口参数:time_t和k出口参数:p和q流程图:无(5)撤离作业算法操作函数功能:主存中的作业按运行的时间来决定撤离的先后次序入口参数:h和l出口参数:H和L流程图见图4所示:图4撤离作业算法流程图(6)主功能函数:voidAdminister()函数功能:实现函数要求。入口参数:无出口参数:无流程图见图5所示:包拈用户名、隼业名、运行时间、状态和资孤要求初始化电脑摘人随机
数
井显示是否大
30,5主存中可同时执行的作
业限定为两道控制中非执行请审,•徜入件是业根捌已在上存
濡运i:的力问输入用户与作
业名『代代该
作业推仃玷柬>置流也业本作
业表中的状态为*W,在共存的作业
致减I的作业法定靛(1心优度分机果用先来
先后外算法和运衽时M
邦配界比尤算法等梅甘业地束,收还资源fl业名*,说切潦作业调入先存对谖作业的伏志由,R.为‘r在主存的作业
数如】图5主功能算法流程图四.源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#defineN5〃作业数#defineT5〃资源数#defineS100〃主存大小typedefstructwork{charusername[10];〃用户名charworkname[10];〃作业名floattime;〃作业运行时间charstate;〃状态R为收容,Z表示执行状态,W为完成intstore;〃主存inttape;//磁带}WORK;intSJF();〃运行时间最短者优先算法intFCFS();//先来先服务intchoiceWork();//选择一个"收容状态",资源能满足的作业voidAdminister。;〃执行程序intt=T;//m为系统中剩余的磁带资源量ints=S;//s为主存剩余大小WORKw[N];〃工作数组voidmain(){inti;printf("初始化:\n");for(i=0;i<N;i++){printf("--请输入第%d个作业的信息--\n”,i+1);printf("第%dj作业:用户名:”,i+1);scanf("%s",w[i].username);printf("第%~个作业:作业名:”,i+1);scanf("%s",w[i].workname);printf("第%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("第%~个作业:磁带:",i+1);scanf("%d”,&w[i].tape);)Administer();//执行程序)voidAdminister()〃执行程序(inti,j,f;intn=0;〃主存中的作业数for(i=0;i<N;i++)if(w[i].state=='Z')(t=t-w[i].tape;s=s-w[i].store;n++;)if(s<0||t<0||n>2)(printf("初始化失败,退出系统\n");return;)charworkname[10];charusername[10];for(;;)(floatp;intk;intq;charb;getchar();time_tt;srand((unsigned)time(&t));printf("电脑随机数是:\n");for(k=0;k<1;k++)q=rand()%10;p=q*0.1;printf("%f\n",p);if(p>0.5)(printf("随机数大于0.5,转入作业表\n");)else(printf("随机数不大于0.5,转入主存\n");}
printf("继续(N)、返回(B)、显示当前著作业状态(D)还是退出系统(Q):");scanf("%s",&b);if(b=='N')(if(p>0.5&&p<=1)(f=0;for(i=0;i<N;i++)if(w[i].state=='R')f=1;if(f==1)〃主存中尚有未被选中的作业(if(t>0&&s>0)〃主存中还能装入作业(j=choiceWork();if(j<0)〃没选到(printf("等待作业执行结束归还资源.\n");continue;}else〃为作业分配资源(t=t-w[j].tape;s=s-w[j].store;w[j].state='Z';n++;if(n>2)(t=t+w[j].tape;s=s+w[j].store;w[j].state='R';n++;printf("主存无法正常运行,返回.\n");continue;}--\n");printf("--显示被调入主存的作业的用户名和作业名--\n");printf("%s%s\n",w[j].username,w[j].workname);continue;}}else(printf("主存中作业满载.\n");continue;)else(printf("请操作员输入作业.\n");))else(if(n==2)(floath=0;floatl=100;intH=-1;intL=-1;for(i=0;i<N;i++)if(w[i].state=='Z'&&w[i].time>h){h=w[i].time;H=i;)elseif(w[i].state=='Z'&&w[i].time<l){H=w[i].time;L=i;)if(H>L){for(i=0;i<N;i++)if(w[i].state=='Z'){printf("作业%$正在执行.\n",w[i].workname);printf("输入用户名(该作业结束):",i);scanf("%s",username);printf("输入作业名(该作业结束):",i);scanf("%s",workname);)for(i=0;i<N;i++)if(strcmp(workname,w[i].workname)==0){w[i].state='W;s+=w[i].store;t+=w[i].tape;n=0;break;))else(for(i=N-1;i>-1;i--)if(w[i].state=='Z')(printf("作业%$正在执行.\n",w[i].workname);printf("输入用户名(该作业结束):",i);scanf("%s",username);printf("输入作业名(该作业结束):",i);scanf("%s",workname);)for(i=N-1;i>-1;i--)if(strcmp(workname,w[i].workname)==0)(w[i].state='W;s+=w[i].store;t+=w[i].tape;n=0;break;))continue;)elseif(n==1)(for(i=0;i<N;i++)〃输出正在执行的作业if(w[i].state=='Z')(printf("作业%s正在执行.\n",w[i].workname);printf("输入用户名(该作业结束):”,i);scanf("%s",username);printf("输入作业名(该作业结束):",i);scanf("%s",workname);)for(i=0;i<N;i++)if(strcmp(workname,w[i].workname)==0)(w[i].state='W;s+=w[i].store;t+=w[i].tape;n=0;break;)continue;)else(printf("主存中没有作业.\n");continue;)))if(b=='B')(printf("返回重新随即.\n");continue;)if(b=='Q')(break;)if(b=='D')(printf("--显示众作业当前的信息--\n",i+1);printf("用户名\t作业名\t运行时间\t状态\t主存\t磁带\n");for(i=0;i<N;i++)(printf("%s\t%s\t%f\t%s\t%d\t%d\n",w[i].username,w[i].workname,w[i].time,&w[i].state,w[i].store,w[i].tape);))))intchoiceWork()//选择一个"收容状态",资源能满足的作业(inti;charc;getchar();printf("用先来先服务算法,或者用运行时间最短者优先算法ForS:");scanf("%c",&c);switch(c)(case'F':i=FCFS();break;case'S':i=SJF();break;)returni;)intFCFS()//先来先服务(inti;for(i=0;i<N;i++)〃查找工作状态为"收容"的资源量可满足的作业if(w[i].state=='R'&&w[i].store<=s&&w[i].tape<=t)break;if(i>=0&&i<N)returni;elsereturn-1;)intSJF()//运行时间最短者优先算法(inti,j=-1;floatk=100;//100为任意给的值,可以换任意的大于最长作业时间的数for(i=0;i<N;i++)if(w[i].state=='R'&&w[i].store<=s&&w[i].tape<=t&&w[i].time<k)(k=w[i].time;j=i;)returnj;)五.运行结果:1.作业表初始化操作自心B0--L1L4息C0.息D0.信CZV*,信DZ?,的:.•间R583的:,•间R10业名名时……业名名时……业名名时……业名名时……业名名时……$业复心业行态业行态业行太业行个星运状主磁个星运状主磁个翼运状主磁个曜运状主磁个翠运状主磁知请个个个个个个#■个个个个个个!■个个个个个个主K及仆怀仆怀<■个个个个个个次门¥111111^^222222^333333fl444444--^5555552.随机函数不大于0.5,转入主存・间R303业名名时
g业行态需
个星运状主磁f>SB■c业业业业业业解个个个个个个机股不>,没
随00数<N中
脑10瞿存3.随机数大于0.5,查看主存,并按先进先出算法调度4..随机数大于0.5,查看主存,并按短作业优先服务算法调度>SQ;cS事>SQ;cS事F系0七Fuuh态翳售焉业间和作时名济户前运用表当岗作显或作人”转B>毒=5,豕算主是0,艇务人数于L服调W00大r露遁00数<N来示脑60量先显CZV火随继用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年放射性核素遥控后装机项目评价分析报告
- 2024至2030年中国锡制杯垫行业投资前景及策略咨询研究报告
- 2023年洗碗清洁剂项目综合评估报告
- 2023年工程和技术研究与试验发展服务项目综合评估报告
- 2024年酒店家具项目综合评估报告
- 2024年轻工涂料项目成效分析报告
- 2024至2030年中国管带直料半自动蛇形弯管机数据监测研究报告
- 2024至2030年中国方便式料桶数据监测研究报告
- 2024至2030年中国小阴角线数据监测研究报告
- 足太阳膀胱经、穴1(题后含答案及解析)
- 垫片冲压模具设计毕业设计论文
- 常见矩形管规格表
- 高中学生社区服务活动记录表
- Python-Django开发实战
- 小学道法小学道法1我们的好朋友--第一课时ppt课件
- 配电箱安装规范
- 中英文商务派遣函样板
- 幼儿园大班主题教案《超市》含反思
- 弯臂车床夹具设计说明书
- 企业员工健康管理存在的问题与解决途径探讨
- 浅谈初中数学教学新课标理念的运用
评论
0/150
提交评论