| 第十四章 Linux核心资源 本章主要描叙寻找某个特殊核心函数时用到的Linux核心资源。 本书并不要求读者具有C编程语言的能力或者拥有Linux核心源代码来理解Linux核心工作原理。但是如果 对核心源代码进行阅读将加深对Linux操作系统的理解。本章提供了一个核心源代码的综述。 从哪里得到Linux核心源码 所有主要Linux分发版本(如Craftworks,Debian,Slackware,Redhat)都包含了源码在内。通常安装在 你的Linux系统核心就是从这些源码中构造出来的。由于一些显然的因素,这些源码都或多或少有点过期。 你可以在www-appendix一章中的那些WEB站点中得到最新的版本。这些站点包括ftp://ftp.cs.helsinki.fi 以及所有其他镜象站点中。helsinki的这个WEB站点上的Linux源码显然是最新的但是MIT和Sunsite中的也 不会差太远。 如果你无法访问这些WEB站点,有许多CD ROM厂商以非常合理的价格提供了这些WEB站点的镜象光盘。有些 厂商还提供每季度甚至每个月更新的订购服务。另外你所在的本地Linux用户组也是一个很好的资源。 Linux核心代码的版本编号很简单。任何偶数编号的核心(如2.0.30)都是稳定的发行版而记数编号的核心 (如2.1.42)都是正在开发的核心。本书基于稳定的2.0.30版本。开发版的核心具有所有最新的特征并支持 最新的设备。尽管它们不是你所希望的那样稳定,但是对于Linux用户团体来说试用新核心是非常重要的。 因为他们将完成这些评测工作。当试用非发行版本核心时备份系统总是有好处的。 核心的修改以patch文件来分发。而patch实用程序被用来对一些核心源码进行编辑。例如如果现在你已经 有了2.0.39的核心代码但是你想升级到2.0.30,那么你在取得2.0.30补丁文件后可以实用以下命令来修改 现存核心: $ cd /usr/src/linux $ patch -p1 < patch-2.0.30 一个收集核心补丁的站点是http://www.linuxhq.com。 核心源码的组织 核心源码的顶层是/usr/src/linux目录,在此目录下你可以看到大量子目录: arch 这个子目录包含了所有体系结构相关的核心代码。它还包含每种支持的体系结构的子目录,如i386。 include 这个目录包括了用来重构核心的大多数include文件。对于每种支持的体系结构分别有一个子目录。 此目录中的asm子目录中是对应某种处理器的符号连接,如include/asm-i386。要修改处理器结构 则只需编辑核心的makefile并重新运行Linux核心配置程序。 init 此目录包含核心启动代码。 mm 此目录包含了所有的内存管理代码。与具体体系结构相关的内存管理代码位于arch/*/mm目录下, 如arch/i386/mm/fault.c 。 drivers 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,如block。 ipc 此目录包含了核心的进程间通讯代码。 modules 此目录仅仅包含已建好的模块。 fs 所有的文件系统代码。它也被划分成对应不同文件系统的子目录,如vfat和ext2。 kernel 主要核心代码。同时与处理器结构相关代码都放在arch/*/kernel目录下。 net 核心的网络部分代码。 lib 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/*/lib/目录下。 scripts 此目录包含用于配置核心的脚本文件(如awk和tk脚本)。 从哪里入手 阅读象Linux核心代码这样的复杂程序令人望而生畏。它象一个越滚越大的雪球。阅读核心某个部分经常要 用到好几个其他的相关文件,不久你将会忘记你原来在干什么。本小节将给出一些提示。 系统启动与初始化 在基于intel的系统上,Linux可以通过loadlin.exe或者LILO将核心载入内存并将控制传递给它。这部分程序 位于arch/i386/kerneld/head.S。此文件完成一些处理器相关操作并跳转到init/main.c中的main()例程。 内存管理 这部分代码主要位于mm目录中但其处理器结构相关部分被放在arch/*/mm中。页面出错处理代码位于mm下的 memory.c文件中而内存映射与页面cache代码位于filemap.c中。buffer cache则在mm/buffer.c中实现, swap cache位于mm/swap_state.c和mm/swapfile.c中。 核心 大多数通用代码位于kernel目录下而处理器相关代码被放在arch/*/kernel中。调度器位于kernel/sched.c 而fork代码位于kernel/fork.c中。底层部分处理代码位于include/linux/interrupt.h中。task_struct的 描叙则在/linux/sched.h中可以找到。 PCI PCI伪设备驱动位于drivers/pci/pci.c且其系统通用定义放在include/linux/pci.h中。每个处理器结构 具有特殊的PCI BIOS代码,Alpha AXP的位于arch/alpha/kernel/bios32.c中。 进程间通讯 所有这些代码都在ipc目录中。系统V IPC对象都包含一个ipc_perm结构,它在include/linux/ipc.h中描叙。 系统V消息在ipc/msg.c中实现,共享内存在ipc/shm.c而信号灯位于ipc/sem.c中。管道在ipc/pipe.c中实现。 中断处理 核心的中断处理代码总是与微处理器结构相关。Intel系统的中断处理代码位于arch/i386/kernel/irq.c中, 其定义位于include/asm-i386/irq.h中。 设备驱动 Linux核心源码的大多数都是设备驱动。所有Linux的设备驱动源码都放在drivers目录中并分成以下几类: /block 块设备驱动包括IDE(在ide.c中)驱动。如果你想寻找这些可包含文件系统的设备的初始化过程 则应该在drivers/block/genhd.c中的device_setup()。当安装一个nfs文件系统时不但要初始化 硬盘还需初始化网络。块设备包括IDE与SCSI设备。 /char 此目录包含字符设备的驱动,如ttys,串行口以及鼠标。 /cdrom 包含所有Linux CDROM代码。在这里可以找到某些特殊的CDROM设备(如Soundblaster CDROM)。 IDE接口的CD驱动位于drivers/block/ide-cd.c中而SCSI CD驱动位于drivers/scsi/scsi.c中。 /pci 它包含了PCI伪设备驱动源码。这里可以找到关于PCI子系统映射与初始化的代码。另外位于 arch/alpha/kernel/bios32.c中的Alpha AXP PCI补丁代码也值得一读。
文章整理:西部数码--专业提供域名注册、虚拟主机服务 相关文章
热点关注
IDC资讯
虚拟主机
域名注册
托管租用
vps主机
智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源 网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧 行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒 网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它 服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护 软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer 网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash 程序设计 Java技术 C/C++ VB delphi 网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术 操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD |
Linux 核心--15.Linux内核资源
来源:互联网
作者:west263.com
时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!



