差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | |||
public:it:linux:linux-program [2024/04/23 13:21] – oakfire | public:it:linux:linux-program [2024/04/23 13:26] (当前版本) – oakfire | ||
---|---|---|---|
行 1: | 行 1: | ||
====== Linux 编程 ====== | ====== Linux 编程 ====== | ||
* [[https:// | * [[https:// | ||
- | ===== Linux 源代码布局 | + | * Linux 源代码布局:< |
- | + | ||
- | < | + | |
+-------+ | +-------+ | ||
| linux | | | linux | | ||
行 37: | 行 35: | ||
</ | </ | ||
- | 以下是 Linux 源代码文件夹的顶层目录: | + | * 以下是 Linux 源代码文件夹的顶层目录: |
- | + | * arch——包含特定架构(architecture)的代码;每个架构在特定的子文件夹中实现(例如 arm、arm64 以及 x86) | |
- | | + | * block——包含与读写块设备数据相关的块子系统代码:创建块 I/O 请求、调度(scheduling)请求(有几个 I/O 调度程序可用)、合并请求,并将其通过 I/O 堆栈传递给块设备驱动程序 |
- | * block——包含与读写块设备数据相关的块子系统代码:创建块 I/O 请求、调度(scheduling)请求(有几个 I/O 调度程序可用)、合并请求,并将其通过 I/O 堆栈传递给块设备驱动程序 | + | * certs——使用证书实现签名检查支持 |
- | * certs——使用证书实现签名检查支持 | + | * crypto——各种加密算法的软件实现,以及允许将这些算法分载到硬件中的框架 |
- | * crypto——各种加密算法的软件实现,以及允许将这些算法分载到硬件中的框架 | + | * Documentation——各个子系统的文档、对 Linux 内核命令行选项的描述、对 sysfs 文件和格式的描述以及设备树绑定(支持的设备树节点和格式) |
- | * Documentation——各个子系统的文档、对 Linux 内核命令行选项的描述、对 sysfs 文件和格式的描述以及设备树绑定(支持的设备树节点和格式) | + | * drivers——各种设备的驱动程序以及 Linux 驱动程序模型实现(对驱动程序、设备总线及其连接方式的抽象描述) |
- | * drivers——各种设备的驱动程序以及 Linux 驱动程序模型实现(对驱动程序、设备总线及其连接方式的抽象描述) | + | * firmware——由各种设备驱动程序使用的二进制或十六进制固件文件 |
- | * firmware——由各种设备驱动程序使用的二进制或十六进制固件文件 | + | * fs——虚拟文件系统切换(通用文件系统代码)以及各种文件系统驱动程序的位置 |
- | * fs——虚拟文件系统切换(通用文件系统代码)以及各种文件系统驱动程序的位置 | + | * include——头文件 |
- | * include——头文件 | + | * init——在启动过程中运行的通用(而不是特定于架构的)初始化代码 |
- | * init——在启动过程中运行的通用(而不是特定于架构的)初始化代码 | + | * ipc——对各种进程间通信系统(Inter Process Communication)调用的实现,例如消息队列、信号量、共享内存 |
- | * ipc——对各种进程间通信系统(Inter Process Communication)调用的实现,例如消息队列、信号量、共享内存 | + | * kernel——进程管理代码(包括对内核线程、工作队列的支持)、调度程序(scheduler)、跟踪、时间管理、通用中断代码(generic irq code)以及锁定(locking) |
- | * kernel——进程管理代码(包括对内核线程、工作队列的支持)、调度程序(scheduler)、跟踪、时间管理、通用中断代码(generic irq code)以及锁定(locking) | + | * lib——各种通用函数,例如排序、校验和、压缩和解压缩、位图操作等 |
- | * lib——各种通用函数,例如排序、校验和、压缩和解压缩、位图操作等 | + | * mm——内存管理代码,用于物理和虚拟内存,包括页面、SL*B 和 CMA 分配器、交换(swapping)、虚拟内存映射、进程地址空间操作等 |
- | * mm——内存管理代码,用于物理和虚拟内存,包括页面、SL*B 和 CMA 分配器、交换(swapping)、虚拟内存映射、进程地址空间操作等 | + | * net——各种网络协议栈的实现,包括IPv4和IPv6;BSD 套接字实现、路由、过滤、数据包调度以及桥接(bridging)等 |
- | * net——各种网络协议栈的实现,包括IPv4和IPv6;BSD 套接字实现、路由、过滤、数据包调度以及桥接(bridging)等 | + | * samples——各种驱动程序示例 |
- | * samples——各种驱动程序示例 | + | * scripts——构建系统的一部分,用于构建模块的脚本,Linux 内核配置器 kconfig,以及其他各种脚本(例如 checkpatch.pl,用于检查补丁(patch)是否符合 Linux 内核的编码风格) |
- | * scripts——构建系统的一部分,用于构建模块的脚本,Linux 内核配置器 kconfig,以及其他各种脚本(例如 checkpatch.pl,用于检查补丁(patch)是否符合 Linux 内核的编码风格) | + | * security——Linux 安全模块框架的位置,允许扩展默认(Unix)安全模型,以及多个此类扩展的实现,例如 SELinux、smack、apparmor 以及 tomoyo 等 |
- | * security——Linux 安全模块框架的位置,允许扩展默认(Unix)安全模型,以及多个此类扩展的实现,例如 SELinux、smack、apparmor 以及 tomoyo 等 | + | * sound——ALSA(Advanced Linux Sound System,高级 Linux 声音系统)的位置,以及旧的 Linux 音频框架(OSS) |
- | * sound——ALSA(Advanced Linux Sound System,高级 Linux 声音系统)的位置,以及旧的 Linux 音频框架(OSS) | + | * tools——用于测试或与 Linux 内核子系统交互的各种用户空间工具 |
- | * tools——用于测试或与 Linux 内核子系统交互的各种用户空间工具 | + | * usr——支持在内核映像中嵌入 initrd 文件 |
- | * usr——支持在内核映像中嵌入 initrd 文件 | + | * virt——KVM(Kernel Virtual Machine,内核虚拟机)虚拟化管理程序(hypervisor)的位置 |
- | * virt——KVM(Kernel Virtual Machine,内核虚拟机)虚拟化管理程序(hypervisor)的位置 | + | |
===== Tips ===== | ===== Tips ===== |