作业调度算法(先来先服务算法,短作业算法).doc
上传人:王子****青蛙 上传时间:2024-09-14 格式:DOC 页数:41 大小:352KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

作业调度算法(先来先服务算法,短作业算法).doc

作业调度算法(先来先服务算法,短作业算法).doc

预览

免费试读已结束,剩余 31 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《操作系统》实验报告题目:作业调度算法班级:网络工程姓名:朱锦涛学号:E31314037一、实验目得用代码实现页面调度算法,即先来先服务(FCFS)调度算法、短作业优先算法、高响应比优先调度算法。通过代码得具体实现,加深对算法得核心得理解.二、实验原理1、先来先服务(FCFS)调度算法FCFS就是最简单得调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,系统将按照作业到达得先后次序来进行调度,或者说它就是优先考虑在系统中等待时间最长得作业,而不管该作业所需执行得时间得长短,从后备作业队列中选择几个最先进入该队列得作业,将它们调入内存,为它们分配资源与创建进程.然后把它放入就绪队列。2、短作业优先算法SJF算法就是以作业得长短来计算优先级,作业越短,其优先级越高。作业得长短就是以作业所要求得运行时间来衡量得。SJF算法可以分别用于作业与进程调度。在把短作业优先调度算法用于作业调度时,它将从外存得作业后备队列中选择若干个估计运行时间最短得作业,优先将它们调入内存。3、高响应比优先调度算法高响应比优先调度算法则就是既考虑了作业得等待时间,又考虑了作业得运行时间得算法,因此既照顾了短作业,又不致使长作业等待得时间过长,从而改善了处理机调度得性能。如果我们引入一个动态优先级,即优先级就是可以改变得令它随等待得时间得延长而增加,这将使长作业得优先级在等待期间不断地增加,等到足够得时间后,必然有机会获得处理机.该优先级得变化规律可以描述为:优先权=(等待时间+要求服务时间)/要求服务时间三、实验内容源程序:#include<stdio、h>#include<stdlib、h>#include<time、h>structwork{ﻩintid;intarrive_time;intwork_time;intwait;floatpriority;};typedefstructsjf_work{structworks_work;//数据域ﻩstructsjf_work*pNext;//指针域}NODE,*PNODE;voidFCFS();voidSJF();voidshowmenu();boolIs_empty(PNODEpHead);intcnt_work(PNODEpHead);PNODEdo_work(PNODEpHead,int*w_finish_time,inti);voidshow(int*w_finish_time,inti,PNODEq,int*w_rel_time);voidHRRN();PNODEpriorit(PNODEpHead);voiddo_work_1(PNODEpHead,int*w_finish_time,inti);intmain(){intchoice;//设置选择数showmenu();//显示菜单ﻩscanf(”%d",&choice);ﻩwhile(choice!=0)//选择算法{switch(choice)ﻩ{ﻩﻩcase1:ﻩprintf(”您选择得就是先来先服务算法:\n");ﻩﻩﻩﻩFCFS();ﻩﻩbreak;ﻩﻩcase2:printf(”您选择得就是短作业优先算法:\n”);ﻩSJF();ﻩﻩbreak;ﻩﻩcase3:ﻩﻩﻩﻩprintf(”您选择得就是高响应比优先调度算法\n”);ﻩﻩHRRN();ﻩﻩbreak;default:ﻩﻩprintf(”请重新选择!");ﻩﻩﻩbreak;ﻩ}ﻩﻩprintf(”\n");ﻩprintf(”下面就是菜单,请继续,或者按‘0'退出”);ﻩshowmenu();ﻩscanf(”%d”,&choice);ﻩ}ﻩprintf("感谢您使用本系统,再见!”);return0;}voidFCFS(){ﻩintj,k;intw_rel_time[5];ﻩintw_finish_time[5];floatrel_time=0;structworktemp;inti;structworkw[5];srand(time(0));for(i=0;i<5;i++)ﻩ{ﻩw[i]、id=rand()%10;ﻩw[i]、arrive_time=rand()%10;ﻩw[i]、work_time=rand()%10+1;ﻩ}for(j=0;j〈5;j++){ﻩﻩprintf("第%d个作业得编号就是:%d\t”,j+1,w[j]、id);ﻩﻩp