linux 2.6 内核学习笔记
文章平均质量分 81
IT_114
这个作者很懒,什么都没留下…
展开
-
Linux2.6进程调度分析(1)-调度策略
<br /> <br />对于分时操作系统而言,表面上看起来是多个进程同时在执行,而在系统内部则进行着从一个进程到另一个进程的切换动作。这样的进程并发执行涉及到进程切换(process switch)和进程调度(process scheduling)两大问题。本文主要说明Linux2.6中的普通进程调度策略(实时进程和普通进程在调度上稍有不同)问题,即系统何时进行进程切换以及选择哪一个进程进行切换。1.调度策略<br />理想的进程调度目标应该是:进程响应时间尽可能的快,后台作业吞吐量高,避免某些进程出现饥原创 2011-04-12 17:16:00 · 1971 阅读 · 0 评论 -
Linux2.6进程调度分析(3)-与调度有关的函数分析
前面两篇文章从原理角度分析了进程的调度,本文将从具体的源码出发,分析与进程进程调度密切相关的几个函数。1.时间片的分配:task_timeslice()正如我们所知的那样,进程的时间片与进程的静态优先级有直接的关系。从代码中可以看到,根据进程静态优先级static_prio与NICE_TO_PRIO(0)的大小关系,进程时间片的分配可以分为两条路线。以下代码如无特别说明均位于linux/kernel/sched.c下。view sourceprint?1staticunsigned inttask_time原创 2011-04-12 17:22:00 · 1383 阅读 · 1 评论 -
Linux2.6进程调度分析(2)-调度算法
2.调度算法Linux2.4版本的内核调度算法理解起来简单:在每次进程切换时,内核依次扫描就绪队列上的每一个进程,计算每个进程的优先级,再选择出优先级最高的进程来运行;尽管这个算法理解简单,但是它花费在选择优先级最高进程上的时间却不容忽视。系统中就绪进程越多,花费的时间就越大,时间复杂度为O(n)。而2.6内核所采用的O(1)算法则很好的解决了这个问题,从它的名称就可以看出,不管系统中可运行的进程有多少,该算法总能在有限的时间内选择出优先级最高的进程。2.1可运行队列调度程序每次在进程发生切换时,都要在就绪原创 2011-04-12 17:18:00 · 1904 阅读 · 0 评论