【linux】剖析底层——带你详细了解Linux内核源码的构成及其作用-程序员宅基地

技术标签: 运维  linux  系统架构  运维开发  centos  

目录

一、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)设备的驱动源码文件。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_60503432/article/details/128797362

智能推荐

R2机器人加载棋盘与棋子模型,对urdf、sdf的解释(区分srdf)_sdf和urdf-程序员宅基地

文章浏览阅读3k次,点赞51次,收藏41次。熟悉这些机器人的常见格式,对于创建和操作机器人是至关重要的_sdf和urdf

设计概念_设计概念功能独立-程序员宅基地

文章浏览阅读745次。一、软件工程中的设计数据设计或类设计将类模型转化为设计类的实现以及软件实现所要求的数据结构。体系结构设计定义了软件的主要结构化元素之间的关系、可满足系统需求的体系结构风格和模式以及影响体系结构实现方式的约束。接口设计描述了软件和协作系统之间、软件和使用人员之间如何通信。构件级设计将软件体系结构的结构化元素变换为对软件的过程性描述。二、软件质量指导原则和属性软件质量指导原则..._设计概念功能独立

Kettle定时任务调度_kettle任务调度-程序员宅基地

文章浏览阅读6.8k次,点赞10次,收藏65次。文章目录一、打开软件1.1 打开kettle1.2 打开SQL Server1.3 打开navicat1.3.1 navicat连接sqlserver准备sql server数据表(dept)准备sql server数据表(emp)1.3.2 navicat连接mysql1.4 可能出现的bug问题Error connecting to database: (using class org.gjt.mm.mysql.Driver)Error connecting to database: (using c._kettle任务调度

强力推荐!那些你不能错过的 GitHub 插件和工具_github与gitpod的插件-程序员宅基地

文章浏览阅读1.4w次,点赞5次,收藏19次。http://www.gad.qq.com/article/detail/32503以代码托管平台起家的 GitHub 网站,已然成为全球程序员工作和生活中不可或缺的一份子。从优秀的企业,到优秀的程序员,都将自己最优秀的代码作品存放在这片开源净土里,供彼此学习交流。GitHub Trending 栏目甚至已经成为 IT 从业人员的新闻日报,每日必读。既然 GitHu_github与gitpod的插件

PTPX中的time_based analysis-程序员宅基地

文章浏览阅读1.1k次。根据VCD文件的type,PTPX支持instantaneous peak power analysis和cycle_accurate peakpower analysis。Time-Based Power Analysis支持的VCD type 由于Gate_level和zero_delay的VCD不支持event propa..._ptpx time

VisualSVN安装图解-程序员宅基地

文章浏览阅读79次。VisualSVN安装教程、、、-----------------------------------参考网址:https://www.visualsvn.com/server/download/安装参考网址:http://www.jb51.net/article/71815.htm----------------------------------------------..._安装visualsvn

随便推点

程序员语言也有鄙视链!某美团程序员爆料:筛选简历时,用go语言的基本不看!网友:当韭菜还当出优越感了!...-程序员宅基地

文章浏览阅读645次。程序员使用的语言有鄙视链吗?有人说有,有人说没有。一个美团员工发帖说,筛选简历时用go语言的基本不看。短短一句话,把对go语言的鄙视体现得淋漓尽致,难道go语言真的不如其他语言?和他一..._go语言的鄙视链

小说网站系统源码|PHP付费小说网站源码带app-程序员宅基地

文章浏览阅读5.3k次。在本文中,我将解释如何将ink与Unity项目集成,以及如何使用ink API与我们的小说网站源码系统进行交互。在我们开始之前,请确保您有一个包含一些对话和选择的墨水文件。您可能想下载并使用我准备的示例故事。这实际上是来自Guilt Free的简化场景,通过分享这一点,我想向您展示一个真实的视觉小说系统源码示例和实际代码的技术。完整源码:xsymz.icu项目设置继续在 Unity 中创建一个新的 2D 项目。然后添加您可以在此处找到的墨水插件。在ink插件文件夹(Plugins/Ink)里会有一_小说网站源码

Swift编码规范_swift 正则判断文件类型-程序员宅基地

文章浏览阅读531次。参考API Design Guidelineshttps://swift.org/documentation/api-design-guidelines/swift-style-guidehttps://github.com/raywenderlich/swift-style-guide项目命名规范一、工程文件夹、文件目录结构【业务模块】1、文件夹采用下划线命名,名字全部小写下划线间隔,如module_login2、文件、类、结构体、枚举、协议采用大驼峰命名,每个单词首字母大写,如 MyCu_swift 正则判断文件类型

关于shell 中return用法解释(转)_shell return-程序员宅基地

文章浏览阅读2.2w次。1、return命令会使得一个函数返回.return命令会返回一个单一的数字参数, 而这个数字参数在调用这个函数的脚本中是可见的.如果没有指定返回参数,return在默认情况下会返回上一次命令的返回代码。2、了解一个概念:return value ﹗我们在 shell 下跑的每一个 command 或 function ,在结束的时候都会传回父行程一个值,称为 return value 。在 shell command line 中可用 $? 这个变量得到最"新"的一个 return value_shell return

Linux编译宏BUILD_BUG_ON_ZERO-程序员宅基地

文章浏览阅读834次。本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel”系列文章中),一来通过内核代码复习一下C语言及汇编语言的语法,二来学习内核开发大牛们书写代码的风格及思路。理解了上面之后,再来看看第二个BUILD_BUG_ON_NULL(e)宏,与第一个类似,-------------------------------------完--------------------------------_build_bug_on_zero

c51语言单片机打铃系统设计,基于单片机的自动打铃系统的设计-程序员宅基地

文章浏览阅读678次。//调用单片机头文件#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255#define uint unsigned int //无符号整型 宏定义 变量范围0~65535#include "eeprom52.h"#include "nongli.h"bit flag_2..._基于单片机的自动打铃控制系统设计提纲

推荐文章

热门文章

相关标签