LINUX2.6内核代码分析――进程管理

摘要:随着计算机开发以及教学工作的深入,大家也不可避免的要接触到基于linux内核的各种操作系统。如何迈入linux的大门,并充分利用linux开源、灵活等特性呢?解读内核源码无疑是理解并掌握linux的关键。本篇文章,主要是对linux内核进程管理部分进行笼统的解读,帮助读者快速掌握linux进程管理的主线,对读者的理解起到抛砖引玉的作用。

关键词:linux2.6;内核代码;进程管理 一

linux是最受欢迎的自由电脑操作系统内核。它是一个用c语言写成,符合posix标准的类unix操作系统。linux最早是由芬兰黑客 linus torvalds为尝试在英特尔x86架构上提供自由免费的类unix操作系统而开发的。技术上说linux是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于linux内核的完整操作系统叫作linux操作系统,或是gnu/linux。 linux内核的主要模块(或组件)分以下几个部分:存储管理、cpu和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。一般地,可以从linux内核版本号来区分系统是否是linux稳定版还是测试版。以版本2.4.0为例,2代表主版本号,4代表次版本号,0代表改动较小的末版本号。在版本号中,序号的第二位为偶数的版本表明这是一个可以使用的稳定版本,如2.2.5,而序号的第二位为奇数的版本一般有一些新的东西加入,是个不一定很稳定的测试版本,如2.3.1。这样稳定版本来源于上一个测试版升级版本号,而一个稳定版本发展到完全成熟后就不再发展。本文是针对2.4.0版本内核进行分析。有于篇幅有限阅读前需要读者自行下载相应内核源码。 二

schedule()函数首先对所有进程进行检测,唤醒任何一个已经得到信号的任务。主要是任务数组中的每个进程,检测其报警定时值alarm。若alarmnr_active + expired->nr_active

ii.prio_array_t *active, *expired, arrays[2];// 两个子队列 就绪队列根据时间片是否被用完分为了active队列和expired队列。queue是指定优先级进程list的指针,如queue[i]就是priority为 i 的进程的指针。bitmap是一张优先级的位图,或者可以说的位数组,每一位代表了一个优先级(类似uc/os-ii)。 max_prio指的是优先级的数量. 以上是对linux 2.4.0版本内核源码进程管理部分的概括分析,主要用来为linux源码解读做一个引导,起到抛砖引玉的作用。但是由于时间,篇幅等种种原因,无法将全部函数调用以及相关代码一一呈现在读者面前,还望见谅。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4