首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Linux 内核源码解析
CoderHeart
创建于2024-05-26
订阅专栏
学习,探索、解析 Linux 内核
等 6 人订阅
共31篇文章
创建于2024-05-26
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Linux Kernel:物理内存模型
一、概述 操作系统是构建在硬件架构之上的,Linux 自然也不能幸免。目前,主要有两种类型的物理内存架构:UMA(Uniform Memory Access,一致性内存访问)架构和 NUMA (Non
Linux Kernel:直接映射区的构建
我们在《Linux Kernel:内存管理之分页(Paging)》一文中介绍了内核启动时各级页表的创建。在那篇文章中,直接映射区只映射了 1GB 的物理内存。在本文中,我们将介绍直接映射区的完整构建过
Linux Kernel:NUMA 节点探测
一、概述 在以前的文章中,我们介绍了物理内存布局探测和 CPU 拓扑探测,本篇我们来介绍 NUMA 节点探测。在一个 NUMA 节点中,通常包括 CPU 和内存资源。所以 NUMA 节点探测的一个主要
Linux Kernel:CPU 拓扑结构探测(二)
五、CPU 拓扑探测的代码实现 5.1 BSP 拓扑探测 BSP 拓扑探测主要分为三步: BSP 基本信息查询,包括生产商、处理器能力等。这部分功能在 early_cpu_init 函数中实现。 早期
Linux Kernel:CPU 拓扑结构探测(一)
一、概述 内存和 CPU 资源是 NUMA 节点的重要组成部分,所以内存和 CPU 拓扑信息对于构建 NUMA 系统至关重要。在 Linux Kernel:物理内存布局探测 一文中,我们介绍了物理内存
Linux Kernel:启动时内存管理(MemBlock 分配器)
一、Bootmem 与 Memblock 系统初始化早期,由于“正常”的内存管理还未完成设置,所以无法使用。 此时,仍然需要为各种数据结构分配内存。 为了解决这个问题,引入了一种称为 Boot Mem
Linux Kernel:物理内存布局探测
一、内存探测接口 x86 处理器通过 int 15h BIOS 中断 获取系统内存布局,其中 15h 是中断号。根据 AX 寄存器的值不同,主要有 3 种常见的方式:0xE820,0xE801,0x8
Linux Kernel:内核数据结构之基数树(Radix Tree)
一、基数树简介 1.1 前缀树(Trie) Trie,又称为前缀树(prefix tree)或字典树,是一种 k 路搜索树,用来在一组集合中搜索特定的键。这些键通常是字符串,但也可以是其它数据类型。在
Linux Kernel:内核中的 initcall 机制
一、概述 在 Linux 内核中,我们经常会看到类似下面的代码: 或者 在上面两段代码中的 early_initcall() 和 module_init() 函数,它们使用了内核的 initcall
Linux Kernel:CPU 状态管理之 cpumask
一、概述 在 Linux 内核中,使用位图来保存 CPU 的状态,每个 CPU 对应着位图中的一个比特位。内核为 CPU 定义了 4 种可能的状态,对应着 4 个位图: cpu_possible_ma
Linux Kernel:内核数据结构之位图(Bitmap)
位图(Bitmap)在 Linux 内核中使用非常广泛,比如用来标识中断是否已安装处理程序(used_vectors)、处理器是否在线(cpumask)等等。内核中,位图相关的接口及实现主要在以下几个
Linux Kernel:异常修复机制(异常表 __ex_table 详解)
一、内核中的段(segment)和节(section) 在 Linux 中,最常用的可执行文件就是 ELF (Executable and Linking Format) 文件。ELF 文件由一个文件
Linux Kernel:非早期异常处理程序的初始化
在以前的文章里,我们顺着内核启动的流程,梳理了异常处理程序的早期初始化。在 Linux Kernel:中断和异常处理程序的早期初始化(续) 里,我们介绍到了 set_arch 函数内部的 early_
Linux Kernel:内存管理之早期 I/O 内存映射(early ioremap)
一、前言 任何系统都免不了要有输入/输出,所以对 I/O 设备的访问是 CPU 的一个重要功能。一般来说,对 I/O 设备的访问有两种不同的形式: 通过端口映射(Port-mapped I/O,PMI
Linux Kernel:内存管理之固定映射 (Fixmap)
一、前言 固定映射的线性地址(Fixed-mapped linear addresses)是一组特殊的线性地址,这些线性地址在编译时就已经确定,但是其映射的物理地址是在系统启动时确定的。内核文件 ar
Linux Kernel:内存管理之分页(Paging)
一、 x86_64 内存分页理论基础 x86_64 架构支持 4 级及 5 级分页。在 Intel 手册上,对于分页结构的命名,由高到低分别是:5 级页映射表(Page Map Level 5,PML
Linux Kernel:异常处理程序的实现
在 Linux Kernel:中断和异常处理程序的早期初始化(续) 中,我们讲解到在中断描述符表中分别为 debug(#DB) 、int3(#BP)和 Page-Fault(#PF) 异常注册了处理程
Linux Kernel:中断和异常处理程序的早期初始化(续)
我们在 Linux kernel:中断和异常处理程序的早期初始化 里介绍了异常的早期初始化,并在 Linux Kernel:Page-Fault 异常的早期处理 里介绍了早期的 Page-Fault
x86-64:特权级保护及程序控制转移
一、特权级概述 Intel 处理器提供了0 ~ 3 一共 4 种特权级别,数值越小级别越高。其中操作系统工作在特权级 0,普通应用程序工作在特权级 3。 处理器使用特权级来阻止低特权级的程序访问高特权
Linux kernel:Page-Fault 异常的早期处理
一、前置知识 1.1 x86_64 内存分页理论基础 x86_64 架构支持 4 级及 5 级分页。在 Intel 手册上,对于分页结构的命名,由高到低分别是:5 级页映射表(Page Map Lev
下一页