- 博客(271)
- 收藏
- 关注
原创 Linux 内存管理之 Rmap 反向映射(一)
反向映射是内存管理中的一个核心概念,用于高效地通过物理页找到映射了该页的所有虚拟地址(即页表项)。
2025-08-01 20:14:08
974
原创 Linux内存管理之 compound pages
本文介绍了Linux内核中的复合页(compound page)机制。复合页是由多个物理连续页组成的逻辑单元,通过头部页(first head page)和尾部页(tail pages)结构实现统一管理。文章详细分析了复合页的元数据布局,说明其特有信息存储在第一个尾部页中,包括分配阶数、析构函数等。同时指出复合页可以存在于页缓存中,并通过alloc_pages()分配时需设置__GFP_COMP标志。最后介绍了复合页的三种析构函数类型及其应用场景,包括透明大页(THP)和hugetlbfs子系统等。
2025-07-15 19:37:35
774
原创 Linux 内存管理之address_space
本文介绍了Linux内核中用于管理文件页缓存(page cache)和内存映射的关键数据结构address_space。address_space通过基数树(radix tree)组织同一文件的所有缓存页,并提供了快速查找机制。
2025-07-10 19:36:17
891
原创 Linux 内存管理之page cache
Page Cache通过内存缓存磁盘文件数据,显著提升I/O性能,其优势基于内存访问速度远高于磁盘和被访问数据的高概率重复性。 详细区分了File-backed pages(文件页)和Anonymous pages(匿名页)两种内存类型,包括其数据结构差异、内存回收特性及swap机制。
2025-06-25 19:37:34
1026
原创 Linux 内核自旋锁spinlock(四)--- queued spinlock
Linux 内核自旋锁spinlock(四)--- queued spinlock简介。
2025-02-21 20:19:02
1290
原创 Linux 内核自旋锁spinlock(三)--- MCS locks
Linux 内核自旋锁spinlock(三)--- MCS locks简介。
2025-02-21 11:17:38
782
原创 Linux ARM64 将内核虚拟地址转化为物理地址
本文介绍一种通用的将内核虚拟地址转化为物理地址的方案以及一种适用于ARM64 将内核虚拟地址转化为物理地址的方案,给出了对应的代码示例。
2025-02-11 10:31:14
1397
原创 Linux 内核自旋锁spinlock(二)--- ticket spinlock
Linux 内核自旋锁spinlock--- ticket spinlock简介。
2025-02-10 11:39:49
1194
原创 Linux 内核自旋锁spinlock(一)
在软件工程中,自旋锁是一种用于多线程应用程序中的同步原语,用于保护共享资源。当一个线程尝试获取自旋锁但发现它已被另一个线程持有时,该线程不会立即进入睡眠状态(如传统互斥锁的情况),而是会在一个循环中持续“自旋”,不断检查锁是否可用。这种行为被称为忙等待。自旋锁能够避免操作系统进程重新调度或上下文切换的开销,因此在线程可能仅会短暂阻塞的情况下,自旋锁非常高效。出于这个原因,操作系统内核经常使用自旋锁。对于操作系统内核:在SMP系统上,各个CPU可能同时处于核心态,在理论上可以操作所有现存的数据结构。
2025-01-17 20:57:42
1169
原创 Linux x86_64 程序动态链接之GOT 和 PLT
Linux x86_64 程序动态链接之 GOT 和 PLT延时绑定技术,以及给出了一个demo。
2025-01-14 17:23:08
1081
原创 Ubuntu12.04/Ubuntu20.10/Ubuntu22.10更换阿里云源
Ubuntu12.04/Ubuntu20.10/Ubuntu22.10更换阿里云源简介
2024-08-14 16:23:50
1476
原创 Intel 和 ARM 对ROP/COP/JOP的缓解措施
前向转移(forward):将控制权定向到程序中一个新位置的转移方式, 就叫做前向转移, 比如jmp和call指令。这里我们主要保护的间接跳转,间接跳转是运行时才知道函数地址,而直接跳转在编译阶段就已经确定(攻击者很难利用)。后向转移(backward):而将控制权返回到先前位置的就叫做后向转移, 最常见的就是ret指令。现代CPU的增强功能,如非可执行堆栈和非可写代码页,有助于防止传统形式的代码注入。然而,比如在x86架构中,指令解码可以从任意字节开始,这为攻击者提供了一组不同于程序员意图的指令。
2024-07-12 17:58:14
1592
原创 Shadow Call Stack and Branch Target Identification for improved security on ARM64
Shadow Call Stack and Branch Target Identification for improved security on ARM64
2024-07-09 17:43:35
1334
原创 Linux arm64平台指令替换函数 aarch64_insn_patch_text_nosync
Linux arm64平台指令替换函数aarch64_insn_patch_text_nosync简介
2024-07-08 16:51:49
1250
原创 Linux x86_64平台指令替换函数 text_poke_smp/bp
Linux x86_64平台指令替换函数 text_poke_smp/bp简介
2024-07-05 17:30:37
1274
原创 Linux 内存管理 SLUB 分配器
来自文章https://lwn.net/Articles/229984/的翻译
2024-06-04 16:32:20
1254
原创 Linux CFS调度器之周期性调度器scheduler_tick函数
Linux CFS调度器之周期性调度器scheduler_tick函数简介
2024-05-30 17:45:19
1590
20
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人