linux内核源码组织结构


内核特征

  1. 组织形式为整体式结构
  2. 进程调度方式简单有效
  3. 支持内核线程(守护进程)
  4. 支持多种平台的虚拟内存管理
  5. 虚拟文件系统
  6. 模块机制
  7. 增加系统调用
  8. 面向对象

好处

  1. 提升研发水平
  2. 开发操作系统
  3. 计算机领域研究
  4. 性能优化

系统结构

  1. 所处位置
  2. 子系统间关系
  3. 数据结构
  • task_struct: task数组(一个进程数据结构指针)
  • mm_struct: 进程的虚拟内存
  • inode: 索引节点

内核源码目录组织结构

  • 三组数字:内核主版本.稳定版本(或者开发版本).错误修补次数
    例如:Linux 3.6.34
    第一组数字:3,主版本号
    第二组数字:6,次版本号,稳定版本(偶数稳定版本,奇数开发版本)
    第三组数字:修订次数

目录说明

  • arch: 不同平台体系相关代码
  • block:块设备驱动
  • certs: 认证 签名相关代码
  • crypto:内核常用加密、压缩算法等代码
  • Documentation: 描述模块功能和协议规范代码
  • Drivers: 驱动程序(USB总线、PCI总线、显卡驱动等)
  • firmware: 主要是一些二进制固件
  • fs: 虚拟文件系统代码
  • include: 内核源码依赖 绝大部分头文件
  • init: 内核初始化代码, 内存各组件入口
  • ipc: 进程间通信实现,如共享内存、信号量、匿名管道等
  • kernel: 内核核心代码,包括进程管理、IRQ、时间等
  • lib: C标准库子集
  • mm: 内存管理相关实现
  • net: 网络协议代码,如TCP、IPv6、WiFi、以太网实现等
  • samples: 内核实例代码
  • scripts:编译和配置内核所需的脚本;perl bash等
  • security: 内核安全模型相关的代码, 如selinux等
  • sound:声卡驱动源码
  • tools: 与内核交互
  • usr: 用户打包和压缩内核的实现源码
  • virt: /kvm虚拟化目录相关支持实现
  • COPYING: 许可授权信息
  • CREDITS: 贡献者列表
  • Kbuild: 内核设定的脚本
  • Kconfig:开发人员配置内核时所需要的
  • MAINTAINERS: 目前维护者列表
  • Makefile: 编译内核的主要文件
  • README:编译内核信息,提供给开发者
技术参考

https://ke.qq.com/webcourse/3294666/103425320#taid=11011136509068746&vid=5285890814923270596