龙空技术网

干货来袭!带你理清Linux源代码结构,21块代码结构,建议收藏

5岁可以抬头 253

前言:

而今同学们对“linux 项目 源码”大致比较关心,同学们都需要了解一些“linux 项目 源码”的相关内容。那么小编也在网络上汇集了一些对于“linux 项目 源码””的相关资讯,希望你们能喜欢,同学们一起来学习一下吧!

Linux内核概述

Linux的发展模式

Linux内核是世界上最大的开放源码项目之一,有成千上万的开发人员贡献代码,每个版本都要更改数百万行代码。

它是在GPLv2许可下发布的,简单地说,它要求对交付给客户的软件的内核所做的任何修改都应该提供给他们(客户),尽管在实践中大多数公司都公开源代码。

有许多公司(通常是竞争的)为Linux内核贡献代码,还有来自学术界和独立开发人员。

维护人员层次结构

为了扩展开发过程,Linux使用了一个分层的维护模型:Linus Torvalds是Linux内核的维护者,并合并来自子系统维护者的拉请求每个子系统都有一个或多个维护者,他们接受来自开发人员或设备驱动程序维护者的补丁或拉出请求每个子系统可能维护一个“下一个树”,开发人员可以在那里为下一个合并窗口提交补丁每个维护者都有自己的git树,例如:

Linux Torvalds: git: / / git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

David Miller (networking): git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/

由于合并窗口最多只有两个星期,大多数维护者都有一个-next树,在那里他们接受来自开发人员或下游维护者的新特性,即使合并窗口关闭了

请注意,错误修复甚至在维护者树的合并窗口之外也被接受,在那里,上游维护者会定期地为每个候选版本拉出错误修复。

Linux源代码布局

arch -包含体系结构特定代码;每个架构都在特定的子文件夹中实现(例如arm, arm64, x86)block -包含了处理从块设备读写数据的块子系统代码:创建块I/O请求,调度它们(有几个可用的I/O调度程序),合并请求,并通过I/O堆栈将它们传递给块设备驱动程序certs -使用证书实现对签名检查的支持crypto -各种密码算法的软件实现,以及一个允许在硬件中卸载这些算法的框架Documentation -各种子系统的文档,Linux内核命令行选项,sysfs文件的描述和格式,设备树绑定(支持的设备树节点和格式)drivers -各种设备的驱动程序以及Linux驱动程序模型实现(描述驱动程序、设备总线和它们连接方式的抽象)firmware -二进制或十六进制固件文件,用于各种设备驱动程序fs- 虚拟文件系统开关(通用文件系统代码)和各种文件系统驱动程序的主目录include-头文件Init - 在引导期间运行的通用(与特定于体系结构的)初始化代码ipc - 实现各种进程间通信系统调用,如消息队列,信号量,共享内存kernel - 进程管理代码(包括对内核线程、工作队列的支持)、调度器、跟踪、时间管理、通用irq代码、锁定lib - 各种通用函数,如排序,校验和,压缩和解压缩,位图操作等。mm - 内存管理代码,用于物理内存和虚拟内存,包括页,SL*B和CMA分配器,交换,虚拟内存映射,进程地址空间操作等。net - 实现各种网络堆栈,包括IPv4和IPv6;BSD套接字实现、路由、过滤、包调度、桥接等samples -各种驱动程序样本scripts - 构建系统的部分,用于构建模块的脚本,kconfig Linux内核配置器,以及其他各种脚本(例如检查补丁是否符合Linux内核编码风格的checkpatch.pl)security - Linux安全模块框架的主页,它允许扩展默认(Unix)安全模型,并实现多个这样的扩展,如SELinux, smack, apparmor, tomoyo等。sound - ALSA(高级Linux声音系统)和旧Linux声音框架(OSS)的家tools - 用于测试或与Linux内核子系统交互的各种用户空间工具usr - 支持在内核映像中嵌入initrd文件virt - KVM(内核虚拟机)管理程序的主页

都看到这里了,码字不易,点赞收藏关注,三连。

标签: #linux 项目 源码 #linux代码图片