zoukankan      html  css  js  c++  java
  • Linux内核 -- 内核源码结构

    Linux 内核源代码的目录结构
    Linux 内核源代码包含如下目

    ● arch :包含和硬件体系结构相关的代码,每个架构的CPU都对应一个目录,如i386、arm、
        arm64、powerpc、mips 等。Linux 内核目前已经支持30 种左右的体系结构。在arch
        目录下,存放的是各个平台以及各个平台的芯片对Linux 内核进程调度、内存管理、
        中断等的支持,以及每个具体的SoC 和电路板的板级支持代码。


    ● block:块设备的通用函数,驱动程序I/O 调度。


    ● crypto:常用加密和散列算法(如AES、SHA 等),还有一些压缩和CRC 校验算法。


    ● documentation:内核文档:各部分的通用解释和注释。

    ● drivers :所有的设备驱动程序,每一类的驱动对应一个子目录,如drivers/block为块设备驱动

         、drivers/char为字符设备驱动程序、driver/mtd为NOR Flash /Nand Flash 等存储设备       的驱动


    ● fs:所支持的各种文件系统,如EXT、FAT、NTFS、JFFS2 等。


    ● include:内核头文件,与系统相关的基本头文件放置在include/linux 子目录下,各种驱动及功       能部件的头文件(如:include/media/ , include/mtd/ , include/net/ )、各种体系相关      的头文件(如:include/asm-arm/ , include/asm-i386),配置内核后,include/asm、      是某个include/asm-xxx的链接。


    init:内核初始化代码。内核引导后运行的第一个函数start_kernel() 就位于init/main.c 文件中。


    ipc进程间通信的代码。

    kernel :内核最核心的部分,包括进程调度、定时器等,而和处理器相关的部分代码放在          arch/*/kernal目录下。

    lib库文件代码,与处理器相关的库函数代码位于arch/*/lib目录下。


    mm:内存管理代码,和处理器相关的一部分代码放在arch/*/mm 目录下。


    ● net:网络相关代码,实现各种常见的网络协议。


    ● scripts:用于配置内核的脚本文件。


    ● security:主要是一个SELinux 的模块,安全、秘钥相关代码。


    ● sound:ALSA、OSS 音频设备的驱动核心代码和常用设备驱动。


    ● usr:实现用于打包和压缩的cpio 等。


      对于ARM架构的s3c2440,其体系相关的代码在 arch/arm目录下,在进行linux移植时,最先修改的就是此目录下的文件。通过下图了解一下内核代码的层次结构:

  • 相关阅读:
    【LeetCode】152. 乘积最大子数组(DP)
    【剑指Offer】49. 丑数(三指针)
    [P1979][NOIP2013] 华容道 (BFS建图+SPFA)
    [P1850][NOIP2016] 换教室 (期望+DP+Floyd)
    差分约束学习笔记
    [P1291][SHOI2002] 百事世界杯之旅 (期望)
    [P4342][IOI1998] Polygon (区间DP)
    [P3802] 小魔女帕琪 (期望)
    [P1273] 有线电视网 (树形DP+分组背包)
    树链剖分学习
  • 原文地址:https://www.cnblogs.com/y4247464/p/12333955.html
Copyright © 2011-2022 走看看