360 Secure SkillHub
360 安全技能中心

virtual-memory-paging-and-tlb

该 Skill 以概念讲解为主,说明虚拟地址到物理地址的转换、多级页表、TLB 命中与缺失、缺页类型及 TLB 压力缓解,并给出 Linux 排查和嵌入式 MPU 对比示例;未提供可执行脚本或模拟器。

mohitmishra786
热度 0.00
最近更新 2026-10-19 04:15:48
分类:知识依赖:纯提示词应用场景:概念解释 / 调试排错 / 教学辅导

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add mohitmishra786/low-level-dev-skills/virtual-memory-paging-and-tlb
Metadata
name
virtual-memory-paging-and-tlb
description
Virtual memory skill for paging, page tables, and TLB. Use when explaining page faults, multi-level page tables, TLB behavior, or virtual vs physical addressing. Activates on queries about virtual memory, page table, TLB, page fault, mmap paging, or x86-64 paging.

Virtual Memory, Paging, and TLB

Purpose

Explain virtual memory: paging, multi-level page tables, TLB role, page faults, and address translation — bridging OS kernels, embedded MPU, and performance analysis.

When to Use

  • Understanding mmap, brk, and demand paging
  • Debugging segfaults and guard pages
  • Huge pages / TLB pressure tuning
  • Contrasting Cortex-M MPU with full MMU systems

Workflow

1. Translation overview

Virtual address (VA)
├── TLB lookup → physical on hit
└── TLB miss → page table walk → fill TLB
        ├── valid PTE → physical address
        └── invalid → page fault (OS handles)

2. Page table (x86-64 4-level example)

CR3 → PML4 → PDPT → PD → PT → physical frame

Linux on x86_64 uses 4 KiB pages (default) and optional 2 MiB / 1 GiB huge pages.

3. Page fault types (simplified)

Fault Typical cause
Major Disk read — file-backed page not in RAM
Minor Zero-fill or COW break
Protection User access to kernel page, W^X violation
# Linux page fault stats
grep pgfault /proc/vmstat

4. TLB pressure

Large sparse address spaces + random pointer chasing → TLB misses dominate.

Mitigations:

  • mmap huge pages (MAP_HUGETLB, madvise(MADV_HUGEPAGE))
  • Smaller working set / better locality
  • numactl --membind for NUMA

5. Embedded contrast (Cortex-M)

Many MCUs use MPU (region-based) not full paging — no TLB, fixed region count. Application processors use MMU + OS.

See skills/platform/riscv-privileged for Sv39/Sv48.

6. Userspace inspection (Linux)

cat /proc/self/maps
pmap -x $$

7. Agent usage

/virtual-memory-paging-and-tlb Explain why 4 KiB random access hurts TLB and hugepage helps

Common Problems

Symptom Cause Fix
Segfault Unmapped VA Fix pointer; check maps
Slow mmap workload TLB thrashing Huge pages; reduce regions
COW spike after fork Shared pages split on write Expected; consider MAP_POPULATE
W^X fault JIT without mprotect dance Separate RW and RX mappings
Wrong phys on MCU No MMU — linear map Use linker script addresses

Related Skills

  • skills/computer-architecture/memory-hierarchy-and-caches — cache after translation
  • skills/kernel-dev/kernel-memory-management — kernel page allocator
  • skills/kernel/os-dev-scratch — build paging from scratch
  • skills/platform/riscv-privileged — Sv39 page tables
  • skills/allocators/numa-programming — NUMA and migration