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

news2024/11/17 18:28:28

 

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8 加载数据集

文章目录前提知识了解数据集Mini-Batch常用术语DataLoader核心参数核心功能小tips课程代码实例课程来源: 链接课程文本部分来源(参考): 链接以及(强烈推荐) Birandaの前提知识了解 enumerate函数 数据集 …

局域网中UTP连接,如何实现防止芯片损坏,防止信号产生各种误码,及实现CHIP之间的阻抗匹配

Hqst盈盛电子导读:局域网中UTP连接,如何实现防止芯片损坏,防止信号产生各种误码,及实现CHIP之间的阻抗匹配,浅谈网络滤波器作用一,在有线局域网中,计算机与服务器之间,计算机与路由器…

10、条件语句

目录 一、if语句的基本形式 1. if语句形式 2. if…else语句形式 3. else if语句形式 二、if的嵌套形式 三、条件运算符 四、switch语句 1. switch语句的基本形式 2. 多路开关模式的switch语句 一、if语句的基本形式 在if语句中,首先判断表达式的值&#x…

【BetterBench】2023年美赛辅导

通知 2023年美赛快开始啦,提醒大家比赛信息,比赛期间我会全称提供辅导,包括建模方案、实现代码! 可以参考往年所有建模比赛,本人开源的建模方案及实现代码 2020-2023年所有数学建模竞赛专栏 报名信息 1.辅助报名截止…

【异常】前端Babel提示 Support for the experimental syntax ‘jsx‘ isn‘t currently enabled

一、报错内容 17:33:41 - Building for production... 17:34:13 ERROR Failed to compile with 5 errors5:34:09 PM 17:34:13 17:34:13 error in ./src/layout/components/Sidebar/Item.vue?vue&typescript&langjs& 17:34:13 17:34:13 Syntax Error…

《流浪地球2》看不懂?根服务器、权威解析,专业科普来了

随着《流浪地球2》的上映,关于国产硬科幻电影的话题也火爆起来,片中各种脑洞大开,科技设定可圈可点,例如量子计算机、脑机接口、太空电梯等。从专业角度来看,作为国产科幻大片之光的《流浪地球2》为了保证真实性确实狠…

二叉平衡树 之 红黑树 (手动模拟实现)

目录 1、红黑树的概念 2、红黑树的性质 3、红黑树节点的定义 4、红黑树的插入 5、红黑树验证 代码汇总 6、红黑树的删除(了解) 7、红黑树的应用 8、红黑树 VS AVL树 1、红黑树的概念 红黑树,就是一种特殊的二叉搜索树,每个…

MySQL详解(四)——高级 2.0

性能分析 Explain 使用EXPLAIN关键字可以模拟优化器(不改变查询结果前提下,调整查询顺序,生成执行计划)执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈 功能&#x…

ECharts线性渐变色示例演示(2种渐变方式)

第003个点击查看专栏目录Echarts的渐变色采用了echarts.graphic.LinearGradient的方法,可以根据代码中的内容来看如何使用。线性渐变,多用于折线柱形图,前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1,相当于在图形包围盒中的百分…

PTA L1-025 正整数A+B(详解)

前言:本期是关于正整数AB的详解,内容包括四大模块:题目,代码实现,大致思路,代码解读,今天你c了吗? 题目: 题的目标很简单,就是求两个正整数A和B的和&#xf…

用户使用苹果AirTag来追踪宠物存在风险,苹果Find My功能用处广

苹果的 AirTag 不失为追踪宠物的一种便捷方式,这样宠物即便挣脱宠物圈或者其它方式丢失,都可以通过“Find My”方式追踪定位。正如《华尔街日报》所指出的,这种方式也存在 AirTag 被宠物吞食的风险。 AirTag 的直径为 1.26 英寸&#xff0c…

【Faster R-CNN】之 Resize_and_Padding 代码精读

【Faster R-CNN】之 Resize_and_Padding1、前言:2、resize_image_and_bbox1)先对图像做resize处理2)再对 bounding box 做resize处理3、padding_images代码1、前言: 在上一篇文章 【Faster R-CNN】之 Dataset and Dataloader 代码…

Linux网络:传输层之UDPTCP协议

文章目录一、端口号1.端口号范围划分2.常用命令二、UDP 协议1.格式2.特点3. UDP 的缓冲区4. UDP 使用注意事项5.基于 UDP 的应用层协议三、TCP 协议1.格式2.确认应答机制3.超时重传机制4.连接管理机制三次握手四次挥手5.滑动窗口6.流量控制7.拥塞控制8.延迟应答9.捎带应答10.面…

PyQt5利用Qt Designer制作一个可以拖动获取文件信息的页面

前言 本篇在讲什么 用pyqt5制作一个简单的程序,拖动文件或脚本可以读取文件信息 本篇适合什么 适合初学PyQt5的小白 本篇需要什么 对Python语法有简单认知 对Qt有简单认知 依赖Pycharm编辑器 本篇的特色 具有全流程的图文教学 重实践,轻理论&…

[Golang实战]整理Golang忽略的问题

整理Golang忽略的问题参考资料1.WaitGroup与GoRoutine的竞速2.Mutex互斥锁和RWMutex互斥读写锁3.poll,select,epoll4.何时栈和堆?5.GoRoutine合理使用6.GoRoutine优雅退出6.1data channel关闭通知退出6.2exit channel关闭通知退出6.3context超时或取消通知退出6.4WaitGroup/Er…

IPWorks EDI 2022.0.8381 for NET Crack

IPWorks EDI基于用于安全 EDI 通信(AS2、SFTP、OFTP、RosettaNet、MLLP 等)的领先 EDI-INT 协议,IPWorks EDI 库包含促进安全 EDI 消息传递以及 EDI 映射、翻译和验证(X12、 EDIFACT、HL7、TRADACOMS、VDA、XML 和 JSON&#xff0…

golang/安装

golang中文官网 https://golang.google.cn/ golang下载 安装 一路next 配置 配置值说明GOROOTD:\ProgramFiles\golanggolang安装目录PATHD:\ProgramFiles\golang\bingolang命令路径GO111MODULEon开启go.mod功能,go.mod是go官方依赖包管理工具GOPROXYhttps://go…

【FPGA笔记系列7】时序逻辑电路基础D触发器

时序逻辑电路 组合逻辑与时序逻辑电路的本质区别:时序逻辑电路的输出和前一时刻的状态有关,组合逻辑电路的输出只和当前的输入有关 与非门RS锁存器的缺陷:当SR从00变到11时,状态不稳定! 电路中小圈圈表示低电平有效! 透明锁存器 R=1当En=1时,Q=S当En=0时,后面为RS触发器…

使用git合并两个不同项目代码

使用git合并两个不同项目代码 前言, 这里解决的是两个不同的项目, 因为不同项目那必然是两个不同的git仓库 都是不同的git仓库了那就更不可能是相同的分支了(即使分支名相同) 至于为什么会有这种业务情况出现, 我也不知道, 反正先学干就完了 这里图形化界面演示用的是idea自带的…

人工智能时代八大类算法你了解吗?(包邮送书6本)

文章目录本文导读1. 关联规则分析2. 回归分析3. 分类分析4. 聚类分析5. 集成学习6. 自然语言处理7. 图像处理8. 深度学习9. 书籍推荐(包邮送书6本)本文导读 从零带你了解人工智能时代需要掌握的8大类算法,包括基础理论、关联规则分析、回归分…