linux内核源码目录结构

分析Linux内核源码目录组织结构

Linux内核特征

  • Linux内核的组织形式为整体式结构;

  • Linux进程调度方式简单而高效;

  • Linux内核支持内核线程(守护进程);

  • Linux内核支持多种平台的虚拟内存管理;

  • Linux内核另一个独具特色的部分是虚拟文件系统(VFS,Virtual File System);

  • Linux的模块机制使得内核保持独立而又非常容易扩充;

  • 增加系统调用主要是满足特殊的需求;

  • Linux内核网络模块面向对象的设计思想(支持多种协议、多种网卡驱动程序等等)。

Linux操作系统结构

Linux内核在系统中的位置

Linux内核并不是孤立的,要把它放到整个系统中去研究更容易理解,如下如所示内核在操作系统的位置。

系统调用本身也是由若干条指令构成的过程,实现一些特定的服务,但它与一般过程区别在于:系统调用是运行内核态(系统态),而一般过程是运行在用户态。内核实际是抽象的资源操作到具体硬件操作细节之间的接口。

Linux内核各个子系统之间关系

linux内核源码目录结构_第1张图片

  • 进程调度:控制着进程对CPU的访问操作;
  • 内存管理(MM):允许多个进程安全的共享主存区域;
  • 虚拟文件系统(VFS):分为设备驱动程序和逻辑文件系统;
  • 网络管理:提供对各种网络协议的存取和网络硬件的支持;
  • 进程间通信:支持进程间各种通信机制。

Linux内核源码结构

Linux内核版本有两种:稳定版和开发版,Linux内核版本号由3组数字组成,第一组数字:目前发布的内核主版本;第二组数字:偶数表示稳定版,奇数表示表示开发中版本;第三组数字:错误修补次数。

例如:Linux3.6.34

第一组数字:3,主版本号

第二组数字:6,次版本号,表示稳定版本(因为它是偶数)

第三组数字:34,修订版本号,表示修改的次数,头两个数字全在一起可以描述内核系列

系统数据结构

在Linux内核中,有些使用频率度较高的数据结构如下:

  • task_struct:代表一个进程数据结构指针形成一个task数组。

  • mm_struct:代表进程的虚拟内存。

  • inode:代表虚拟文件系统的文件、目录等对应的索引节点(inode)

Linux内核源码组织

为了深入地了解Linux的实现机制,还必须阅读Linux的内核源代码,下面是对有关源代码的介绍。内核源代码的版本多,对不同的内核版本,系统调用一般是相同的。新版本也许可以增加一个新的系统调用,在大多数情况下,设备文件将仍然相同,而另一方面,版本之间的内部接口有所变化。

linux内核源码目录结构_第2张图片

  • 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虚拟化目录相关支持实现。

你可能感兴趣的:(Linux内核学习,linux)