Linux 内存管理(七)之伙伴系统算法 @TOC 前言伙伴系统算法是一种用来管理分配和释放内存的算法,它在 Linux 内核中被广泛使用。其设计目标是高效地管理内存碎片,并且具有快速的分配和释放速度。 接下来将详细探讨一下 Linux 中的伙伴系统算法。 一、伙伴系统的由来在 Linux 内存管理(三)之分页机制 一文中,我曾提到过内存碎片,频繁地请求和释放不同大小的一组连续页框,必然导致在已分配页框的块内分散了许多小块的空闲页框。由 2024-07-24 Linux > 内存管理 #内存管理 #Linux #伙伴系统算法
Linux 内存管理(六)之内存管理区 [TOC] 前言为了支持 NUMA 模型,也即 CPU 对不同内存单元的访问时间可能不同,此时系统的物理内存被划分为几个节点,一个节点对应一个内存簇 bank,即每个内存簇被认为是一个节点。接着各个节点又被划分为内存管理区域,接下来将对内存管理区域进行讨论。 非一致内存访问(Non-Uniform MemoryAccess,NUMA)模型,是一种内存架构模型,用于多处理器系统中的内存访问。在 2024-07-23 Linux > 内存管理 #内存管理 #Linux
Linux 内存管理(五)之转换后援缓存器(TLB) @TOC 前言在传统的地址转换方式中,每次访问内存时,CPU 都需要通过页表来查找虚拟地址到物理地址的映射关系。这个过程需要多次内存访问,从而导致较大的延迟。为了减少这种延迟,引入了一种叫做 TLB 的缓存机制,将最近使用过的映射关系存储在高速缓存中。 一、高速缓存TLB 实际上就是一种高速缓存,所以讲解 TLB 之前我们先来看一下什么是高速缓存。 为了缩小 CPU 和 RAM 之间的速度不匹配 2024-07-22 Linux > 内存管理 #内存管理 #Linux #TLB
Linux 内存管理(四)之物理地址扩展(PAE) [TOC] 前言在 32 位操作系统中,使用 32 位的寻址空间,最多只能表示 $2^{32}$ 个不同的地址,即 4GB 的地址空间。这意味着无论实际物理内存有多大,操作系统最多只能寻址 4GB 的物理内存。 然而,在实际应用中,特别是在服务器和高性能计算领域,需要处理大型数据集和运行大规模应用程序的情况下,4GB 的内存往往不够用。因此,引入 PAE 机制可以扩展物理地址空间,使操作系统能够 2024-07-21 Linux > 内存管理 #内存管理 #Linux #PAE
Linux 内存管理(三)之分页机制 [TOC] 前言在早期的操作系统中,分段机制被广泛采用,但随着技术的发展,分页机制逐渐成为主流选择。接下来,我们将深入探讨分页机制的原理、工作方式以及与其他内存管理机制的比较。 分段机制部分的内容可以看:Linux 内存管理(一)之分段机制。 本文涉及到的 cr0、cr2、cr3、cr4 这四个控制寄存器可以参考:x86/x86_64 下的 CPU 控制寄存器 本文还提及了 2024-07-21 Linux > 内存管理 #内存管理 #Linux #分页机制
x86/x86_64 下的 CPU 控制寄存器 [TOC] 前言x86/x86_64 CPU 中提供了控制寄存器,来决定 CPU 的操作模式和当前执行任务的属性。这些寄存器在 32 位模式下是 32 bit,在 64 位模式中,控制寄存器扩展为 64 bit。 CPU 架构中共有 CR0、CR1、CR2、CR3、CR4、CR8 共 6 个控制寄存器。 一、CR0 寄存器CR0 寄存器是 x86 架构中的一种控制寄存器,用于控制和配置 2024-07-20 Linux #Linux #x86
Linux 内存管理(二)之GDT与LDT [TOC] 前言在 Linux 系统中,GDT(Global Descriptor Table)和 LDT(Local Descriptor Table)是用来管理和定义内存段(segment)的数据结构。它们是在 x86 架构下操作系统使用的关键概念,用于实现内存保护和虚拟内存管理。 一、GDT1、什么是 GDT全局描述符表(Global Descriptor Table,GDT)。在单处理器 2024-07-20 Linux > 内存管理 #内存管理 #Linux
Linux 内存管理(一)之分段机制 @TOC 前言Linux操作系统采用了分段机制来实现进程的内存管理。分段允许进程以逻辑上连续的方式访问内存,而无需将整个进程存储在连续的物理内存地址上。 本文将介绍 Linux 的分段机制,包括分段的基本概念、分段表的组织方式和进程访问内存的原理。我们还将讨论 Linux 中的段选择子和段描述符,以及如何使用它们来管理进程的内存空间。 一、内存地址1、逻辑地址(logical address) 2024-07-19 Linux > 内存管理 #内存管理 #Linux #分段机制