首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

java进程调度中为什么进程名都是1

发布网友 发布时间:2022-04-22 07:12

我来回答

1个回答

热心网友 时间:2022-06-17 07:42

摘要Linux2.4版本使用的调度算法的时间复杂度为O(n),其主要原理是通过轮询所有可运行任务列表,然后挑选一个最合适的任务运行,所以其时间复杂度与可运行任务队列的长度成正比。而Linux2.6开始替换成名为 O(1)调度算法,顾名思义,其时间复杂度为O(1)。虽然在后面的版本开始使用 CFS调度算法(完全公平调度算法),但了解 O(1)调度算法 对学习Linux调度器还是有很大帮助的,咨询记录 · 回答于2021-11-04java进程调度中为什么进程名都是1Linux2.4版本使用的调度算法的时间复杂度为O(n),其主要原理是通过轮询所有可运行任务列表,然后挑选一个最合适的任务运行,所以其时间复杂度与可运行任务队列的长度成正比。而Linux2.6开始替换成名为 O(1)调度算法,顾名思义,其时间复杂度为O(1)。虽然在后面的版本开始使用 CFS调度算法(完全公平调度算法),但了解 O(1)调度算法 对学习Linux调度器还是有很大帮助的,在处理时间片调度时,进程名全是1,学了随机数不管用#include #includeusing namespace std;//共有n个进程就绪,m个进程阻塞//经过t个时间片释放系统资源,唤醒处于阻塞队列队首的进程/*每个时间片大小为1,进程所需CPU时间为整数*/struct PCB_type {\x09char name;//进程名\x09int statr;//进程状态 2执行,1就绪,0阻塞\x09int cpu_time;//运行需要CPU时间};struct QueueNode {\x09PCB_type PCB;\x09QueueNode* next;};const int T = 5;//每过五个时间片,将阻塞队列中的进程放入就绪队列中const int Timeslice = 2;//一个时间片大小const int N = 5;//N为所有PCB进程的个数,0<N<26,对PCB进程命名为26个英文字母double cpu_whole = 0;//总共用了多少个时间片double cpu_free = 0;//空闲的时间片QueueNode* ready_head = new QueueNode();//就绪队列头节点QueueNode* blocked_head = new QueueNode();//阻塞队列头节点QueueNode* node_tail = new QueueNode();//两个队列的尾部节点//向队列尾部插入节点void addNode(PCB_type pcb){\x09QueueNode* Queue=node_tail;\x09if (pcb.statr == 1)\x09{\x09\x09Queue = ready_head;//就绪\x09}\x09else if (pcb.statr == 0)\x09{\x09\x09Queue = blocked_head;//阻塞\x09}\x09//暂时不处理进程处于执行状态\x09else\x09{\x09\x09cout << "进程正在执行" << endl;\x09}\x09while (true)\x09{\x09\x09if (Queue->next == node_tail)\x09\x09{\x09\x09\x09break;\x09\x09}\x09\x09Queue = Queue->next;\x09}\x09QueueNode* Q = new QueueNode();明白,t谢谢不用谢,方便的话可以给一个赞吗好的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com