先来先服务c语言实验报告流程图,先来先服务实验报告.doc

本文档详细介绍了使用C语言实现先来先服务(FCFS)调度算法的实验过程,包括理解算法、编写代码、计算平均周转时间和带权周转时间。实验旨在加深对FCFS算法的理解,适用于作业调度和进程调度。实验源代码展示了如何模拟作业调度,以及如何通过排序和数据结构管理作业状态。
摘要由CSDN通过智能技术生成

先来先服务实验报告

先来先服务调度算法

实验目的

加深对先来先服务算法的理解。

利用C语言编写算法,模拟实现先来先服务算法。

模拟先来先服务算法,并计算平均周转时间和平均带权周转时间。

实验开发平台。

Microsoft Visual C++6.0

调度算法说明

先来先服务调度算法,是一种简单的调度算法,该算法即可用于作业调度,也可用于进程调度,就是每次从就绪队列中选择一个最先进入队列的进程,该算法比较有利于长作业,而不利于短作业。另外,FCFS调度算法对CPU繁忙型作业比较有利,而不利于I/O繁忙作业。

实验源程序。

#include "stdio.h"

#include

#include

#define getpch(type) (type*)malloc(sizeof(type))

#define NULL 0

struct jcb {

char name[10];

char state;/*状态*/

int atime; /*到达时刻*/

int ntime; /*所需时间*/

int ctime; /*完成时刻*/

int stime; /*开始时刻*/

int ttime; /*周转时间*/

float bttime;/*带权周转时间 */

struct jcb* link;

}*ready=NULL,*p,*q;

typedef struct jcb JCB;

float wtime=0,wttime=0,wbttime=0;

sort()

{ if(ready==NULL)

{

p->link=ready;

ready=p;

q=p;

}

else

{ q->link=p;

q=p;

}

}

input()

{ int i,num;

printf("\n 请输入作业数:");

scanf("%d",&num);

for(i=0;i

{

printf("\n 作业号No.%d:\n",i);

p=getpch(JCB);

printf("\n 输入作业名:");

scanf("%s",p->name);

printf("\n 输入作业所需时间:");

scanf("%d",&p->ntime);

printf("\n");

p->atime=i;

p->state='w';

p->link=NULL;

sort(); /* 调用sort函数*/

}

}

int space()

{

int l=0; JCB* pr=ready;

while(pr!=NULL)

{

l++;

pr=pr->link;

}

return(l);

}

disp1(JCB* pr) /*建立作业显示函数,用于显示当前作业*/

{

printf("\n作业名|状态|开始时刻|完成时刻|周转时间|带权周转时间 \n");

printf("%s\t",pr->name);

printf("%c\t",pr->state);

printf("%d\t",pr->stime);

printf("%d\t",pr->ctime);

printf("%d\t",pr->ttime);

printf("%f\t",pr->bttime);

printf("\n");

}

disp2(JCB* pr) /*建立进程显示函数,用于显示当前进程*/

{

printf("\n作业名 |状态|到达时刻 |所需时间 \n");

printf("%s\t",pr->name);

printf("%c\t",pr->state);

printf("%d\t",pr->atime);

printf("%d\t",pr->ntime);

printf("\n");

}

check() /* 建立作业查看函数 */

{

JCB* pr;

pr=ready;

printf("\n ****当前就绪队列状态为:\n"); /*显示就绪队列状态*/

while(pr!=NULL)

{

disp2(pr);

pr=pr->link;

}

}

destroy() /*建立作业撤消函数(作业运行结束,撤消作业)*/

{

printf("\n 作业 [%s] 已完成.\n",p->name);

fre

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值