操作系统进程调度算法.doc

操作系统进程调度算法.doc

ID:57613135

大小:108.50 KB

页数:8页

时间:2020-08-29

操作系统进程调度算法.doc_第1页
操作系统进程调度算法.doc_第2页
操作系统进程调度算法.doc_第3页
操作系统进程调度算法.doc_第4页
操作系统进程调度算法.doc_第5页
资源描述:

《操作系统进程调度算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、郑州xxx学院实验报告课程名称:先来先服务调度算法模拟姓名:xxx学号:xxx专业班级:xxx任课教师:xxx2015年04月12日实验报告成绩评定表评定项目内容满分评分总分实验态度态度端正、遵守纪律、出勤情况20实验过程按要求完成算法设计、代码书写、注释清晰、运行结果正确40报告撰写报告书写规范、内容条理清楚、表达准确规范、上交及时。40评语:指导老师签字:年月日实验一作业调度一、目的与任务目的:了解并掌握作业调度的功能,熟悉并掌握各种作业调度算法。任务:模拟实现先来先服务或者短作业优先调度算法。二、内容、要求与安排1、实验内容模拟实现FCFS/SJF调度。设置作业体:作业名,作业的到

2、达时间,服务时间,作业状态(W——等待,R——运行,F——完成),作业间的链接指针;作业初始化:由用户输入作业名、服务时间、到达时间进行初始化,同时,初始化作业的状态为W。显示函数:在作业调度前、调度中和调度后进行显示。排序函数:对等待状态的作业按照调度算法排序(不同的调度算法排序方式不同),注意考虑到达时间。调度函数:每次从等待队列队首调度已到达的适合的作业执行,状态变化。当服务结束时,状态变为F。删除函数:撤销状态为F的作业。2、实验要求(1)测试数据可以随即输入或从文件中读入;(2)必须要考虑到作业的到达时间;(3)最终能够计算每一个作业的周转时间、带权周转。三、测试1.实验设计说

3、明本次实验采用C语言模拟对N个进程采用先来先服务进程调度算法调度。每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:进程标识数ID[3]、进程名name[10]、进程状态state、进程到达时间arrivetime、进程开始执行时间starttime、进程执行结束时间finishtime、服务时间servicetime、周转时间turnaroundtime、带权周转时间weightedturnaroundtime、队列指针next用来将PCB排成队列。主要程序流程图(进程的执行过程):2.实验代码#include"stdio.h"#include"stdlib.h"typed

4、efstructPCB//定义进程控制块{charID[3];//进程号charname[10];//进程名charstate;//运行状态intarrivetime;//到达时间intstarttime;//进程开始时间intfinishtime;//进程结束时间intservicetime//服务时间floatturnaroundtime;//周转时间floatweightedturnaroundtime;//带权周转时间structPCB*next;//指向下个进程}pcb;inttime;//计时器intn;//进程个数pcb*head=NULL,*p,*q;//进程链表指针vo

5、idrun_fcfs(pcb*p1)//运行未完成的进程{time=p1->arrivetime>time?p1->arrivetime:time;p1->starttime=time;printf("现在时间是%d,开始运行作业%s",time,p1->name);time+=p1->servicetime;p1->state='T';p1->finishtime=time;p1->turnaroundtime=p1->finishtime-p1->arrivetime;p1->weightedturnaroundtime=p1->turnaroundtime/p1->serv

6、icetime;printf("ID到达时间开始时间服务时间完成时间周转时间带权周转时间");printf("%s%6d%10d%10d%8d%10.1f%10.2f",p1->ID,p1->arrivetime,p1->starttime,p1->servicetime,p1->finishtime,p1->turnaroundtime,p1->weightedturnaroundtime);}voidfcfs()//找到当前未完成的进程{inti,j;p=head;for(i=0;istate=='F'){q=p;//标记当前未完成的进程run_f

7、cfs(q);}p=p->next;}}voidgetInfo()//获得进程信息并创建进程{intnum;printf("作业个数:");scanf("%d",&n);for(num=0;numID,&p->name,&p->arri

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

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

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