第一范文网 - 专业文章范例文档资料分享平台

实现进程调度算法

来源:用户分享 时间:2025/6/24 20:22:13 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实现进程调度算法

[实验目的]

通过该实验加深和提高对进程调度知识的掌握。 [实验内容及要求]

用C语言实现下列要求,并写出实验报告,报告内容包括:题目、

目的、内容和要求、程序清单、运行情况(输入、输出)、总结。

现有一批给定的进程P1、P2、P3、P4、P5,它们到达时间和要求

运行时间如下:

进程 P1 p2 p3 p4 p5 到达时间 0 1 2 3 4 运行时间 5 3 2 6 1 (1)分别输出采用短进程优先调度算法SPF、先来先服务FCFS调度算法时,各进程的周转时间、带权周转时间及平均周转时间和平均带权周转时间,比较两种算法哪个性能好。 (2)输出两种调度算法的进程完成顺序。

源程序为:

#include #include struct process {

char pname; float arrivetime; float servetime; float finishtime; float roundtime; float droundtime; float waittime; float yxq; };

struct process pro[100];

void fcfs(struct process pro[],int n); void sjf(struct process pro[],int n);

struct process *sortarrivetime(struct process pro[],int n); void print(struct process pro[],int n); void main() {

int n,i;

printf(\请输入有几个进程:\ scanf(\ for(i=0;i

fcfs(pro,n); sjf(pro,n); }

struct process *sortarrivetime(struct process pro[],int n) {

int i,j;

struct process itemp; int flag;

for(i=1;i

flag=0; for(j=0;jpro[j+1].arrivetime) { itemp=pro[j]; pro[j]=pro[j+1]; pro[j+1]=itemp; flag=1; } } if(flag==0) break; }

return pro; }

void print(struct process pro[],int n) {

int i;

float Sumroundtime=0,Sumdroundtime=0; float averoundtime,avedroundtime; for(i=0;i

averoundtime=Sumroundtime/n; avedroundtime=Sumdroundtime/n;

printf(\进程名\\t到达时间\\t服务时间\\t完成时间\\t周转时间\\t带全周转\ for(i=0;i

printf(\pro[i].servetime,pro[i].finishtime,pro[i].roundtime,pro[i].droundtime); }

printf(\平均值\\t\\t\\t\\t\\t\\t\\t%.2f\\t\\t%.2f\\n\}

void fcfs(struct process pro[],int n) {

int i;

pro=sortarrivetime(pro,n);

pro[0].finishtime=pro[0].arrivetime+pro[0].servetime; pro[0].roundtime=pro[0].finishtime-pro[0].arrivetime; pro[0].droundtime=pro[0].roundtime/pro[0].servetime;

for(i=1;i

printf(\先来先服务:\\n\\n\ print(pro,n); }

void sjf(struct process pro[],int n) {

int i;

pro=sortarrivetime(pro,n);

pro[0].finishtime=pro[0].arrivetime+pro[0].servetime; for(i=1;ipro[i-1].finishtime) { pro[i].finishtime=pro[i].arrivetime+pro[i].servetime; } else { int k=0; for(int m=i;mpro[l].servetime) {

搜索更多关于: 实现进程调度算法 的文档
实现进程调度算法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c49ddg8ngi49o8y29xxdf_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top