实验六-进程调度算法模拟实现.docx

实验六-进程调度算法模拟实现.docx

ID:57279424

大小:17.64 KB

页数:11页

时间:2020-08-08

实验六-进程调度算法模拟实现.docx_第1页
实验六-进程调度算法模拟实现.docx_第2页
实验六-进程调度算法模拟实现.docx_第3页
实验六-进程调度算法模拟实现.docx_第4页
实验六-进程调度算法模拟实现.docx_第5页
资源描述:

《实验六-进程调度算法模拟实现.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验六进程调度算法模拟一、实验类型本实验为设计性实验。二、实验目的与任务1)通过对进程调度算法的设计,加深对进程调度原理的理解,进一步掌握各种调度算法的特征;2)针对你所选择的算法的模拟情况进行对算法进行评价(通过比较计算平均周转时间和平均带权周转时间)。三、预习要求1)理解各调度算法原理;2)理解平均周转时间和平均带权周转时间四、实验基本原理(1)设计程序模拟先来先服务(FCFS)进程调度、短进程优先调度(SJF)、高响应比优先调度(HRN)、最高优先权优先调度、时间片轮转调度等算法,要求比较所选算法的平均周转时间和平均带权周转时间,可选用C、C++或Java等编程语言中任一种语

2、言。(2)自设模拟的情景,但要求至少包括四个进程调度。注意,问题情境最好允许用户设定。即当程序启动时,应允许用户可以选择不同的调度算法;然后用户从控制台输入各个进程的信息,进程信息输入完毕后,就开始了进程调度。参考代码如下:(3)认真完成实验报告,同时要求说明模拟的情境、数据结构的使用,程序流程图或步骤,并给出实验结果分析和实验小结;五、实验仪器与设备(或工具软件)实验设备:计算机一台;六、实验内容[参考代码如下]#include"stdio.h"#include"stdlib.h"voiddayin();typedefstructPCB//定义进程控制块{charnum[2];/

3、/进程号charstate;//运行状态inttijiaotime;//提交进程时间intstarttime;//进程开始时间intfinishtime;//结束时间intneedtime;//运行需要时间floatroundtime;//周转时间floatweightroundtime;//带权周转时间structPCB*next;//指向下个进程}pcb;inttime=10000,n;//计时器(假设当前时间)floatsumroundtime=0,sumweightroundtime=0,avgroundtime,avgweightroundtime;//定义全局平均变量。

4、pcb*head=NULL,*p,*q;//进程全局指针。voidrun_fcfs(pcb*p1)//进程执行过程{time=p1->tijiaotime>time?p1->tijiaotime:time;//获得真正的当前时间。p1->starttime=time;//printf("现在时间是%d,开始运行进程%s",time,p1->num);time+=p1->needtime;p1->state='F';p1->finishtime=time;p1->roundtime=p1->finishtime-p1->tijiaotime;p1->weightroundti

5、me=(float)(p1->finishtime-p1->tijiaotime)/(float)p1->needtime;sumroundtime+=p1->roundtime;sumweightroundtime+=p1->weightroundtime;}voidrun_spf(pcb*p1,intt)//模拟进程执行过程{p1->starttime=t;p1->state='W';p1->finishtime=t+p1->needtime;p1->roundtime=p1->finishtime-p1->tijiaotime;p1->weightroundtime=(p1-

6、>finishtime-p1->tijiaotime)/(float)p1->needtime;sumroundtime+=p1->roundtime;sumweightroundtime+=p1->weightroundtime;}voidfcfs()//从队首分别取出进程(找到满足条件的进程,并执行。){inti,j,t;for(j=0;jtijiaotimestate=='W'){t=p->tijiaotime;q=p;//标记当前未完成的进程

7、}p=p->next;}run_fcfs(q);}avgroundtime=sumroundtime/n;avgweightroundtime=sumweightroundtime/n;}/////////////////////////////////////////////////////////////////voidspf()//从队首分别取出进程(找到满足条件的最短进程,并执行。){inti,j,t,k,futmin,flag;t=10000;///p=he

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。