转自:https://www.cnblogs.com/amanlikethis/p/3641504.html
补充了一部分新内容。
一、源码结构表
目录名 | 描述 |
arch | 体系结构相关的代码,对于每个架构的CPU,arch目录下有一个对应的子目录,比如arch/arm、arch/i386 |
block | 块设备的通用函数 |
crypto | 常用的加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法 |
drivers | 所有的设备驱动程序,里面每一个子目录对一个一类驱动程序,比如drivers/block为块设备驱动程序,drivers/char为字符串设备驱动程序,drivers/mtd为NorFlash、NandFlash等存储设备的驱动程序 |
fs | Linux支持的文件系统的代码,每个子目录对应一种文件系统,比如fs/jffs2、fs/ext2、fs/ext3 |
include | 内核头文件,有基本头文件(存放在include/linux/目录下)、各种驱动或功能部件的头文件(比如include/media/、/include/mtd、include/net)、各种体系相关的头文件(比如include/asm-arm、include/asm-i386/)。当配置内核后,include/asm/是某个include/asm-xxx/(比如asm-arm)的链接 |
init | 内核的初始化代码(不是系统的引导代码),其中的main.c文件中的start_kernel函数时内核引导后的第一个函数 |
ipc | 进程间通信的代码 |
kernel | 内核管理的核心代码,与处理器相关的代码位于arch/*/kernel/目录下 |
lib | 内核用到的一些库函数代码,比如crc32.c、string.c,与处理器相关的库函数代码位于arch/*/lib目录下 |
mm | 内核管理代码,与处理器相关的内存管理代码位于arch/*/mm |
net | 网络支持代码,每个子目录对应于网络的一个方面 |
security | 安全、密钥相关的代码 |
sound | 音频设备的驱动程序 |
usr | 用来制作一个压缩的cpio归档文件:initrd的镜像,它可以作为内核启动后挂接的第一个文件系统 |
Documentation | 内核文档 |
scripts | 用于配制、编译内核的脚本文件 |
virt | 虚拟化相关代码,比如kvm |
certs | certificate相关 |
samples | 各主要功能示例代码 |
security | 安全相关代码 |
tools | 各种相关工具,如各种listener,monitor等 |
二、源码结构图
kernel/sched/路径下:
- autogroup.* - 用于实现autogroup,将属于同一个会话(session)的task自动分配到同一个进程组。有助于提高IO密集型任务的性能。
- clock.c - 实现高精度调度时钟。
- completion.c - 实现完成量(类似信号量),它允许一个线程告诉另一个线程某个工作已经完成。
- core.c - 调度器核心功能,例如__schedule()函数实现。
- cpuacct.c - 实现cpu accounting。会自动生成报告来显示
cgroup中
任务所使用的CPU
资源。 - cpudeadline.* - 实现cpu heap,被deadline.c使用。
- cpufreq.c - 和cpufreq相关的调度代码。cpufreq可以动态地提供刚好足够的主频给CPU。
- cpufreq_schedutil.c
- cpupri.* - cpu priority management,进程优先级。
- cputime.c - cpu accounting cgroup controller。
- deadline.c - deadline调度器类。
- fair.c 调度器类。
- debug.c
- idle.c idle调度器类。
- isolating.c CPU隔离
- loadavg.c 负载均衡。
- membarrier.c 内存屏障。
- pelt.* - Per-entity load tracking,基于过去的调度信息来预测未来该进程对CPU的需求.
- psi.c - Pressure Stall Information 提供了一种评估系统资源压力的方法。
- rt.c - RT调度器类。
- stats.* - 实现/proc/schedstat,用于展示有关scheduler性能相关的统计信息。
- stop_task.c - stop task相关功能。
- swait.c - (simple wait queue) implementation。
- topology.c 和cpu topology (smp) 有关。
- wait.c - wait queue相关。
- wait_bit.c