【linux】剖析底层——带你详细了解Linux内核源码的构成及其作用(1)

目录

一、arch文件

1.作用

2.arch文件下的子文件示意图

3.各个子文件的作用

(1)alpha

(2)arc

(3)arm

(4)arm64

(5)cshy

(6)hexagon

(7)ia64

(8)loongarch

(9)m68k

(10)microblaz

(11)mips

(12)nios2

(13)openrisc

(14)parisc

(15)powerpc

(16)riscv

(17)s390

(18)sh

(19)sparc

(20)um

(21)x86

(22)xtensa

(23).gitignore

(24)Kconfig

二、block文件

1.作用

2.block文件下子文件示意图

3.各个子文件的作用

(1)partitions文件

(2)磁盘设备管理文件

(3)磁盘哈希表文件

(4)磁盘I/O队列文件

(5)定时器队列文件

(6)磁盘追踪文件

(7)内核区分管理文件

(8)剥离文件

(9)硬盘加密文件

(10)磁盘镜像文件

(11)只能磁盘I/O调度文件

三、certs文件

1.作用

2.各个子文件的作用

(1)ca-bundle.trust.crt

(2)ca-bundle.crt

(3)ca-certificates.crt

(4)ca-certificates-cacert.pem

(5)ca-certificates.crt.txt

四、crpyto文件

1.作用

2.各个子文件的作用

(1)aes.ko

(2)ans.ko

(3)md5.ko

(4)sha1.ko

(5)ecryptfs.ko

(6)des.ko

(7)cast.ko

(8)hmac.ko

五、Documentation文件

1.作用

六、drivers文件

1.作用

2.各个子文件的作用

(1)acpi文件夹

(2)block文件夹

(3)firewire文件夹

(4)GPU文件夹

(5)hwmon文件夹

(6)input文件夹

(7)ion文件夹

(8)media文件夹

(9)net文件夹

(10)rtc文件夹

(11)scsi文件夹

(12)sound文件夹

(13)vfio文件夹

(14)w1文件夹


一、arch文件

1.作用

arch文件夹用于定义支持的架构和每个架构所需要的CPU处理器特定代码。它包含各种处理器架构的支持,包括汇编代码、核心实现和其他驱动程序,如X86、PowerPC、ARM、MIPS、SPARC、S390等。它还包含有关架构特定的处理器和中断处理器特定的信息,用于在整个系统中执行操作。

2.arch文件下的子文件示意图

3.各个子文件的作用

(1)alpha

alpha文件夹是内核源代码支持DEC alpha处理器的相关操作系统文件,包括主要抽象层,通用文件和架构相关文件。

(2)arc

arc文件夹是内核源代码支持SynopsysARC处理器的相关操作系统文件,其中包括主要抽象层,通
用文件和架构相关文件。

(3)arm

arm文件夹是内核源代码支持ARM处理器的相关操作系统文件,其中包括主要抽象层,通用文件和架构相关文件。

(4)arm64

arm64文件夹是内核源代码支持ARM64处理器的相关操作系统文件,其中包括主要抽象层,通用文件和架构相关文件。

(5)cshy

cshy文件夹下的cshy文件夹是内核源代码支持高通处理器的相关操作系统文件,其中包括主要抽象层,通用文件和架构相关文件。

(6)hexagon

是一个针对赛讯的嵌入式多处理器架构的linux内核支持,可以实现控制系统优化,高效率的计算单元。它能够处理赛讯表下发来的压缩代码,实现运算极大提高,多处理器和多核心技术确保系统高性能。

(7)ia64

表示Intelltanium存储器架构,是英特尔公司专门针对64位处理器的x86体系结构的构建,使用EPlC(Explicitly ParallelInstructionComputing)优化、改良的高性能处理机架构。它主要用于comp
uting领域,服务器市场和位图设备,它通常将Linux和Windows结合使用。

(8)loongarch

是中国龙芯基金会自主研发的64位权威处理器解决方案,采用多处理器技术实现计算和图形处理器整合,帮助企业规模和小型用户实现普及套用新一代计算机语言,把握更新整合知识的机遇。

(9)m68k

一种32位核心的处理器架构,能提供支持多种低功率的处理能力,并且可以在不同的软件环境中运行,如Linux、 Unix、VxWorks等.运行在m68k系统上的应用程序在移植到其他系统上也可正常执行。m68k平台也是应用在Android智能手机、平板电脑和苹果手机等多种终端设备上的。

(10)microblaz

它是一种精简的可编程处理器,由Xilinx开发,其也是一种庞大的RISC处理器。

(11)mips

它是一种RISC处理器体系结构,其中包含多款不同的处理器产品,包括针对低成本,大容量存储,虚拟化,图形处理,以及应用程序指令优化的设计。

(12)nios2

它是一种基于精简的定制的RISC系统的处理器,由Altera开发,其被称为NiosIl处理器。

(13)openrisc

它是一种开源RISC处理器体系结构,其包含一系列独特的体系结构指令以及多种定制硬件支持。

(14)parisc

它是一种由Hewlett Packard(现代Hewlett Packard Enterprise)开发的RISC处理器体系结构,其于1990年代晚期出现,后来被PA-RISC2.1系统取代。

(15)powerpc

它是一种架构,由IBM,Motorola和Apple合作开发,用于构建高性能,小而紧凑的体系结构指令集(RISC)处理器。

(16)riscv

它是一种新的RISC处理器架构,由RISC-V基金会支持,它是一个开放标准,旨在改变嵌入式,移动,网络和云计算系统的技术。

(17)s390

它是一种IBM的架构,用于构建极高性能的RISC处理器,其具有多项必备的硬件功能,可支持指令集向后兼容性,以及低能耗和高可靠性。

(18)sh

它是一个标准RISC处理器架构,由Hitachi/Renesas开发,作为针对32位和64位应用程序的小体积,功耗效率和性能优越的体系结构。

(19)sparc

它是由Sun Microsystems(后来被Oracle收购)开发的一种RISC处理器体系结构,其具有针对浮点计算,高大容量存储,虚拟存储器和互操作性的优势。

(20)um

 它是一种可扩展的,高度可移植的RISC体系结构,其由Uni-Micro开发,包括多款处理器,交换机,以及网络存储器。

(21)x86

它是一种架构,由Intel设计用于其系列芯片组产品,其具有针对大多数主流桌面,笔记本电脑和移动设备产品的指令集向后兼容性。

(22)xtensa

它是一种低功耗的RISC处理器,由Tensilica公司开发,具有高可配置性,包括可自定义的指令集,硬件加速器,多处理器,高容量存储,以及多个安全等级的支持。

(23).gitignore

它是一个普通文件,其为Git配置指定了哪些文件和目录应该被Git忽略,以及如何处理已添加到仓库中的文件。

(24)Kconfig

Kconfig文件夹:它是Linux内核开发过程中用于管理系统配置和内核特性的文件夹,其包含一些特定的配置文件,用于配置不同硬件和软件组件。

二、block文件

1.作用

block文件夹中包含用于处理/O请求的核心内核实现,如块设备驱动和支持访问块设备的内核抽象层。它还包括一些用于处理块设备访问的辅助模块,如块请求处理和管理,硬盘缓存管理和磁盘空间管理等等。

2.block文件下子文件示意图

3.各个子文件的作用

(1)partitions文件

partitions文件夹中存放的是Linux内核中支持的分区表(partition table),包括MS-DOS、GPT以及
Bios Partition Table等。

(2)磁盘设备管理文件

block/genhd.c、drivers/block/ll_rw_blk.c和block/partitions/check.c.

(3)磁盘哈希表文件

block/blk-hash.c

(4)磁盘I/O队列文件

block/elevator.c和block/blk-mq.c

(5)定时器队列文件

block/blk-timeout.c

(6)磁盘追踪文件

block/blk-core.c

(7)内核区分管理文件

block/genhd.c

(8)剥离文件

block/blk-core.c

(9)硬盘加密文件

block/blk-crypto.c

(10)磁盘镜像文件

block/snapshot.c

(11)只能磁盘I/O调度文件

block/cfq-iosched.c和block/deadline-iosched.c

三、certs文件

1.作用

certs文件夹保存本地证书和密钥信息,用于Linux内核中的安全特性,如身份验证和认证。它也可以用于TLS/SSL,以便客户端和服务器之间的安全通信。

2.各个子文件的作用

(1)ca-bundle.trust.crt

该文件由X.509证书和信任门户列表组成,用于校验网站的安全证书。

(2)ca-bundle.crt

该文件包含一系列经过颁发的X.509根证书,用于验证用于互联网的HTTPS连接的安全证书的有效
性。

(3)ca-certificates.crt

该文件对证书的所有者和 issuer 进行签名,以验证对于加密通讯的所有者的身份证明。

(4)ca-certificates-cacert.pem

该文件由从网络无效的Cacert根证书制作而成,以认证SSL证书的有效性。

(5)ca-certificates.crt.txt

该文件中包含一系列X.509根证书,用来验证客户端/服务器之间的SSL连接证书的有效性。

四、crpyto文件

1.作用

rypto文件夹包含内核用于实现加密. 、解密、数字签名和Hash算法的模块,提供给用户态应用程序编程所需的crypto APl。它还提供一些支持硬件加速器的模块,以及允许用户在不同算法之间转换的能力。

2.各个子文件的作用

(1)aes.ko

这是AES算法的内核模块,允许管理员使用AES加密的数据流

(2)ans.ko

这是ANS算法的内核模块,通过将标准的ASCII文本转换为增强的字符串,从而防止误用和特定字符的攻击

(3)md5.ko

这是MD5算法的内核模块,允许管理员使用MD5加密数据流;

(4)sha1.ko

这是SHA-1算法的内核模块,允许管理员使用SHA-1加密数据流;

(5)ecryptfs.ko

这是Ecryptfs算法的内核模块,提供安全可靠的文件系统加密功能;

(6)des.ko

这是DES算法的内核模块,允许管理员使用DES加密的数据流;

(7)cast.ko

这是CAST算法的内核模块,允许管理员使用CAST加密的数据流;

(8)hmac.ko

这是HMAC算法的内核模块,可根据哈希函数实现消息认证的功能。

五、Documentation文件

1.作用

Documentation文件夹主要记录Linux内核源码中的说明文档,主要用于对开发者有一个基本的了解,例如关于Linux内核的一些特性、一些代码组织形式等相关文档;以及Linux系统调用,字符设备的和文件系统的指南,还有某些编程相关的内容;也可以用于查看接口文档,这样可以更好的理解内核编程基本知识。

六、drivers文件

1.作用

drivers文件夹的文件一般用来放置存放设备驱动的代码,这些文件会在Linux内核启动或者关闭的时候被加载或卸载,从而提供各种设备相关的功能并且支持与其他Linux 命令接口。例如:存储设备驱动,网络设备驱动、显示设备驱动等等。

2.各个子文件的作用

(1)acpi文件夹

是存放可编程计算机接口(ACPI)相关的硬件驱动代码。

(2)block文件夹

存放块设备(如硬盘、光驱等)的驱动源码文件。

(3)firewire文件夹

存放火线(FireWire)设备的驱动源码文件。

(4)GPU文件夹

存放GPU(图形处理器)相关的硬件驱动代码。

(5)hwmon文件夹

存放硬件监控器(如温度传感器、电压传感器等)的驱动

(6)input文件夹

存放系统输入设备(如鼠标、键盘等)的驱动源码文件。

(7)ion文件夹

存放有关ION内存管理驱动程序的源码文件。

(8)media文件夹

存放媒体设备(如摄像头、拍照机等)的驱动源码文件。

(9)net文件夹

存放网络接口设备(如网卡等)的驱动源码文件。

(10)rtc文件夹

存放实时时钟(RealTimeClock)的驱动源码文件。

(11)scsi文件夹

存放SCSI设备的驱动源码文件。

(12)sound文件夹

存放声卡设备的驱动源码文件。

(13)vfio文件夹

存放虚拟功能输入/输出(VFIO)设备的驱动源码文件。

(14)w1文件夹

存放单线一比特协议(1-Wire)设备的驱动源码文件。

猜你喜欢

转载自blog.csdn.net/qq_60503432/article/details/128797362