基于优先级的时间片轮转调度算法(C语言实现)

您所在的位置:网站首页 c语言实现时间片轮转 基于优先级的时间片轮转调度算法(C语言实现)

基于优先级的时间片轮转调度算法(C语言实现)

2024-07-17 16:05:35| 来源: 网络整理| 查看: 265

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。 img img img img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go) img

正文

已剪辑自: http://www.demodashi.com/demo/15341.html

基于优先级的时间片轮转调度算法 1. PCB结构(Block)

pcb

由此定义如下结构体:

typedef struct Block { int processID; // 进程号 int priority; // 优先级 int status; // 状态 double arrivalTime; // 到达时间 double serviceTime; // 服务时间 double runTime; // 已运行时间 struct Block *next; // Next Block } Block;

2. 数据结构(队列)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pvXuaPmI-1669459048842)(/contentImages/image/jianshu/13373683-fc06e9117b622d3e.png)] ]( )

typedef struct Link { struct Block *first; // 指向队头 struct Block *last; // 指向队尾 } Link;

队列操作函数:

initLink:初始化队列

void initLink(Link *l) { // 分配空间并检测是否成功 l->first = l->last = (Block *)malloc(sizeof(Block)); if (!l->first) { fprintf(stderr, “Malloc Error!\n”); exit(-1); } // 空队列 l->first->next = NULL; l->last->next = NULL; }

isEmpty:判断队列是否为空

int isEmpty(Link *l) { return l->first->next == NULL? 1: 0; }

printLInk:输出队列中所有元素的信息

void printLink(Link *l) { Block *p = l->first->next; // 遍历队列并输出 printf (“\nProcess ID\tPriority\tArrival Time\tService Time\tRun Time\tStatus\n”); while (p != NULL) { printf(“\t%d\t%d\t\t%.2lf\t\t%.2lf\t\t%.2lf\t\t%s\n”, p->processID, p->priority, p->arrivalTime, p->serviceTime, p->runTime, p->status == 0? “ready”: “finished”); p = p->next; } }

removeFirst:将队列中第一个元素中的数据复制到给定参数中(用于返回),并删除

void removeFirst(Link *l, Block *b) { Block *t; // 空队列则直接返回 if (isEmpty(l)) { return ; } // t指向第二个Block,用于之后将队列接上 t = l->first->next->next; // 将第一个Block中的内容复制到b中,用于返回 b->processID = l->first->next->processID; b->priority = l->first->next->priority; b->arrivalTime = l->first->next->arrivalTime; b->serviceTime = l->first->next->serviceTime; b->runTime = l->first->next->runTime; b->status = l->first->next->status; // 释放第一个Block,并把队列接上 free (l->first->next); l->first->next = t; }

append:将新的元素添加到队尾

void append(Link *l, Block *b) { Block *t; // 分配空间,并检测是否成功 t = (Block *)malloc(sizeof(Block)); if (t == NULL) { fprintf(stderr, “Malloc Error!\n”); exit(-1); } // 将b中的内容复制到t中 t->processID = b->processID; t->priority = b->priority; t->arrivalTime = b->arrivalTime; t->serviceTime = b->serviceTime; t->runTime = b->runTime; t->status = b->status; // 将t接到队尾 t->next = NULL; l->last->next = t; l->last = t; }

deleteLinkItem:删除队列中指定的元素

void deleteLinkItem(Link *l, Block *target) { Block *p, *t; // 遍历队列,寻找目标Block p = l->first; while (p != NULL && p != target) { t = p; p = p->next; } // 若存在,则释放 if (p != NULL) { t->next = p->next; free§; } }

sortByArrivalTime:根据进程到达时间将队列排序(从小到大)

void sortByArrivalTime(Link *l, int order) { Block *p, *q, *tp, *tq; Block *temp, *min, *tmin; int minArrivalTime; // 这里使用了选择排序 tp = tq = l->first; p = q = l->first->next; while (p != NULL) { // 这个数字可以修改的大一点。。。 minArrivalTime = 9999; while (q != NULL) { // 寻找最小到达时间的Block

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go) img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长! 果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go) [外链图片转存中…(img-fghWD6b1-1713206036662)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭