




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上实验六 进程调度算法模拟一、 实验类型 本实验为设计性实验。二、 实验目的与任务1) 通过对进程调度算法的设计,加深对进程调度原理的理解,进一步掌握各种调度算法的特征;2) 针对你所选择的算法的模拟情况进行对算法进行评价(通过比较计算平均周转时间和平均带权周转时间)。三、 预习要求1) 理解各调度算法原理;2) 理解平均周转时间和平均带权周转时间四、 实验基本原理(1) 设计程序模拟先来先服务(FCFS)进程调度、短进程优先调度(SJF)、高响应比优先调度(HRN)、最高优先权优先调度、时间片轮转调度等算法,要求比较所选算法的平均周转时间和平均带权周转时间,可选用C
2、、C+或Java 等编程语言中任一种语言。(2)自设模拟的情景,但要求至少包括四个进程调度。注意,问题情境最好允许用户设定。即当程序启动时,应允许用户可以选择不同的调度算法;然后用户从控制台输入各个进程的信息,进程信息输入完毕后,就开始了进程调度。参考代码如下:(3) 认真完成实验报告,同时要求说明模拟的情境、数据结构的使用,程序流程图或步骤,并给出实验结果分析和实验小结;五、 实验仪器与设备(或工具软件)实验设备:计算机一台;六、 实验内容 参考代码如下 #include"stdio.h"#include"stdlib.h"void dayin();t
3、ypedef struct PCB /定义进程控制块char num2; /进程号char state; /运行状态int tijiaotime; /提交进程时间int starttime; /进程开始时间int finishtime; /结束时间int needtime; /运行需要时间float roundtime; /周转时间float weightroundtime; /带权周转时间struct PCB *next; /指向下个进程pcb;int time=10000,n; /计时器 (假设当前时间)float sumroundtime=0,sumweightroundtime=0,a
4、vgroundtime,avgweightroundtime; /定义全局平均变量。pcb *head=NULL,*p,*q; / 进程全局指针。void run_fcfs(pcb *p1) /进程执行过程time = p1->tijiaotime > time? p1->tijiaotime:time; / 获得真正的当前时间。p1->starttime=time;/printf("n现在时间是%d,开始运行进程%sn",time,p1->num);time+=p1->needtime;p1->state='F'p
5、1->finishtime=time;p1->roundtime=p1->finishtime-p1->tijiaotime;p1->weightroundtime=(float)(p1->finishtime-p1->tijiaotime)/(float)p1->needtime;sumroundtime+=p1->roundtime;sumweightroundtime+=p1->weightroundtime;void run_spf(pcb *p1,int t) /模拟进程执行过程p1->starttime=t;p1-&
6、gt;state='W'p1->finishtime=t+p1->needtime;p1->roundtime=p1->finishtime-p1->tijiaotime;p1->weightroundtime=(p1->finishtime-p1->tijiaotime)/(float)p1->needtime;sumroundtime+=p1->roundtime;sumweightroundtime+=p1->weightroundtime;void fcfs() /从队首分别取出进程(找到满足条件的进程,
7、并执行。)int i,j,t;for(j=0;j<n;j+)p=head;t=10000;for(i=0;i<n;i+) /找到当前未完成的最早进程if(p->tijiaotime<t && p->state='W')t=p->tijiaotime;q=p; /标记当前未完成的进程p=p->next;run_fcfs(q);avgroundtime=sumroundtime/n;avgweightroundtime=sumweightroundtime/n;/void spf() /从队首分别取出进程(找到满足条件的最短
8、进程,并执行。)int i,j,t,k,futmin,flag;t=10000;/p=head;for(i=0;i<n;i+) /找到当前未完成的最短进程if(p->tijiaotime<t && p->state='F') t=p->tijiaotime;/记录范围内。最早完成时间。 p=p->next; / k=0;while(k<n) flag=0;futmin=10000;/最小的一个服务时间。(在范围内总是可以找到最小的一个服务时间。)p=head;for(i=0;i<n;i+) /找到当前未完成的进程i
9、f(p->tijiaotime<=t &&p->state='F'&& p->needtime<=futmin)futmin=p->needtime;/ 每一次都要修改当前最早时间。q=p; /标记当前未完成的进程flag=1; p=p->next;if(flag=1)k+;run_spf(q,t);t=t+q->needtime; /t为当前时间。用于筛选进程 下一个进程的当前时间。elset=10000;/p=head;for(i=0;i<n;i+) /找到当前未完成的进程if(p->
10、;tijiaotime<t&&p->state='F')t=p->tijiaotime;/记录范围内。最早完成时间。p=p->next;avgroundtime=sumroundtime/n;avgweightroundtime=sumweightroundtime/n; /void getInfo() /创建进程int num;printf("n请输入进程个数:");scanf("%d",&n);printf("n依次输入%d个进程:n",n);dayin();prin
11、tf("进程名 到达时间 运行时间n");for(num=0;num<n;num+)p=(pcb *)malloc(sizeof(pcb);if(head=NULL) head=p;q=p;dayin();scanf("%st%dt%d",&p->num,&p->tijiaotime,&p->needtime);if(p->tijiaotime < time) time=p->tijiaotime; /记录最早时间。q->next=p;p->starttime=0;p->
12、finishtime=0;p->roundtime=0;p->weightroundtime=0;p->next=NULL;p->state='W'q=p;void display()printf("nn进程名tt");p=head;while(p!=NULL)printf("%st",p->num);p=p->next;printf("平均");printf("n到达时间t");p=head;while(p!=NULL)printf("%dt"
13、;,p->tijiaotime);p=p->next;printf("n运行时间t");p=head;while(p!=NULL)printf("%dt",p->needtime);p=p->next;printf("n开始运行时间t");p=head;while(p!=NULL)printf("%dt",p->starttime);p=p->next;p=head;printf("n完成时间t");while(p!=NULL)printf("%dt
14、",p->finishtime);p=p->next;p=head;printf("n周转时间t");while(p!=NULL)printf("%0.1ft",p->roundtime);p=p->next;printf("%0.1fn",avgroundtime);p=head;printf("带权周转时间t");while(p!=NULL)/printf("%0.1ft",p->roundtime);printf("%0.1ft"
15、,p->weightroundtime);p=p->next;printf("%0.1fn",avgweightroundtime);dayin(); printf("平均周转时间为%0.1fn",avgroundtime);printf("平均带权周转时间为%0.1fn",avgweightroundtime); dayin();void dayin()printf("-n");void main() /mian函数dayin();printf("tt先来先服务优先调度算法和短进程优先调度模拟实现nn&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某著名企业7s模型
- 消防工程师物业管理服务试题及答案
- 深入研究二级消防工程师试题及答案
- 2025年入团考试试题及答案成功密钥
- 2025年中级会计考点与试题及答案
- 2025年一级建造师备考秘籍试题及答案
- 医疗科技发展与患者隐私保护的平衡
- 便捷复习2024年高级会计试题及答案
- 风力发电技术-风电场管理(新能源发电技术)
- 初级审计基础知识提纲与试题及答案
- 福建省厦门市2025届高中毕业班高三5月第四次质量检测物理试卷(厦门四检)
- 非谓语动词动词不定式
- 《慢性阻塞性肺疾病》课件
- 家校共育 静待花开 课件高二下学期学考动员家长会
- 2025年济南市中区九年级中考数学一模考试试题(含答案)
- 大模型原理与技术-课件 chap6 大模型微调
- 消费者心理与行为分析PPT(第四版)完整全套教学课件
- TSG11-2020 锅炉安全技术规程
- 铸件尺寸公差ISO-8062-3(2007)
- 大盈江三级水电站工程项目划分规划初稿
- GB∕T 40112-2021 地质灾害危险性评估规范
评论
0/150
提交评论