16.1.1 代码目录分布
来源:互联网 发布:搜索引擎快速排名优化 编辑:程序博客网 时间:2024/05/13 21:22
16.1.1 代码目录分布
Linux的内核源代码可以从http://www.kernel.org/pub/Linux/kernel/网站上下载,本书使用Linux-2.6.26.3版本(可能不是最新版本,读者可以去下载最新的版本),其代码目录结构参见图16.1。
q Documentation:这个目录下面没有内核的代码,有一套有用的内核文档。其中的文档质量良莠不齐,有很多内核文档的质量很优秀并且相当完整,例如文件系统;但是有的则完全没有文档,例如进程调度。在这个目录里不时可以发现有用的 东西。
图16.1 Linux内核的源代码结构
q arch:此目录下的所有子目录的东西都是体系结构特有的代码。每个体系结构特有的目录下面至少包含3个子目录:kernel,不同体系结构内核特有的实现方式,如信号量、计时器、SMP等;lib,不同体系结构下的高性能通用代码实现,如memcpy等;mm,不同体系结构特有的内存管理程序的实现。
q drivers:内核的驱动程序代码。此部分的代码占内核代码的大部分,包括显卡、网卡、PCI等外围设备的驱动代码。
q fs:文件系统代码。包含ext2、ext3等本地文件系统,CD-ROM、isofs等镜像系统,还有NFS等网络文件系统,以及proc等伪文件系统。
q include:此目录中包含了Linux内核中的大部分头(*.h)文件。
q init:内核初始化过程的代码。
q ipc:进程间通信代码。
q kernel:这部分是Linux内核中最重要的,包含了内核中平台无关的基本功能,主要包含进程创建、销毁和调度的代码。
q lib:此目录中主要包含内核中其他模块使用的通用函数和内核自解压的函数。
q mm:此目录中的代码实现了平台无关的内存管理代码。
q scripts:此目录下是内核配置时使用的脚本,当使用make menuconfig或者make xconfig命令时,会调用此部分代码。
q net:此目录中包含Linux内核的网络协议栈的代码。在子目录netfilter下为netfilter的实现代码,netfilter构建了一个框架,允许在不重新编译内核的情况下,编写可加载内核,在指定的地方插入回调函数,以用户自己的方式处理网络数据。子目录ipv4和ipv6为TCP/IP协议栈的IPv4和IPv6的实现,主要包含了TCP、UDP、IP协议的代码,还有ARP协议、ICMP协议、IGMP协议、netfilter的TCP/IP实现等代码实现,以及如proc、ioctl等控制相关的代码。本书的重点集中在这个目录中的相关技术。
图16.2所示是源代码组织的另一种表现形式,它映射到Linux代码的3个内核层。
图16.2 映射到Linux代码的3个内核层的源代码组织
如图16.2所示,以太网相关的为本书涉及的部分,其他(例如SLIP、IRDA等)部分是为了比较而用。
- 16.1.1 代码目录分布
- Linux 0.01 源代码目录分布
- Linux 操作系统的目录分布
- Linux 0.01 源代码目录分布
- 关于SVN目录结构分布
- 数据代码地址分布
- WebRtc代码分布
- nc代码分布规律
- 代码在内存中的分布
- matlab对数据分布检验代码:正态分布,γ分布,泊松分布,指数分布,rayleigh分布
- tomcat5常见目录分布及其代表意义
- 1——FFMPEG代码目录
- F分布的C/C++代码
- Bluedroid的结构和代码分布
- 【转】Bluedroid的结构和代码分布
- Bluedroid的结构和代码分布
- Bluedroid的结构和代码分布
- Bluedroid的结构和代码分布
- 硬盘坏道
- js 数组操作集锦
- 省市之二 ------------------后台实现DropDownList联动
- 16.1 概 述
- 文件上传专栏
- 16.1.1 代码目录分布
- javascript 中数组使用方法汇总
- 搞笑3
- .net J2EE架构杂谈
- 大连CCNA职位
- 曾仕强《领导的沟通艺术》
- 今天創建的scheduler_job
- 16.1.2 内核中网络部分流程简介
- linq hibernate区别