kernel目录介绍

linux kernel目录介绍

参考文档:https://blog.csdn.net/weixin_38715577/article/details/101365039
参考文档:https://blog.csdn.net/sddxqlrjxr/article/details/51508349
参考文档:https://blog.csdn.net/Y_Hanxiao/article/details/84584333

1、我下载的是linux-5.7.11

1.1解压后显示目录如图所示

截图.png

1.2目录解释

序号                第二级目录 第二级目录和文件
1 arch 这个文件夹包含了一个Kconfig文件,它用于设置这个目录里的源代码编译所需的一系列设定。每支持的处理器架构都在它相应的文件夹中,如arm64arm32、``x86``mips等。
/boot:内核需要的特定平台代码
/boot/dts:设备树文件
/lib:通用函数在特定体系结构的文件
/math-emu:模拟FPU的代码,在ARM中,使用/math-xxx代替
/mm:特定体系结构的内存管理文件
/include:特定体系的头文件
2 block 此文件夹包含块设备驱动程序的代码,该目录用于实现块设备的基本框架和块设备的I/O调度算法。块设备是以数据块方式接收和发送的数据的设备。数据块都是一块一块的数据而不是持续的数据流。
3 crypto 这个文件夹包含许多加密算法的源代码。例如,“sha1_generic.c”这个文件包含了SHA1加密算法的代码。存放加密、压缩、CRC校验等算法相关代码
4 Documentation 存放相关说明文档,很多实用文档,包括驱动编写等
5 drivers 存放 Linux 内核设备驱动程序源码。驱动源码在 Linux 内核源码中站了很大比例,常见外设几乎都有可参考源码,对驱动开发而言,该目录非常重要。该目录包含众多驱动,目录按照设备类别进行分类,如char、block、input、i2c、spi、pci、usb等
6 firmware 保存用于驱动第三方设备的固件。
7 fs 这是文件系统的文件夹。理解和使用的文件系统所需要的所有的代码就在这里。在这个文件夹里,每种文件系统都有自己的文件夹。例如,ext4文件系统的代码在ext4文件夹内。 在fs文件夹内,开发者会看到一些不在文件夹中的文件。这些文件用来控制整个文件系统。例如,mount.h中会包含挂载文件系统的代码。文件系统是以结构化的方式来存储和管理的存储设备上的文件和目录。每个文件系统都有自己的优点和缺点。这是由文件系统的设计决定的。
8 include 存放内核所需、与平台无关的头文件,与平台相关的头文件已经被移动到 arch 平台的include 目录,如 ARM 的头文件目录<arch/arm/include/asm/>
9 init 包含内核初始化代码,init文件夹包含了内核启动的处理代码(INITiation)。main.c是内核的核心文件,这是用来衔接所有的其他文件的源代码主文件。
10 ipc 存放进程间通信代码, 此文件夹中的代码是作为内核与进程之间的通信层。内核控制着硬件,因此程序只能请求内核来执行任务。假设用户有一个打开DVD托盘的程序。程序不直接打开托盘,该程序通知内核,然后,内核给硬件发送一个信号去打开托盘。
11 kernel 这个文件夹中的代码控制内核本身,在该文件夹下有个"power"文件夹,这里的代码可以使计算机重新启动、关机和挂起。
12 lib 这个文件夹包含了内核需要引用的一系列内核库文件代码。
13 mm mm文件夹中包含了内存管理代码。内存并不是任意存储在RAM芯片上的。相反,内核小心地将数据放在RAM芯片上。内核不会覆盖任何正在使用或保存重要数据的内存区域。
14 net net文件夹中包含了网络协议代码。这包括IPv6、AppleTalk、以太网、WiFi、蓝牙等的代码,此外处理网桥和DNS解析的代码也在net目录。
15 samples 这个文件夹有内核编译所需的脚本。最好不要改变这个文件夹内的任何东西。否则,您可能无法配置或编译内核。
16 srcipts 这个文件夹有内核编译所需的脚本。最好不要改变这个文件夹内的任何东西。否则,您可能无法配置或编译内核。
17 security 这个文件夹是有关内核安全的代码。它对计算机免于受到病毒和黑客的侵害很重要。否则,Linux系统可能会遭到损坏
18 sound 这个文件夹中包含了声卡驱动,存放声音系统架构相关代码和具体声卡的设备驱动程序
19 tools 编译过程中一些主机必要工具,这个文件夹中包含了和内核交互的工具。
20 usr 早期用户空间代码(所谓的initramfs)
21 virt 内核虚拟机KVM

2、相关目录详细介绍

2.1 arch

alpha 处理器
Alpha 处理器最早由美国DEC 公司设计制造,在Compaq (康柏)公司收购DEC 之后,Alpha 处理器继续得到发展,并且应用于许多高档的Compaq 服务器上,HP (惠普)收购的Compaq ,Alpha 便为HP(惠普)所有,不过HP (惠普)已经放弃发展alpha 处理器。

arm 处理器
Arm 系列处理器 是英国Arm 公司设计的主流嵌入式32 位RISC 处理器,Arm 公司不直接生产Arm 处理器,而是采用IP 授权的方式由第3 方开发生产,著名的公司如Ti 、Samsung 等都有出品Arm 处理器。目前在手机领域广泛应用。

avr32 处理器
Avr32 处理器美国 Atmel 公司设计开发的32 位RISC 处理器, 设计目的是在每一个时钟周期内完成更多处理工作,从而在较低的时钟频率下实现相同的吞吐量。适合在工业控制、汽车电子等嵌入式设备领域中使用。Avr32 属于MCU 型的处理器。

blackfin 处理器
Blackfin 处理器是美国ADI 公司开发的具有DSP 能力的 32 位RISC 处理器, Blackfin 处理器基于由 ADI 和 Intel 公司联合开发的微信号架构 (MSA ), 适用于 嵌入式音频、视频和通信应用等领域。

cris 处理器
Cris 处理器是 瑞典 Axis 通信公司开发的32 位RISC 处理器,主要用于网络设备,属于比较专业的应用领域。因为 Axis 通信公司主要开发网络监控设备,所以 Cris 处理器在其网络监控设备中应用广泛。

frv 处理器
Frv 处理器是 日本富士通开发的32 位高性能RISC处理器, 采用VLIW (Very Long Instruction Word )构架,具备良好的多媒体处理能力,在机顶盒(STB )、数码刻录机(DVR )、数码相机(DSC)等嵌入式领域应用广泛。

h8300 处理器
H8300 处理器是 日本瑞萨科技开发的32 位高性能RISC 处理器, 具有强大的位操作指令,最适于实时控制应用如汽车电子、家用电器、医疗器械等领域。H8300 属于MCU 型的处理器。

ia64 处理器
Ia64 处理器是 美国英特尔开发的面向服务器应用的64 位处理器, 由于具有64 位寻址能力,它能够使用100 万TB 的地址空间,足以运算企业级或超大规模的数据库任务;64 位宽的寄存器可以使CPU 浮点运算达到非常高的精度。

m32r 处理器
M32r 处理器是 日本瑞萨科技开发的32 位高性能RISC 处理器, 内置大容量存储器,适用于车载系统、数字AV 设备、数字成像设备等产品领域。属于MCU 型的处理器。

m68k 处理器
M68k 处理器是美国 Motorola 公司开发的高性能处理器, 具有高性价比、高集成度等特点,在工业自动化设备、控制设备、医疗仪器系统、安全系统等领域多有应用。现在为Freescale 公司所有, 风头已不敌PowerPC 处理器。

microblaze 处理器
Microblaze 处理器是美国 Xilinx 公司提供的嵌入在其FPGA 芯片上的32 位RISC 软核。 它具有运算能力强、外围接口配置灵活等特点,集成在 FPGA之中,可以和FPGA 实现协同设计,具备软硬件可配置的灵活性。

mips 处理器
Mips 处理器 是由美国斯坦福大学Hennessy 教授领导的研究小组研制出来, 现为Mips 公司拥有,和Arm 处理器一样采用IP 授权的方式由第3 方开发生产。著名的公司如Broadcom 、Nxp 等都有出品Mips处理器。我国的龙芯CPU 也是采用Mips 体系结构。

mn10300 处理器
Mn10300 处理器 日本松下开发的32 位多媒体处理器。

parisc 处理器
Parisc 处理器是由 HP (惠普)开发设计的处理器,主要用于HP (惠普)公司的服务器中,目前HP(惠普)已经放弃 Parisc 处理器的开发,不过一些Parisc 处理器技术已经融合到ia64 处理器之中。

powerpc 处理器
Powerpc 处理器是由美国IBM 、Apple 、Motorola 联合开发的处理器,Powepc 处理器在IBM 的服务器、Apple 的MAC 电脑中都有应用。不过现在多应用在网络设备、视频系统、工业系统等领域。Sony PS3 游戏机Cell 处理器也是Powerpc 体系结构。

s390 处理器
S390 处理器是由美国IBM 开发的面向大型机应用的处理器 。

score 处理器
Score 处理器是由台湾 凌阳开发的32 位RISC 处理器。Score 属于MCU 型的处理器。

sh 处理器
Sh 处理器又称SuperH 处理器 ,最先由日本Hitachi 公司开发,后由 Hitachi 及 ST Microelectronics 两家公司共同开发,2003 年 瑞萨科技从 Hitachi 公司继承到拥有权。Sh 属于MCU 型的处理器。

sparc 处理器
Sparc 处理器是由美国SUN 和TI 公司共同开发的RISC 微处理器,最突出的特点就是它的可扩展性。SUN 公司将它做为高端处理器应用到服务器产品。

x86 处理器
X86 处理器是由美国Intel 推出的 复杂指令集(cisc ) 处理器,广泛应用在PC 电脑领域和服务器领域,在工业控制领域也有应用。目前主要是Intel、AMD 、VIA 在开发x86 体系结构的处理器。

xtensa 处理器
Xtensa 处理器是由美国 Tensilica (泰思立达)公司开发的可配置及可扩展的微处理器

2.2driver

序号 目录 说明
1 drivers/gpio 系统GPIO子系统和驱动目录,包括处理器内部GPIO以及外扩GPIO驱动。遵循GPIO子系统的驱动,可通过/sys/class/gpio进行访问。
2 drivers/hwmon 硬件监测相关驱动,如温度传感器、风扇监测等。
3 drivers/i2c I2C子系统驱动。各I2C控制器的驱动在i2c/busses目录下。
4 drivers/input 输入子系统驱动目录。
5 drivers/input/keyboard 非HID键盘驱动,如GPIO键盘、矩阵键盘等。
6 drivers/input/touchscreen 触摸屏驱动,如处理器的触摸屏控制器驱动、外扩串行触摸屏控制器驱动、串口触摸屏控制器驱动等。
7 drivers/leds LED子系统和驱动,如GPIO驱动的LED。遵循 LED子系统的驱动 ,可通过/sys/class/leds进行访问。
8 drivers/mfd 多功能器件(Multi-Function Device)驱动。如果一个器件能做多种用途,通常需要借助MFD来完成。
9 drivers/misc 杂项(Miscellaneous)驱动。特别需要关注<drivers/misc/eeprom/>目录,提供了i2c和spi接口的EEPROM驱动范例,所驱动的设备可通过/sys系统访问。
10 drivers/mmc SD(Secure Digital)/MMC(Mutimedia Card)卡驱动目录。
11 drivers/mtd MTD(Memory Technology Device)子系统和驱动,包括NAND、oneNAND等。注意,UBI的实现也在MTD中。
12 drivers/mtd/nand NAND FALSH的MTD驱动目录,包括NAND的基础驱动和控制器接口驱动。
13 drivers/net 网络设备驱动,包括MAC、PHY、CAN、USB 网卡、无线、PPP协议等。
14 drivers/net/can CAN设备驱动。Linux已经将CAN归类到网络中,采用socket_CAN接口。
15 drivers/net/ethernet 所支持的MAC驱动。常见厂家的MAC驱动都能找到,如broadcom、davicom、marvell、micrel、smsc等厂家的MAC,处理器自带MAC的驱动也在该目录下。
16 drivers/net/phy PHY驱动,像marvell、micrel和smsc的一些PHY驱动。
17 drivers/rtc RTC子系统和RTC芯片驱动。
18 drivers/spi SPI子系统和SPI控制器驱动,含GPIO 模拟SPI的驱动。
19 drivers/tty tty驱动用于管理物理终端连接。
20 drivers/tty/serial 串口驱动,包括8250串口以及各处理器内部串口驱动实现。
21 drivers/uio 用户空间IO驱动。
22 drivers/usb USB驱动,包括USB HOST、Gadget、USB转串口以及OTG等支持。
23 drivers/video Video驱动,包括Framebuffer驱动、显示控制器驱动和背光驱动等。
24 drivers/video/backlight 背光控制驱动。
25 drivers/video/logo Linux内核启动LOGO图片目录。
26 drivers/watchdog 看门狗驱动,包括软件看门狗和各种硬件看门狗驱动实现。

2.3 include

include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在 include/linux 子目录下,与 intel cpu相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关 scsi设备的头文件目录;

2.4 init

这个目录包含核心的初始化代码(注:不是系统的引导代码),包含两个文件main.c和Version.c,这是研究核心如何工作的一个非常好的起点。

2.5 kernel

主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同样,和体系结构相关的代码在arch/*/kernel中

2.6 mm

这个目录包括所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等;而和体系结构相关的内存管理代码则位于arch/*/mm/,例如arch/i386/mm/Fault.c

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269