1.1 Linux系统内核组成结构
Linux系统是一款开源的计算机操作系统,工程人员可通过互联网免费获取其源码并安装到本地计算机上。该系统支持多用户、多任务和多处理器,被广泛应用于个人计算机、服务器、嵌入式设备等电子产品中;同时,也为互联网课题研究、网络新产品开发提供了极好的工程平台。本书以2.6.8.1版内核为例,给读者展示了Linux网络内核的结构、实现和开发方法。
1.1.1 内核组成结构
图1-1描述了Linux系统内核的组成结构。在该系统中,应用程序通过系统调用来引用内核提供的各种系统服务功能:进程管理、内存管理、文件管理、控制台及设备管理和网络管理。
图1-1 Linux系统内核结构
① 进程管理。该功能主要负责进程创建、进程终止、进程通信、进程调度、进程同步等。内核进程管理模块支持多任务并发执行,保证计算机内部资源的合理利用。
② 内存管理。负责为进程分配内存空间,回收空闲区域。另外,提供内存访问控制和虚拟存储技术以提高计算机性能。
③ 文件管理。负责文件和目录在磁盘等外部存储器上的访问和存储。
④ 控制台及设备管理。负责终端和设备的访问接口,提高资源利用率。
⑤ 网络管理。负责提供访问网络的功能,支持各种网络服务。在图1-1中,网络管理、网络协议以及网络驱动程序共同组成本书的核心内容——网络内核。
本书作者对Linux系统的2.6.8.1版内核(其压缩包为linux-2.6.8.1.tar.bz2)进行了分析。该内核源码分布在一系列文件夹中,如表1-1所示。许多开源网站提供了内核源码,如Linux Kernel Archives,SourceForge等。
表1-1 内核源码所在的文件夹
1.1.2 Linux内核源码浏览工具
本书作者使用Source Insight完成了Linux网络内核源码的分析,在此向读者推荐该软件。Source Insight是Windows平台上一款功能强大的代码分析编辑工具,内置了C/C++、C#和Java等语言的语法分析功能。Source Insight能帮助用户解析源代码,动态地保持符号信息库,并自动地显示上下文信息。用户把需要分析的源代码复制到指定文件夹下,通过Source Insight创建工程即可快速导航源代码内容。图1-2是该软件的操作界面,包括如下主要窗口:
① 源文件窗口,显示文件的源代码;
② 符号窗口,显示当前文件下所有变量、宏定义、类型、函数等符号名字;
③ 目录窗口,显示文件所在的目录路径;
④ 上下文信息窗口,显示当前被选符号的定义、引用等上下文信息。
图1-2 Source Insight操作界面