本节简单介绍内核开发中,进程调度的相关知识点。
什么是进程调度
进程调度就是在已经就绪的进程中选择一个最合适的进程执行的过程。
7.2 进程调度策略
实时类调度策略
非实时类调度策略
7.3 进程调度时机
7.3.1主动式抢占
当前进程因为需要等待资源等原因主动放弃执行权限,主动要求切换到...
分类:
系统相关 时间:
2014-09-09 12:38:38
阅读次数:
191
进程调度所使用到的数据结构:1.就绪队列内核为每一个cpu创建一个进程就绪队列,该队列上的进程均由该cpu执行,代码如下(kernel/sched/core.c)。1 DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues);定义了一个struct rq...
分类:
系统相关 时间:
2014-08-12 00:23:03
阅读次数:
468
众所周知,进程调度使用schedule()函数来完成,下面我们从分析该函数开始,代码如下(kernel/sched/core.c):1 asmlinkage __visible void __sched schedule(void)2 {3 struct task_struct *tsk =...
分类:
系统相关 时间:
2014-08-02 17:58:03
阅读次数:
396
从Linux2.5开始Linux实现了0(1)调度算法, 算法的思想要点在于设定动态的nice值确定优先级, 在优先级数组调度(数组最大长度是固定常数) 简而言之,不管系统中有多少进程需要调度都可以在o(1)的时间复杂度内完成调度,是不是很吊啊?但是实践证明(我没证明,文献说的) o(1)对i/o交互型的调度体验上表现很差 轮转周期很不灵活,主要原因在于调度出发点采用粒度很大时间片进行轮换,诚然整体负载会比较好,但是对于i/o交互型的,我们理想的调度策略是采用处理器使用比而不是时间片来分配, ...
分类:
系统相关 时间:
2014-05-02 21:18:41
阅读次数:
460