首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 内核Linux 内核源码目录说明 ① ( arch 目录 | block 目录 | certs 目录 | crypto 目录 | Documentation 目录 )

文章目录 一、arch 目录 二、block 目录 三、certs 目录 四、crypto 目录 五、Documentation 目录 在上一篇博客 【Linux 内核Linux 内核源码结构 ( 下载...Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 ) 中 , 使用了 Visual Studio Code 查看 Linux 内核源码 , 本篇博客开始分析 Linux 内核源码结构.../x86 目录下 ; 每种体系结构 , 都有 相应的子目录 , 如 arm , arm64 分别是 arm 32 位和 64 位平台 ; 二、block 目录 ---- block 目录 , 是子系统目录..., 其中存储了 块设备驱动 相关代码 ; 三、certs 目录 ---- certs 目录中存储了 认证 和 签名 相关代码 ; 四、crypto 目录 ---- crypto 目录中存储了 内核中常用的...加密 , 压缩 等算法 相关代码 ; 五、Documentation 目录 ---- Documentation 目录中存储了 内核中常用的 协议规范 , 功能模块 相关代码 ;

11.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

Linux 内核Linux 内核源码目录说明 ② ( drivers 目录 | fs 目录 | include 目录 | init 目录 | ipc 目录 | kernel 目录 )

文章目录 一、drivers 目录 二、fs 目录 三、include 目录 四、init 目录 五、ipc 目录 六、kernel 目录 一、drivers 目录 ---- drivers 目录中存储了...驱动程序 相关代码 , 如 USB 总线驱动程序 , PCI 总线驱动程序 , 显卡驱动程序 , 网卡驱动程序 等 ; 二、fs 目录 ---- fs 目录中存储了 虚拟文件系统 ( Virtual...目录 ---- include 目录中存储了 内核源码 依赖 的 大部分头文件 代码 ; include 目录中存储了 虚拟文件系统 ( Virtual File System ) 相关代码 ; 四、...init 目录 ---- init 目录中存储了 Linux 内核的初始化 相关代码 ; 该 初始化代码 关联到了 内存的各个组件 的入口 ; 五、ipc 目录 ---- ipc 目录中存储了 进程间通信...相关代码 ; 如 : 信号量 , 共享内存 等 ; 六、kernel 目录 ---- kernel 目录中存储了 内核核心代码 ; 其中包含了 进程管理 , IRQ 中断 等模块 ;

11.9K20

Linux 内核Linux 内核源码目录说明 ③ ( lib 目录 | LICENSES 目录 | mm 目录 | net 目录 | samples 目录 | scripts 目录 )

文章目录 一、lib 目录 二、LICENSES 目录 三、mm 目录 四、net 目录 五、samples 目录 六、scripts 目录 一、lib 目录 ---- lib 目录中存储了 C 语言标准库的子集...相关代码 ; 二、LICENSES 目录 ---- LICENSES 目录中存储了 开源许可协议 相关协议文本 ; 该目录拿下都是文本文件 ; 三、mm 目录 ---- mm 目录中存储了 内存管理...( Memory Management ) 相关代码 ; 四、net 目录 ---- net 目录中存储了 网络协议 相关代码 ; 如 : TCP , WIFI , IPV4 , IPV6 等 ;...五、samples 目录 ---- samples 目录中存储了 Linux 内核参考示例代码 ; 六、scripts 目录 ---- scripts 目录中存储了 内核 编译 配置 相关脚本 ;

9.7K40

Linux内核学习(一)之Linux内核源码目录

tar -jxvf dir.tar.bz2 解压缩dir.tar.bz2 二、linux内核目录文件解析: 现在我们开始来具体分析linux内核目录的一些文件到底是什么意思,我们大概要明白主体文件到底是干用的...drivers:驱动目录,里面分门别类的列出了linux内核支持的所有硬件设备的驱动源代码。 firmware:固件。什么是固件?...每种CPU架构特有的一些头文件在arch/arm/include目录及其子目录下。 init:init是初始化的意思,这个目录下的代码就是linux内核启动时初始化内核的代码。...scripts:脚本,这个目录下全部是脚本文件,这些脚本文件不是linux内核工作时使用的,而是用来辅助对linux内核进行配置编译生产的。...tools:linux中用到的一些有用工具 usr:目录下是initramfs相关的,和linux内核的启动有关 virt:内核虚拟机相关的 小结:大家看了这么文件目录,不要吓到了(要选择性学习),跟我们关系很紧密的就是

10.7K51

Linux内核透明巨型支持

它不需要内存预留,并且尽可能地使用大(这里唯一可能的预留是kernelcore=, 以避免不可移动的页面碎片化所有内存,但这样的调整不是针对透明大支持的, 它是通用的适用于内核中所有动态高阶分配的特性...默认情况下,内核尝试在读取页面错误时使用巨型零来进行匿名映射。...thp_zero_page_alloc_failed: 如果内核分配巨型零失败并回退到使用小,则thp_zero_page_alloc_failed会增加。...==优化应用程序== 为了保证内核将立即在任何内存区域映射2M,mmap区域必须自然对齐。posix_memalign()可以提供这种保证。...如果您没有遍历表,但是遇到了一个物理的大,但是您不能在代码中原生地处理它, 您可以通过调用split_huge_page(page)来分裂它。这就是Linux VM在尝试切换大页面之前所做的。

2.6K40

Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )

文章目录 一、解压内核源码 二、查询当前 Linux 内核版本号 三、进入并查看 linux 内核源码目录 一、解压内核源码 ---- 将 下载的 Linux 内核源码 linux-5.6.14.tar.gz...拷贝到 Ubuntu 虚拟机中 , 执行 tar xvf linux-5.6.14.tar.gz 命令 , 解压 Linux 内核源码 ; 解压完毕后 , linux-5.6.14 目录中就是解压后的...Linux 内核源码 ; 二、查询当前 Linux 内核版本号 ---- 执行 uname -a 命令 , 查询当前 Ubuntu 系统的 Linux 内核版本号 , 执行过程如下 : root@ubuntu...x86_64 x86_64 x86_64 GNU/Linux root@ubuntu:~/kernel# root@ubuntu:~/kernel# 当前的内核版本号是 4.13.0 ; 三...、进入并查看 linux 内核源码目录 ---- 进入之前解压的 linux-5.6.14 内核源码目录 ; root@ubuntu:~/kernel# ls linux-5.6.14 linux-5.6.14

86.7K60

内核知识第八讲,PDE,PTE,目录表,表的内存管理

内核知识第八讲,PDE,PTE,目录表,表的内存管理 一丶查看GDT表....这里有一个目录表,还有表的关键词. 目录表: 也称为PDE,而表称之为PTE. CPU会通过虚拟地址,当作下表.去目录表中查询.然后查到的结果再去表中查询.这样就查到对应的物理地址了....PDE表的大小:   目录表,存储在一个4K字节的物理中,其中每一项是4个字节.保存了表的地址.   而最大是1M个. PTE表的大小.   PTE的大小也和PDE一样的....首先前边20位保存了表或者物理地址的基地址. 比如我们的目录表. 查到了第5项.那么从中取出千20位来,加上000就等于表了.  然后从表中查询千20位....后10位当作表的下表 设有物理地址为:   00401 000 那么下表则为:   00401 = 0000000001 0000000001 通过虚拟地址得知,目录表是第一项,而表也是第一项.

1.4K10

linux内核的冷热分配器

linux本来有伙伴系统分配内存,为了加快单个内存的分配linux在每个node里为每个cpu分配了一个per_cpu_pageset(暂且叫他缓存吧)。...每个缓存包含一个冷缓存和一个热缓存。这两个用法有什么区别呢。 如果申请完一个内存就立刻用来写数据,用热缓存。 如果申请完暂时用不到或者给DMA用,用冷缓存。...这主要是因为内核用free_pages释放单个内存的时候会调用free_hot_page。...刚释放的内存大概率还在cpu的cache里,也就是说热缓存里的很可能还在cpu的cache里,所以申请热缓存并且立即使用会直接访问cpu的cache速度会比较快。...其他情况就用冷缓存,冷缓存里的在主内存里,需要重新加载到cpu的cache,速度会慢一些。

94510

浅谈Linux内核缓存和块缓存

概述 运行在用户态的应用程序需要经常访问磁盘数据,进行读写操作,由于磁盘(HDD)相对较慢,没有任何缓存的情况下,每次应用读写操作时延非常慢;在内核设计之初,添加了缓存设计,将磁盘数据保存在RAM中,...Page Cache高速缓存使用的是物理帧,以为单位将文件内容缓存,逻辑文件(struct file)中每一个可以划分为块单位,将每个块映射到磁盘的盘块,因此一个文件的可以和多个Buffer Cache...Page Cache(缓存) Linux高速缓存任何基于的数据,所缓存的Page包括普通文件内容、块设备文件、内存映射文件的读写。缓存中一个帧的文件数据锁对应的磁盘块不必是连续的。...在内核中块缓存是通过struct buffer_head进行管理的。...所属的地址空间 struct address_space *b_assoc_map; atomic_t b_count; /* users using this buffer_head */ }; 内核中按照块访问的场景不多

2.7K30

深入理解Linux内核之脏跟踪

1.开场白 环境: 处理器架构:arm64 内核源码:linux-5.10.50 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope Linux内核由于存在page...为了回写page cache中的脏,需要标记为脏。 脏跟踪是指内核如何在合适的时机记录文件为脏,以便内核在进行脏回写时,知道将哪些页面回写到磁盘。...匿名不需要跟踪脏,因为不需要同步到磁盘;私有文件也不需要跟踪脏,因为映射的时候,可写会映射为只读,写访问会发生写时复制,转变为匿名;所以只有共享的文件需要跟踪脏。...在Linux内核中,因为跟踪脏会涉及到文件回写、缺页异常、反向映射等技术,所以本文也重点讲解在Linux内核中如何跟踪脏。...脏回写之后,描述符脏标志位是清零的,文件写调用链会设置描述符脏标志位。

2K10

内核表调试

一、配置内核 首先配置内核,使其支持导出内核表到debugfs下面: Kernel hacking ---> ---> [*] Export kernel pagetable layout to...start] - [PCI I/O end]同上,专门用于PCI设备使用的地址空间,一般映射大小为16M [vmemmap start] - [vmemmap end]对与ARM64用于page映射区,linux...内核用page结构体管理所有物理内存,每一大小为PAGE_SIZE对于arm64,可能是4K,16K,64K。...当标识为PTE表示为表映射即PAGE_SIZE大小4K。 USR AP标记,用于标识当前范围是否在用户空间还是内核空间可读可写或者仅读。...x表述当前范围特权级别模式可执行,就是内核的可执行代码段,在内核中这段一般指向内核的text*段 SHD 表示可共享属性,在arm64上表述为多核之间可共享其表可见 AF 访问标志,当首次映射表时,

13010

Linux 内核 内存管理】物理释放 ( 物理释放 __free_pages 函数 )

文章目录 一、物理释放 __free_pages 函数 一、物理释放 __free_pages 函数 ---- 分配器 提供了 释放 物理的 函数 __free_pages , 该函数定义在 Linux...内核源码的 linux-4.12\mm\page_alloc.c#4083 位置 ; __free_pages 函数参数分析 : struct page *page 参数 表示 要释放的 物理 page...的 虚拟空间地址 ; unsigned int order 参数 表示 要释放的 物理 的 " 阶数 " , 也就是 要释放的物理大小 ; 阶 ( Order ) : 物理 的 数量单位 ,...n 阶块 指的是 2^n 个 连续的 " 物理 " ; 参考 【Linux 内核 内存管理】伙伴分配器 ① ( 伙伴分配器引入 | 块、阶 | 伙伴 ) __free_pages 函数源码...order == 0) free_hot_cold_page(page, false); else __free_pages_ok(page, order); } } 源码路径 : linux

12.6K20

Linux 内核Linux 内核源码根目录下的文件 ( .clang-format | COPYING | CREDITS | Kbuild | Kconfig | MAINTAINERS )

文章目录 一、.clang-format 文件 二、.cocciconfig 文件 三、.COPYING 文件 四、CREDITS 文件 五、Kbuild 文件 六、Kconfig 文件 七、MAINTAINERS...clang-format 文件 是 代码格式化文件 , 一般由开发团队合作开发时使用 ; 二、.cocciconfig 文件 ---- .get_maintainer.ignore 文件 , 是编译内核时的配置...COPYING 文件 , 存储 代码 许可 和 授权信息 ; 四、CREDITS 文件 ---- CREDITS 文件 , 是贡献者列表 ; 五、Kbuild 文件 ---- Kbuild 文件 , 是内核设定脚本..., 六、Kconfig 文件 ---- Kconfig 文件 , 是开发人员配置内核时的参数 ; 七、MAINTAINERS 文件 ---- MAINTAINERS 文件是目前维护人员列表 ;...八、Makefile 文件 ---- Makefile 文件是 使用 make 命令 , 编译内核时用到的构建脚本 ; 九、README 文件 ---- README 文件 是编译内核的相关信息 ;

1.2K30

Linux-3.14.12内存管理笔记【建立内核表(1)】

前面已经分析过了Intel的内存映射和linux的基本使用情况,已知head_32.S仅是建立临时表,内核还是要建立内核表,做到全面映射的。...建立内核表前奏,了解两个很关键的变量: max_pfn:最大物理内存页面帧号; max_low_pfn:低端内存区(直接映射空间区的内存)的最大可用帧号; max_pfn 的值来自setup_arch...既然到此,顺便介绍一下内核空间映射情况。 ? 内核空间如上图,分为直接内存映射区(低端内存,线性)和高端内存映射区。...Linux是一个支持多硬件平台的操作系统,各种硬件芯片的分页并非固定的2级(全局目录表),仅仅Intel处理器而言,就存在3级的情况(全局目录中间目录表),而到了64位系统的时候就成了4...所以Linux为了保持良好的兼容性和移植性,系统设计成了以下的4级分页模型,根据平台环境和配置的情况,通过将上级目录中间目录的索引位设置为0,从而隐藏了三级目录中间目录的存在。

1.8K41

Linux-3.14.12内存管理笔记【建立内核表(3)

前面已经分析了内核表的准备工作以及内核低端内存表的建立,接着回到init_mem_mapping()中,低端内存表建立后紧随着还有一个函数early_ioremap_page_table_range_init...回到page_table_range_init(),其中one_md_table_init()是用于当pgd入参为空时,申请新物理作为中间目录的,但是此次仅分析x86非PAE环境的情况,不存在中间目录...,如果是,则把其pte表的内容拷贝到page_table_range_init()申请的表空间中,并将newpte新页表的地址设置到pmd中(32bit系统实际上就是全局目录),然后调用__flush_tlb_all...为了避免前期可能对固定映射区已经分配了表项,基于临时内核映射区间要求表连续性的保证,所以在此重新申请连续的表空间将原表内容拷贝至此。...至此,内核表建立完毕。

1.5K11

深入理解Linux内核表映射分页机制原理

从事十年嵌入式转内核开发(23K到45K),给兄弟们的一些建议 腾讯T6-9首发“Linux内核源码嵌入式开发进阶笔记”,差距不止一点点哦 如下图所示,进程1和进程2拥有完整的虚拟地址空间,虚拟地址空间分为了用户空间和内核空间...…… 针对这些话题本文不做深入探讨,可以阅读另一篇为其量身定做的博文《深入Linux内核(内存篇)—TLB》。 1.5 表多大合适?...五级分页每级命名分别为全局目录(PGD)、4级目录(P4D)、上级目录(PUD)、中间目录(PMD)、表(PTE)。...pgd_offset_k(addr) 根据入参虚拟地址address和init_mm,找到address在全局目录中相应表项的线性地址。仅用于内核表。...TTBR0和TTBR1,在Linux中分别用于用户空间和内核空间,内核空间地址高16位全为1,用户空间地址高16位全为0,。

2.8K10

Linux内核表管理-那些鲜为人知的秘密

,而表管理是在虚拟内存管理中尤为重要,本文主要以回答几个表管理中关键性问题来解析Linux内核表管理,看一看表管理中那些鲜为人知的秘密。...Linux内核为何使用多级表?...2)Linux内核 填写表,将表基地址告诉mmu 内核初始化建立内核表,实现缺页异常等机制为用户任务按需分配并映射表。 当然,内核也可以遍历表,如缺页异常时遍历进程表。 10....12.表遍历过程 下面以arm64处理器架构多级表遍历作为结束(使用4级表,大小为4K): Linux内核中 可以将表扩展到5级,分别是全局目录(Page Global Directory,...PGD), 4级目录(Page 4th Directory, P4D), 上级目录(Page Upper Directory, PUD),中间目录(Page Middle Directory

1.7K21

Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址...: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ Linux 内核 5.6.18 版本 : https://mirrors.edge.kernel.org...不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用...Code ) 博客 , 安装 VSCode 软件 ; 打开 VSCode , 选择 ” 菜单栏 / 文件 / 打开文件夹 ” 选项 , 选择 Linux 内核源码目录 , 点击 ” 选择文件夹 ”

23.2K32
领券