【转载】linux内核代码,各目录的功能说明

linux内核代码,各目录的功能说明如下:

arch :这个目录包含了所有和体系结构相关的核心代码。大部分是 CPU的架构类别,如arm, x86, x86_64, Xen,MIPS,PPC等;

每一个子目录都代表一种linux支持的体系结构。

block :一些linux存储体系中关于块设备管理的代码,以块(多个字节组成的整体,类试于扇区)为单位来整体访问(I/O调度),譬如说SD卡、iNand、Nand、硬盘等都是块设备

crypto :这个目录下放了一些各种常见的加密算法,C语言代码实现,核心所支持的加密技术,例如 md5、crc32、sha1等

Documentation :核心有关的一堆说明文档,若对核心有极大的兴趣,可以看看,不过都是英文的

drivers :驱动目录,一些硬件的驱劢程序,例如显示适配器、网络卡、PCI 相关硬件等;分门别类的列出了linux内核支持的所有硬件设备的驱动源代码,建议重点学习

进一步划分为几类设备驱动,每一种对应有子目录,如block下为块设备驱动程序;net,核心与网络相关的代码等

firmware :固件,即软件,不过这个软件是要固化到IC里面运行的。一些旧式硬件的微脚本 (韧体) 数据,像IC的iROM代码

fs :核心所支持的 filesystems,文件系统,里面列出了linux支持的各种文件系统的实现 ,例如 vfat, reiserfs, nfs 等

include :头文件目录,公共的(各种CPU架构共用的)头文件都在这里。每种CPU架构特有的一些头文件在/arch/arm/include目录及其子目录下;

例如与平台相关的头文件在/include/linux子目录下,而/include/scsi目录则是有关scsi设备的头文件目录

init :初始化,这个目录下的代码就是linux内核启动时初始化内核的代码(不是系统的引导代码),有main.c文件,这是研究核心如何工作的好起点

ipc :即inter process communication,进程间通信,里面都是linux支持的IPC的实现代码

kernel :kernel就是内核,linux内核,目录下的文件实现了大多数的linux系统的内核函数,如内核状态、线程、程序的线程 (schedule)、程序的信号 (signle) 等

其中最重要的文件当属sched.c; 同时,与处理器结构相关代码都放在/arch/*/kernel目录下

lib :库,里面都是一些共用的有用的库函数,注意这里的库函数和C语言的库函数不一样的(下面有说明);与处理器结构相关的库代码被放在/arch/*/lib目录下

–>在内核编译中,是不能用C语言的标准库函数的,故这里的lib目录下的库函数即用来替代那些标准库函数。内核打印printk就在这个lib目录下。

mm :即memory management,内存单元有关的各项数据,包括 swap虚拟内存等;目录包含了所有独立于cpu体系结构的内存管理代码,如页式存储管理内存的分配和释放等

与具体硬件体系结构相关的内存管理代码位于/arch/*/mm目录下,例如/arch/arm/mm。

net :该目录下是网络有关的代码,实现了网络有关的各项协议,其每个子目录对应于网络的一个方面,如防火墙模块 (net/ipv4/netfilter/*)、TCP/IP协议栈等

scripts:脚本,这个目录下都是脚本文件,不过这些脚本文件不是linux内核工作时使用,而是用来辅助对linux内核进行配置编译生产的

security :包括 selinux模块 等在内的安全相关的代码

sound :音效处理相关的各项模块,如ALSA、OSS音频设备的驱动核心代码和常用的设备驱动

tools:linux中用到的一些有用的工具

usr:目录下是inittramfs相关的,和linux内核的启动有关,实现了用于打包和压缩的cpio等。

virt :虚拟化机器有关的信息,目前核心支持的是 KVM (Kernel base Virtual Machine)

文件:

Kbuild:是kerne build的意思,即内核编译。这个文件就是linux内核特有的内核编译体系需要用到的文件。

Makefile:这个是linux内核的总makefile,整个内核工程用这个Makefile来管理的

你可能感兴趣的:(Linux,linux)