欢迎来到天天文库
浏览记录
ID:16112111
大小:60.00 KB
页数:6页
时间:2018-08-08
《网络操作系统 实验2 作业优先调度算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、计算机工程学院实验报告课程名称:网络操作系统班级:实验成绩:指导教师:姓名:实验项目名称:短作业优先调度算法学号上机实践日期:实验项目编号:2组号:上机实践时间:学时一、目的(本次实验所涉及并要求掌握的知识点)1实现短作业优先算法。2了解作业控制块的作用,以及作业控制块的内容和组织方式。二、实验内容与设计思想(设计思路、主要数据结构、主要代码结构、主要代码段分析、电路图)实验内容:1为每个进入系统的作业建立档案以记录和作业相关的信息,例如作业名(以自己的姓名拼音缩写编号,例如,张三同学编写程序所用的作业名是zs1,zs2…..),作业服务时间,作业进入系统的时间
2、,作业开始执行时间,作业完成时间,作业周转时间,平均周转时间,作业信息在存储器中的位置,指向下一个作业控制块的指针等信息。2将系统中等待作业调度的JCB组织成一个队列(后备队列)。当进行作业调度时,从后备队列中查找选择一个执行时间最短的作业将它调入内存运行。3进行作业调度时,计算出每个作业的开始执行时间,完成时间,周转时间和平均周转时间,利用短作业优先算法进行作业调度,并按照完成时间由小到大的顺序显示出来。三、实验使用环境(本次实验所使用的平台和相关软件)Linux虚拟机VC++四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)实验代码:#inclu
3、de#include#includestructtask{charname[4];floatservicetime;//作业服务时间floatgosystemtime;//作业进入系统的时间floatstarttime;//作业开始执行时间floatfinishtime;//作业完成时间floatarounttime;//作业周转时间structtask*next;//指向下一个作业控制块的指针};intr;//作业数structtask*head,*p1,*p2;structtask*createtas
4、k();voidtaskschedule(structtask*s);voidmain(){structtask*t;t=createtask();taskschedule(t);}structtask*createtask(){//创建作业链intn=0;p1=p2=(structtask*)malloc(sizeof(structtask));/*开辟一个新单元*/head=NULL;printf("Pleaseinputthenuberoftask:");scanf("%d",&r);//输入作业数for(inti=0;i5、"Pleaseinputthenameoftask%d:",i+1);scanf("%s",p1->name);//输入作业名printf("Pleaseinputtheservicetime:");scanf("%f",&p1->servicetime);//输入作业服务时间printf("Pleaseinputthetimeoftaskintosystem:");scanf("%f",&p1->gosystemtime);//输入作业进入系统时间n=n+1;/*结点个数加1*/if(n==1)head=p1;/*是第一个结点,置头指针*/else6、p2->next=p1;/*非首结点,将新结点插入到链表尾*/p2=p1;/*设置新的尾结点*/p1=(structtask*)malloc(sizeof(structtask));}p2->next=NULL;return(head);}voidtaskschedule(structtask*s){//作业调度floatservicetim;//用于保存最小服务时间floatgosystemtim;//用于保存最小进入系统时间floatendtime=0;//用语标记作业开始的时间点intflage;//标记时间点内是否有任务floatavaragetime=7、0;structtask*head,*percur,*pres,*l,*t;head=s;structtask*p;p=head;floate=p->gosystemtime;//用于暂时保存最小进入系统时间for(;p->next!=NULL;)//找出最小进入系统时间{if(p->gosystemtime<=e)e=p->gosystemtime;p=p->next;}endtime=e;printf("==============================================================================8、=");printf
5、"Pleaseinputthenameoftask%d:",i+1);scanf("%s",p1->name);//输入作业名printf("Pleaseinputtheservicetime:");scanf("%f",&p1->servicetime);//输入作业服务时间printf("Pleaseinputthetimeoftaskintosystem:");scanf("%f",&p1->gosystemtime);//输入作业进入系统时间n=n+1;/*结点个数加1*/if(n==1)head=p1;/*是第一个结点,置头指针*/else
6、p2->next=p1;/*非首结点,将新结点插入到链表尾*/p2=p1;/*设置新的尾结点*/p1=(structtask*)malloc(sizeof(structtask));}p2->next=NULL;return(head);}voidtaskschedule(structtask*s){//作业调度floatservicetim;//用于保存最小服务时间floatgosystemtim;//用于保存最小进入系统时间floatendtime=0;//用语标记作业开始的时间点intflage;//标记时间点内是否有任务floatavaragetime=
7、0;structtask*head,*percur,*pres,*l,*t;head=s;structtask*p;p=head;floate=p->gosystemtime;//用于暂时保存最小进入系统时间for(;p->next!=NULL;)//找出最小进入系统时间{if(p->gosystemtime<=e)e=p->gosystemtime;p=p->next;}endtime=e;printf("==============================================================================
8、=");printf
此文档下载收益归作者所有