有关此类文章确实比较多了,列出我解读代码的几点体会。
1.代码的结构
(1)阅读sched.h源码文件,加深对进程管理概念的理解
(2)阅读Linux的fork.c源码文件,分析进程的创建过程
(3)阅读msg.c,sem.c和shm.c源码文件,熟悉Linux的三种通信机制。
Linux的内核源码可以通过许多途径得到。一般来讲,在完整安装的Linux系统下,/usr/src/linux目录下的文件就是内核源码。另外,还可以从Internet上下载,http://www.kernel.org/是比较权威的下载站点。展开的源码一般包括以下几个子目录:
u arch: 该目录包含了此内核源码所支持的硬件体系结构相关的内核源码。在这个目录下,针对不同体系结构所移植的版本都有三个子目录:kernel、lib和mm。kernel子目录包含以来于体系结构实现的一般内核功能,如信号处理、时钟处理等;lib子目录包含库函数的本地实现,如果从依赖于体系结构的源码编译,则运行更快;mm子目录包含存储管理实现的代码。
u kernel:许多最常调用的内核函数放在该目录下。调度器fork()和timer.c就放在这里,以及printk.c等。与处理器结构相关的代码放在arch/*/kernel目录下。
u lib:该目录放置内核其他部分经常所需要的代码,如inflate.c就放在这里,它能够在引导时解压内核并装入内存。与处理器结构相关的库代码放在arch/*/lib目录下。
u mm: 包含了所有Linux实现虚拟内存管理的源码。与具体硬件体协结构相关的内存管理代码位于arch/*/mm目录下,如对应X86的就是arch/i386/mm/fault.c
u drivers: 这个目录拥有50%以上的内核源码,系统中所有的设备驱动程序都位于该目录中。
u include: 包括了内核的大多数头文件,另外对每种支持的体系结构分别有一个子目录。
u init: 包含了所有系统的初始化源码,许多主要的文件,如main.c就位于该目录下。该文件还包含了许多核心代码——如实现fork()的代码和最常执行的代码——cpuidle()循环。
u ipc: 处理进程间通信的全部所需的代码都放在目录下。
u modules: 已编译好的可动态加载的模块。
u fs: Linux支持的文件系统代码。不同的文件系统有不同的子目录与之对应。
u net: 所有提供网络支持的代码,每个子目录对应网络的一个方面。
u scripts: 用于配置内核的脚本文件角用户开发和维护手册。
Linux内核源码包含的内容较多,2.4.20版本的内核源码大约有40万行。
2.内核编码风格
如果用户需要修改Linux内核源码,那么一定要注意遵守下面的编码约定:
u 注释是/* */风格的,单行注释也是这样,不接受//风格的注释。
u 函数开始的大括号{}独占一行。
u if语句以下面方式编码:
if (str[0]>=’0’ && str[0]
strcpy (name, “abcd”);
strncpy (name+4, str, 1);
}else
printk (“error param”);
name [sizeof (name) -1]=0;
u 单行if语句是可以接受的:
if (!strcmp(str, “abc”)) strcpy(str, “abc”);
u 内核源码包含许多goto,差不多每80行代码就有一个goto,这是出于执行效率的考虑,如在一些while语句中,使用goto跳出代码块,而不是使用break。
分享到:
相关推荐
Linux网管指南Linux网管指南Linux网管指南
Linux 网管员必备, 包括 网络基础知识,Linux 服务器的搭建, BBS , 网站建设等等
Unix&Linux网管通鉴: <br>包含了16本书的大集合.... <br>绝对值得收藏........
易语言源码易语言网吧呼叫网管源码.rar 易语言源码易语言网吧呼叫网管源码.rar 易语言源码易语言网吧呼叫网管源码.rar 易语言源码易语言网吧呼叫网管源码.rar 易语言源码易语言网吧呼叫网管源码.rar 易语言源码...
易语言源码易语言呼叫网管源码.rar
Linux 网管基本命令...初学者可以参考
基于Linux平台的嵌入式网管软件开发.pdf
基于ARM和LINUX的SNMP网管系统的实现 基于ARM和LINUX的SNMP网管系统的实现 基于ARM和LINUX的SNMP网管系统的实现 基于ARM和LINUX的SNMP网管系统的实现
本书结构清晰、易教易学、实例丰富、可操作性强、学以致用,对易混淆和实用性强的内容进行了重点提示和讲解,可作为大中专院校的教材和各类培训班的教材,也适合网络管理员及使用linux的科技人员参考阅读。
一个很适合网管初学者阅读的文档,不知道有没有 上传上来让大家看下
【Unix&Linux;】较全的文档,文件大小100多mb,入门学习;
网管工作笔记之故障诊断排除专辑,很不错的技术学校资料
linux管理员学习资料 第一部分Linux网络管理员指南
Linux下安装思科CIC网管软件.pdf
Unix&Linux网管通鉴: <br>包含了16本书的大集合.... <br>绝对值得收藏........
Unix&Linux网管通鉴: <br>包含了16本书的大集合.... <br>绝对值得收藏........
Unix&Linux网管通鉴: <br>包含了16本书的大集合.... <br>绝对值得收藏........
Unix&Linux网管通鉴: <br>包含了16本书的大集合.... <br>绝对值得收藏........
Unix&Linux网管通鉴: <br>包含了16本书的大集合.... <br>绝对值得收藏........
Unix&Linux网管通鉴: <br>包含了16本书的大集合.... <br>绝对值得收藏........