教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

操作系统fcfs和sjf及hrn算法

来源:网络收集 时间:2026-08-26
导读: 将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。 #includestdio.h #includemalloc.h #includewindows.h typedef struct inode { char pid;//进程名 int ta;//到达时间 int tf;//服务时间 float quan;//权值计算 int zho

将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。

#include<stdio.h>

#include<malloc.h>

#include<windows.h>

typedef struct inode

{

char pid;//进程名

int ta;//到达时间

int tf;//服务时间

float quan;//权值计算

int zhout;//周转时间

float quan_zhout;//带权周转时间

struct inode *next;

}LNode,*LinkList;

//单链表的创建当输入的x为0是结束

LinkList Create_LinkList()

{

LinkList L=NULL;

LNode *s;

int flag=0;

char x;int y,z;

printf("创建链表按照倒序插入输入0时结束链表\n");

printf("输入PID:");

scanf("%c",&x);

printf("输入到达时间:");

scanf("%d",&y);

printf("输入服务时间:"); scanf("%d",&z); while( !(y==0&&z==0)) { s=(LNode *)malloc(sizeof(LNode)); s->pid=x; s->ta=y; s->tf=z; s->next=L; L=s; fflush(stdin);//清空输入内容缓冲区 printf("输入PID:"); scanf("%c",&x); printf("输入到达时间:"); scanf("%d",&y); printf("输入服务时间:"); scanf("%d",&z); }

将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。

printf("链表创建结束\n");

return L;

}

//计算优先权

float quan(LNode *p,int t)

{

float quan;

quan=(float)(t-(p->ta)+p->tf)/(float)p->tf;

return quan;

}

//初始化所有结点的优先权

LinkList init_quan(LinkList L,int t)

{

LNode *p;

p=L;

p->quan=quan(p,t);

//printf("%f\n",p->quan);

while(p->next)

{

p=p->next;

p->quan=quan(p,t);

//printf("%f\n",p->quan);

}

return L;

}

//在单链表L中查找第i个元素结点,找到返回指针,否则返回空

LNode *Get_LinkList(LinkList L,int i)

{

LNode *p=L;

int j=0;

while(p->next!=NULL&&j<i)

{p=p->next;j++;}

if(j==i)return p;

else return NULL;

}

//单链表的长度

int Length_LinkList(LinkList L)

{

LNode *p=L;

int j=1;

while(p->next)

{

p=p->next;j++;

将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。

return j;

}

//求平均带权周转时间

float avg_quan_zhou(LinkList L)

{

float sum=0;

for(int i=0;i<Length_LinkList(L);i++)

{

sum=Get_LinkList(L,i)->quan_zhout+sum;

}

return sum/Length_LinkList(L);

}

//求平均周转时间

float avg_zhou(LinkList L)

{

float sum=0;

for(int i=0;i<Length_LinkList(L);i++)

{

sum=Get_LinkList(L,i)->zhout+sum;

}

return sum/Length_LinkList(L);

}

//求链表中第i个结点后的结点中最小的到达时间

int min_ta(LinkList L,int i)

{

LNode *p;

p=L;

int min=Get_LinkList(L,i)->ta;//min初始为第一个节点的到达时间

for(int j=i+1;i<Length_LinkList(L);i++)

{

if(Get_LinkList(L,i)->ta<min)

min=Get_LinkList(L,i)->ta;

}

return min;

}

//链表的简单输出

void printf2(LinkList H)

{

LNode *p=H;int i=0;

printf("%c",p->pid);

while(p->next)

将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。

i++;

p=p->next;

printf("%c",p->pid);

}

}

//链表的的输出

void printf(LinkList H)

{

LNode *p=H;int i=0;

printf("新程序%c到达时间为%d执行需%d秒\n",p->pid,p->ta,p->tf);

for( i=1;i<=p->tf;i++)

{

printf("程序%c正在执行。。。还需%d秒\n",p->pid,p->tf+1-i);

Sleep(1000);

}

printf("程序%c结束\n",p->pid);

while(p->next)

{

i++;

p=p->next;

printf("新程序%c到达时间为%d执行需%d秒\n",p->pid,p->ta,p->tf);

for(int i=1;i<=p->tf;i++)

{

printf("程序%c正在执行。。。还需%d秒\n",p->pid,p->tf+1-i);

Sleep(1000);

}

printf("程序%c结束\n",p->pid);

}

printf("平均周转时间为%3.2f,平均带权

间%3.2f\n",avg_zhou(H),avg_quan_zhou(H));

}

//单链表L的第i位置插入结点q

LinkList Insert_LinkList(LinkList L,int i,LNode *q)

{

LNode *s,*p;

if(i==0)

{

p=Get_LinkList(L,0);

s=(LNode *)malloc(sizeof(LNode));

s->pid=q->pid;s->ta=q->ta;s->tf=q->tf;

s->next=p; 周转时

将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。

} return L; } p=Get_LinkList(L,i-1); if(p==NULL) { printf("参数%d错误",i); } else { s=(LNode *)malloc(sizeof(LNode)); s->pid=q->pid;s->ta=q->ta;s->tf=q->tf; s->next=p->next; p->next=s; } return L;

//删除单链表L第i个数据结点

LinkList Del_LinkList(LinkList L,int i)

{

LinkList p,s;

s=L;

p=Get_LinkList(L,i-1);

if(p==NULL)

{printf("第%d个结点不存在",i-1);}

else

{

p->next=p->next->next;

}

return L;

}

//单链表的排序,先到先服务(FCS)算法,规则:先比较到达时间,在比较服务时间 LinkList fcs_LinkList(LinkList L)

{

LNode *p,*q;

int i,j;

int t=0;//当前时间

for( i=0;i<(Length_LinkList(L));i++)

{

printf("i=%d ",i);

for(j=i+1;j<Length_LinkList(L);j++)

{

printf("j=%d ",j);

将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。

q=Get_LinkList(L, j); if(q- …… 此处隐藏:3061字,全部文档内容请下载后查看。喜欢就下载吧 ……

操作系统fcfs和sjf及hrn算法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/126239.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)