Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Ubuntu中的动态进程调度_Linux_Ubuntu_Linux Kernel_Scheduler_Scheduled Tasks - Fatal编程技术网

Linux Ubuntu中的动态进程调度

Linux Ubuntu中的动态进程调度,linux,ubuntu,linux-kernel,scheduler,scheduled-tasks,Linux,Ubuntu,Linux Kernel,Scheduler,Scheduled Tasks,我想修改动态更改进程优先级的linux内核代码 我有Ubuntu 10.10,我下载了linux 2.6.37。我发现在2.6.37版本中,没有动态更改流程优先级的概念。[在CentOS中有一个recalc_task_prio()函数,可动态更改进程优先级] 我想知道是否有人知道任何其他ubuntu内核版本支持动态更改进程优先级的功能(如果任务是cpu受限的,并且占用大量cpu,则基于惩罚进程优先级) 我主要指的是这个链接- 提前感谢,在Linux v2.6.23中集成了一个新的调度程序,它更少

我想修改动态更改进程优先级的linux内核代码

我有Ubuntu 10.10,我下载了linux 2.6.37。我发现在2.6.37版本中,没有动态更改流程优先级的概念。[在CentOS中有一个recalc_task_prio()函数,可动态更改进程优先级]

我想知道是否有人知道任何其他ubuntu内核版本支持动态更改进程优先级的功能(如果任务是cpu受限的,并且占用大量cpu,则基于惩罚进程优先级)

我主要指的是这个链接-

提前感谢,

在Linux v2.6.23中集成了一个新的调度程序,它更少地依赖于
HZ
,更多地依赖于纳秒的执行时间

所有进程都存储在一个内存中,这使得查找最左边(因此也是最值得执行的)任务的成本很低。系统定期(
task\u tick()
)检查另一个进程是否“更有价值”,并抢占正在运行的任务。(当然,任务可以自行产生(
yield\u task()
),新运行的任务可以抢占正在运行的任务(
check\u preempt\u curr()
)。进程运行所花费的时间将计入该进程,并将其重新插入到树O(log(N))中,以在RB树中找到其新位置

因此,等待IO的任务占用的时间很少,并且不会在树中移动很远,这与优先级提升相对应。在IO事件上不休眠的任务在被更高优先级的任务抢占之前,将使用相对更多的CPU时间

有关更多详细信息,请务必阅读
文档/scheduler/
文档和
内核/sched*
实现文件


如果我的家庭作业是摆弄调度程序(过去很常见),我会认真考虑添加一个新的实时调度类,如
SCHED_FIFO
SCHED_RR
(取决于哪个类更接近所讨论的调度程序设计)用这种方式来摆弄任务的优先级。对于操作系统入门课程来说,这样做可能有点难——旧的Linux或旧的BSD内核可能更容易使用。

谢谢sarnoid…这很有帮助…所以你的意思是2.6.23之后的任何东西都有更复杂的调度程序。我会尽量使用旧版本。