📄 00000015.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: coolzhang (coolzhang), 信区: Linux <BR>标 题: linux bible 第十四章 Linux核心资源 <BR>发信站: BBS 水木清华站 (Mon Oct 25 18:00:40 1999) <BR> <BR>发信人: coolzhang (coolzhang), 信区: UNIX <BR>标 题: linux bible 第十四章 Linux核心资源 <BR>发信站: 武汉白云黄鹤站 (Mon Oct 25 17:31:19 1999), 站内信件 <BR>第十四章 Linux核心资源 <BR>本章主要描叙寻找某个特殊核心函数时用到的Linux核心资源。 <BR>本书并不要求读者具有C编程语言的能力或者拥有Linux核心源代码来理解Linux核心 <BR>工作原理。但是如果对核心源代码进行阅读将加深对Linux操作系统的理解。本章提 <BR>供了一个核心源代码的综述。 <BR>从哪里得到Linux核心源码 <BR>所有主要Linux分发版本(如Craftworks,Debian,Slackware,Redhat)都包含了 <BR>源码在内。通常安装在你的Linux系统核心就是从这些源码中构造出来的。由于一些 <BR>显然的因素,这些源码都或多或少有点过期。你可以在www-appendix一章中的那些 <BR>WEB站点中得到最新的版本。这些站点包括<A HREF="ftp://ftp.cs.helsinki.fi以及所有其他">ftp://ftp.cs.helsinki.fi以及所有其他</A> <BR>镜象站点中。helsinki的这个WEB站点上的Linux源码显然是最新的但是MIT和Sunsite <BR>的也不会差太远。 <BR>如果你无法访问这些WEB站点,有许多CDROM厂商以非常合理的价格提供了这些WEB站 <BR>点的镜象光盘。有些厂商还提供每季度甚至每个月更新的订购服务。另外你所在的本 <BR>地Linux用户组也是一个很好的资源。 <BR>Linux核心代码的版本编号很简单。任何偶数编号的核心(如2.0.30)都是稳定的发 <BR>行版而记数编号的核心(如2.1.42)都是正在开发的核心。本书基于稳定的2.0.30版 <BR>本。开发版的核心具有所有最新的特征并支持最新的设备。尽管它们不是你所希望的 <BR>那样稳定,但是对于Linux用户团体来说试用新核心是非常重要的。因为他们将完成 <BR>这些评测工作。当试用非发行版本核心时备份系统总是有好处的。 <BR>核心的修改以patch文件来分发。而patch实用程序被用来对一些核心源码进行编辑。 <BR>例如如果现在你已经有了2.0.39的核心代码但是你想升级到2.0.30,那么你在取得 <BR>2.0.30补丁文件后可以实用以下命令来修改现存核心: <BR>$ cd /usr/src/linux <BR>$ patch -p1 < patch-2.0.30 <BR>一个收集核心补丁的站点是<A HREF="http://www.linuxhq.com。">http://www.linuxhq.com。</A> <BR>核心源码的组织 <BR>核心源码的顶层是/usr/src/linux目录,在此目录下你可以看到大量子目录: <BR>arch <BR> 这个子目录包含了所有体系结构相关的核心代码。它还包含每种支持的体系 <BR> 结构的子目录,如i386。 <BR>include <BR> 这个目录包括了用来重构核心的大多数include文件。对于每种支持的体系结 <BR> 构分别有一个子目录。 <BR> 此目录中的asm子目录中是对应某种处理器的符号连接,如include/asm-i386。 <BR> 要修改处理器结构则只需编辑核心的makefile并重新运行Linux核心配置程序。 <BR>init 此目录包含核心启动代码。 <BR>mm <BR> 此目录包含了所有的内存管理代码。与具体体系结构相关的内存管理代码位 <BR> 于arch/*/mm目录下,如arch/i386/mm/fault.c 。 <BR>drivers <BR> 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,如blo <BR>ck。 <BR>ipc 此目录包含了核心的进程间通讯代码。 <BR>modules <BR> 此目录仅仅包含已建好的模块。 <BR>fs <BR> 所有的文件系统代码。它也被划分成对应不同文件系统的子目录,如vfat和ext2。 <BR> <BR>kernel <BR> 主要核心代码。同时与处理器结构相关代码都放在arch/*/kernel目录下。 <BR>net 核心的网络部分代码。 <BR>lib <BR> 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/*/lib/目录下 <BR>。 <BR>scripts <BR> 此目录包含用于配置核心的脚本文件(如awk和tk脚本)。 <BR>从哪里入手 <BR>阅读象Linux核心代码这样的复杂程序令人望而生畏。它象一个越滚越大的雪球。阅读 <BR>核心某个部分经常要用到好几个其他的相关文件,不久你将会忘记你原来在干什么。 <BR>本小节将给出一些提示。 <BR>系统启动与初始化 <BR>在基于intel的系统上,Linux可以通过loadlin.exe或者LILO将核心载入内存并将控 <BR>制传递给它。这部分程序位于arch/i386/kerneld/head.S。此文件完成一些处理器 <BR>相关操作并跳转到init/main.c中的main()例程。 <BR>内存管理 <BR>这部分代码主要位于mm目录中但其处理器结构相关部分被放在arch/*/mm中。页面出 <BR>错处理代码位于mm下的memory.c文件中而内存映射与页面cache代码位于filemap.c中。 <BR> <BR>buffer cache则在mm/buffer.c中实现, swap cache位于mm/swap_state.c和 <BR>mm/swapfile.c中。 <BR>核心 <BR>大多数通用代码位于kernel目录下而处理器相关代码被放在arch/*/kernel中。调度器 <BR>位于kernel/sched.c而fork代码位于kernel/fork.c中。底层部分处理代码位于 <BR>include/linux/interrupt.h中。task_struct的描叙则在/linux/sched.h中可以找到。 <BR> <BR>PCI <BR>PCI伪设备驱动位于drivers/pci/pci.c且其系统通用定义放在include/linux/pci.h中。 <BR> <BR>每个处理器结构具有特殊的PCI BIOS代码,Alpha AXP的位于arch/alpha/kernel/bios3 <BR>2.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -