您所在位置: 网站首页 / 先来先服务算法.docx / 文档详情
先来先服务算法.docx 立即下载
2024-11-04
约3千字
约5页
0
81KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

先来先服务算法.docx

先来先服务算法.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

20 金币

下载文档

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

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

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

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

实验报告
题目

名称
C语言实现调度算法程序设计实验报告-先来先服务FCFS
院系
a
班级

完成时间

指导老师


本次实验成绩



主
要
原
理
及
所
参
考
的
资
料
算法原理:
设计程序模拟进程的先来先服务FCFS过程。假设有n个进程分别在T1,…,Tn时刻到达系统,它们需要的服务时间分别为S1,…,Sn。分别采用先来先服务FCFS调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。
程序要求如下:
1)进程个数n;每个进程的到达时间T1,…,Tn和服务时间S1,…,Sn。
2)要求采用先来先服务FCFS调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;
3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等;
4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。
主要参考书:
计算机操作系统第三版西安电子科技大学出版社汤小丹主编

主
要
算
法
具
体
实
验
步
骤
实现提示:
用C语言实现提示:
1)程序中进程调度时间变量描述如下:
	staticintMaxNum=100;
intArrivalTime[MaxNum];
	intServiceTime[MaxNum];
	intFinishTime[MaxNum];
	intWholeTime[MaxNum];
	doubleWeightWholeTime[MaxNum];
	doubleAverageWT_FCFS;
doubleAverageWWT_FCFS;
2)进程调度的实现过程如下:
变量初始化;
接收用户输入n,T1,…,Tn,S1,…,Sn;
按照选择算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间;
计算所有进程的平均周转时间和平均带权周转时间;
按格式输出调度结果。









实
验
要
求
程序流程图
P=HEAD;i=0
P=Q;P=P->NEXT;
P=P->NEXT;
Q->STARTTIME=TIME
Q->STATE=’T’
……

开始
i++;输出执行进程信息
结束
P->STATE==’F’?
Q->ARRIVETIME>TIME?

i<n?
Q->STARTTIME=ARRIVETIME
Q->STATE=’T’
……
Y
N
Y
N
N
Y

程序源代码
#include"stdio.h"
#include"stdlib.h"
typedefstructPCB//定义进程控制块
{	charname[10];//进程名
	charstate;//运行状态
	intArriveTime;//到达时间
	intStartTime;//进程开始时间
	intFinishTime;//进程结束时间
	intServiceTime;//服务时间
	floatWholeTime;//周转时间
	floatWeightWholeTime;//带权周转时间
	doubleAverageWT_FCFS;//平均周转时间
	doubleAverageWWT_FCFS;//带权平均周转时间
	structPCB*next;//指向下个进程
}pcb;
doublex=0,y=0;
inti;
	inttime;//计时器
	intn;//进程个数
pcb*head=NULL,*p,*q;//进程链表指针
voidrun_FCFS(pcb*p1)//运行未完成的进程
{
	time=p1->ArriveTime>time?p1->ArriveTime:time;
	p1->StartTime=time;
	printf("\n时刻:%d,当前开始运行作业%s\n\n",time,p1->name);
	time+=p1->ServiceTime;
	p1->state='T';
	p1->FinishTime=time;
	p1->WholeTime=p1->FinishTime-p1->ArriveTime;
	p1->WeightWholeTime=p1->WholeTime/p1->ServiceTime;
		x+=p1->WholeTime;
		y+=p1->WeightWholeTime;
		p1->AverageWT_FCFS=p1->WholeTime/n;
	p1->AverageWWT_FCFS=p1->WeightWholeTime/n;
	printf("到达时间开始时间服务时间完成时间周转时间带权周转时间\n");
	printf("%6d%10d%10d%8d%10.1f%
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

先来先服务算法

文档大小:81KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用