天天加油 - 助您成才
Linux内核源代码的阅读和工具介绍
您正在看的计算机论文是:Linux内核源代码的阅读和工具介绍。

Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码。另外还可以从互连网上下载,解压缩后文件一般也都位于linux目录下。内核源代码有很多版本,目前最新的版本是2.2.14

  许多人对于阅读Linux内核有一种恐惧感,其实大可不必。当然,象Linux内核这样大而复杂的系统代码,阅读起来确实有很多困难,但是也不象想象的那么高不可攀。只要有恒心,困难都是可以克服的。任何事情做起来都需要有方法和工具。正确的方法可以指导工作,良好的工具可以事半功倍。对于Linux 内核源代码的阅读也同样如此。下面我就把自己阅读内核源代码的一点经验介绍一下,最后介绍Window平台下的一种阅读工具。

  对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解。对于linux内核源代码来讲,基本要求是:⑴ 操作系统的基本知识;⑵ C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。我们知道现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序、网络等组成。看一下Linux内核源代码就可看出,各个目录大致对应了这些方面。Linux内核源代码的组成如下(假设相对于linux目录):

  arch 这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386

  include 这个目录包括了核心的大多数include文件。另外对于每种支持的体系结构分别有一个子目录。

  init 此目录包含核心启动代码。

  mm 此目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,如对应于X86的就是arch/i386/mm/fault.c

 drivers 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound

  ipc 此目录包含了核心的进程间通讯代码。

  modules 此目录包含已建好可动态加载的模块。

  fs Linux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系统对应的就是ext2子目录。

  kernel 主要核心代码。同时与处理器结构相关代码都放在arch/*/kernel目录下。

  net 核心的网络部分代码。里面的每个子目录对应于网络的一个方面。

  lib 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/*/lib/目录下。

  scripts此目录包含用于配置核心的脚本文件。

  Documentation 此目录是一些文档,起参考作用。

  清楚了源代码的结构组成后就可以着手阅读。对于阅读方法或者说顺序,有所谓的纵向与横向之分。所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是分模块进行。这不是绝对的,而是经常结合在一起进行。对于Linux源代码来讲,启动的代码就可以顺着linux的启动顺序一步一步来,它的大致流程如下(以X86平台为例):

  ./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./init/main.c中的start_kernel()。而对于象内存管理等部分,则可以单独拿出来进行阅读分析。我的体会是:开始最好按顺序阅读启动代码,然后进行专题阅读,如进程部分,内存管理部分等。在每个功能函数内部应该一步步来。实际上这是一个反复的过程,不可能读一遍就理解。

  俗话说:“工欲善其事,必先利其器”。 阅读象Linux核心代码这样的复杂程序令人望而生畏。它象一个越滚越大的雪球,阅读核心某个部分经常要用到好几个其他的相关文件,不久你将会忘记你原来在干什么。所以没有一个好的工具是不行的。由于大部分爱好者对于Window平台比较熟悉,并且还是常用Window系列平台,所以在此我介绍一个Window下的一个工具软件:Source Insight。这是一个有30天免费期的软件,可以从www.sourcedyn.com下载。安装非常简单,和别的安装一样,双击安装文件名,然后按提示进行就可以了。安装完成后,就可启动该程序。这个软件使用起来非常简单,是一个阅读源代码的好工具。它的使用简单介绍如下:先选择Project菜单下的new,新建一个工程,输入工程名,接着要求你把欲读的源代码加入(可以整个目录加)后,该软件就分析你所加的源代码。分析完后,就可以进行阅读了。对于打开的阅读文件,如果想看某一变量的定义,先把光标定位于该变量,然后点击工具条上的相应选项,该变量的定义就显示出来。对于函数的定义与实现也可以同样操作。别的功能在这里就不说了,有兴趣的朋友可以装一个Source Insight,那样你阅读源代码的效率会有很大提高的。怎么样,试试吧!

 

 

 

靳美 201400

上海市奉贤县解放一村19号103室

  • 上一篇论文:
  • 下一篇论文:
  • 排行

    1. 美国与欧洲分布式发电的比较
    2. 中国石油、天然气战略资源分析
    3. 上海交通发展战略
    4. 曼型干式气柜在技术管理中应注意
    5. 无线局域网技术概述
    6. 微型热电联产在游泳池项目中的应
    7. 网页设计制作规范
    8. 面向21世纪的世界炼油工业
    9. 当前我国能源消费形势分析
    10. 聚乙烯管道系统的构成与施工
    11. JSP动态网页制作技术
    12. 2004年发展中国家经济状况及前景
    13. 2005年全球市场展望
    14. 在虚拟现实系统构建过程中使用3D
    15. PCM-4894在原料分析器上的应用
    16. VACONS 为你提供一个平滑的提升
    1. 聚乙烯管道系统的构成与施工
    2. 中美日能源需求触及国家发展根本
    3. 微型热电联产在游泳池项目中的应
    4. 城市道路交通管理规划方法与应用
    5. 曼型干式气柜在技术管理中应注意
    6. 步进电机的选用计算方法
    7. 基于PB6和ORACLE8开发“劳动信息
    8. 光纤光缆和通信电缆的技术发展与
    9. 无线局域网技术概述
    10. JSP动态网页制作技术
    11. PCM-4894在原料分析器上的应用
    12. 上海交通发展战略
    13. 四甲氧基甲基甘脲固化: 耐久性高
    14. 机器翻译中汉语动结式生成的过程
    15. 中国石油、天然气战略资源分析
    16. 20世纪太阳能科技发展的回顾与展
    1. 微型热电联产在游泳池项目中的应
    2. 发改委制定电石、铁合金、焦化行
    3. 中国石油、天然气战略资源分析
    4. 上海交通发展战略
    5. 大北京现代化交通体系发展研究
    6. 面向21世纪的世界炼油工业
    7. 水源热泵与未利用能
    8. 基于PB6和ORACLE8开发“劳动信息
    9. 一种基于铁电存储器的双机串行通
    10. 光纤光缆和通信电缆的技术发展与
    11. 聚乙烯管道系统的构成与施工
    12. PCM-4894在原料分析器上的应用
    13. 四甲氧基甲基甘脲固化: 耐久性高
    14. 局域网图书资料查询系统
    15. 机器翻译中汉语动结式生成的过程
    16. VACONS 为你提供一个平滑的提升

    最近更新

  • 推荐阅读
  • 计算机论文《Linux内核源代码的阅读和工具介绍》Linux内核源代码的阅读和工具介绍