#include

#include

#define MAX 5 //进程数

/*短作业优先算法*/

struct pro

{

int num; //进程名

int arriveTime; //到达时间

int burst; //运行时间;

struct pro *next;

};

//函数声明

struct pro* creatList();

void insert(struct pro *head,struct pro *s);

struct pro* searchByAT(struct pro *head,int AT);

void run(struct pro *head);

void del(struct pro* p);

int getCount(struct pro *head,int time);

struct pro* creatList() //创建链表,按照进程的到达时间排列

{

struct pro* head=(struct pro*)malloc(sizeof(struct pro));

head->next=NULL;

struct pro* s;

int i;

for(i=0;i

{

s=(struct pro*)malloc(sizeof(struct pro));

printf("请输入进程名:\n");

scanf("%d",&(s->num));

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

scanf("%d",&(s->arriveTime));

printf("请输入运行时间:\n");

scanf("%d",&(s->burst));

s->next=NULL;

insert(head,s);

}

return head;

}

void insert(struct pro *head,struct pro *s) //插入节点

{

struct pro *p=searchByAT(head,s->arriveTime);

s->next=p->next;

p->next=s;

return;

}

struct pro* searchByAT(struct pro *head,int AT) //查找第一个到达时间大于等于AT的节点,返回其前一个指针

{

struct pro *p,*q;

p=head;

q=head->next;

while(q!=NULL&&q->arriveTime<=AT)

{

p=q;

q=q->next;

}

return p;

}

void del(struct pro* p) //删除p的下一个节点

{

struct pro *tmp;

tmp=p->next;

p->next=tmp->next;

free(tmp);

return;

}

int getCount(struct pro *head,int time) //察看当前就绪队列中的进程数

{

int count=0;

struct pro *p,*q;

p=head;

q=p->next;

while(q!=NULL&&q->arriveTime<=time)

{

count++;

p=q;

q=q->next;

}

return count;

}

struct pro* SJF(struct pro *head,int count) //在头节点后的count个节点中选择burst最小的,返回其前一个节点的指针

{

int min;

struct pro *p,*q,*flag;

p=head;

q=p->next;

min=q->burst;

flag=p; //flag记录返回指针

while(count>0)

{

if(q->burst

{

min=q->burst;

flag=p;

}

count--;

p=q;

q=q->next;

}

return flag;

}

void run(struct pro *head) //按短作业优先算法调度进程,并输出其运行情况

{

int time=0,count;

struct pro *s,*t;

while(head->next!=NULL)

{

count=getCount(head,time);

if(count==0) //如果当前就绪队列中没有进程,时间自增

time++;

else if(count==1) //如果就绪队列中只有1个进程,则必定是第一个节点

{

t=head;

s=t->next;

printf("进程名:%d\n",s->num);

printf("到达时间:%d\n",s->arriveTime);

printf("运行开始时间:%d\n",time);

printf("响应时间:%d\n",time-s->arriveTime);

time+=s->burst;

printf("

非抢占式优先算法例题_非抢占短作业优先算法源代码(C语言)相关推荐

  1. 【计算机操作系统】用java模拟非抢占式(先来先到、短作业、高响应比),时间片轮转调度算法

    . 首先,我来介绍一下该程序大致内容 程序使用了ArrayList链表来模拟各进程队列,并且结果会显示出每个时刻的进程的运行信息.最后的所有进程的执行结果和进程的执行顺序. ps:各个模拟程序是相互独 ...

  2. 【操作系统】-- 先来先服务算法(FCFS)、短作业优先算法(SJF)、高响应比调度算法(HRRN)

    一.先来先服务(FCFS) 1.算法思想 主要从公平的角度考虑. 2.算法规则 按照 作业/进程 到达的先后顺序进行服务. 3.是否可抢占 非抢占式算法. 4.是否可导致饥饿 不会导致饥饿. 5.优缺 ...

  3. 非抢占式优先算法例题_三维点云的经典算法与前沿技术有哪些?

    三维点云是最重要的三维数据表达方式之一. 从技术角度看,SLAM.三维重建.机器人感知等领域,点云都是最简单且最普遍的表达方式:相对于图像,点云有其不可替代的优势--深度,即三维点云直接提供了三维空间 ...

  4. 非抢占式优先算法例题_非抢占式高优先级调度算法

    v1.0 可编辑可修改 1 /* 非抢占式高优先级调度算法(优先数越大级别越高) 算法思想: 在按进程达到时间由小到大的顺序输入进程信息后, 先对其优先数进行排列, 将 最先到达的进程的到达时间设为开 ...

  5. fp算法例题_机器学习(九)—FP-growth算法

    本来老师是想让我学Hadoop的,也装了Ubuntu,配置了Hadoop,一时间却不知从何学起,加之自己还是想先看点自己喜欢的算法,学习Hadoop也就暂且搁置了,不过还是想问一下园子里的朋友有什么学 ...

  6. 非抢占式优先算法例题_非抢占式调度算法的实现(非抢占式、不可剥夺式)

    时间如冲冲流水,一转眼间都毕业快一年了.这一年里忙忙碌碌,却又碌碌无为.有时又总想,生亦何苦,死亦何哀. 也好久没更新博文了,之前做了个STM8的脱机编程器,使用了EMWIN,学习到了人家的消息机制. ...

  7. 操作系统【抢占式处理机调度例题、LLF最低松弛度优先算法】

    原文链接: 第3章 处理机调度与死锁45915 - 豆丁网 https://wenku.baidu.com/view/d96159851b5f312b3169a45177232f60ddcce780. ...

  8. 【JAVA操作系统——进程调度】非抢占式短作业优先算法

    测试要求 进程信息如下: 进程 到达时间 服务时间 A 0 3 B 1 6 C 2 4 D 3 9 E 4 1 请输出进程的调度过程,以及系统平均带权周转时间. 代码实现 package com.zj ...

  9. C#进程调度的模拟实现:模拟先来先服务调度算法、短作业优先调度算法和优先级调度算法(考虑非抢占式和抢占式),进行算法评价,输出调度结果和算法评价指标。

    没什么水平,希望能帮到你 环境:visual studio 2019 附带工程资源:C#进程调度的模拟实现附带资源-C#文档类资源-CSDN下载 先来先服务的调度算法:是一种非抢占式的算法,先来先服务 ...

最新文章

  1. MVC、JSP实现mysql的增删改查功能的封装和简陋的界面交互
  2. python selenium自动化获取oracle,python27+selenium3自动化登录测试
  3. 用 Celery 实现邮件推送系统
  4. 你知道Spring是怎么解析配置类的吗?
  5. r语言 xmlto html,R语言XML文件
  6. Request.ServerVariables 参数大全
  7. subline Text3 插件安装
  8. 数据仓库之电商数仓-- 3.4、电商数据仓库系统(ADS层)
  9. response 流和写能一起吗_余甘果蜂蜜能一起吃吗?余甘果泡蜂蜜有什么功效?
  10. vue-router(2.0)
  11. MySQL的安装与连接方法
  12. AWS redshift-hdb pg(Greenplum), 内置函数、数据类型、字符集
  13. 解决使用redis作为session缓存 报错 Error: no such key 的问题
  14. teraterm--一款超好用堪比MobaXterm的远程终端连接软件,能解决shell端tab键等自动补全命令功能的缺失问题
  15. VUE博客模板----FXBLOG
  16. Ubuntu 20.04 多GPU,涡轮GPU 风扇转速手动调节
  17. bootstrap~去除input选中时的蓝色边框线
  18. win10如何调整计算机时间同步,Win10系统如何设置时间同步间隔?修改时间同步频率的方法...
  19. spark系列11:RDD之间的依赖关系,窄依赖和宽依赖
  20. 随机论---生命起源随想

热门文章

  1. visual studio 2017发布dotnet core到docker
  2. Microsoft发布新工具,简化JavaScript Web应用的创建
  3. .NET应用迁移到.NET Core(一)
  4. [转]小白都能看懂的softmax详解
  5. HTTP1.0、HTTP1.1 、SPDY、HTTP2.0之演变过程和优化
  6. 链表之单链表约瑟夫问题(二)
  7. SQL UNION 和 UNION ALL 操作符(mysql)
  8. c2000 汇编语言指令,C2000系CMD文件的配置理解
  9. 神PS!老爸把儿子的画作P成现实,看完我笑哭了
  10. 女生心中的理想男生!这些条件你符合几条?