virtual-memory-paging-and-tlb — скилл Claude Code: обзор и установка
Скилл объясняет принципы работы виртуальной памяти, многоуровневых таблиц страниц и буфера TLB. Он помогает разбирать сбои page fault, настраивать huge pages и отлаживать segfault.
npx skills add mohitmishra786/low-level-dev-skills --skill virtual-memory-paging-and-tlb -a claude-codeЧто делает virtual-memory-paging-and-tlb
Скилл описывает процесс трансляции виртуальных адресов в физические через поиск в TLB и обход четырёхуровневых таблиц страниц x86-64 (CR3, PML4, PDPT, PD, PT). Он разделяет сбои страниц на Major (чтение с диска), Minor (выделение нулей или COW) и сбои защиты при нарушении W^X или несанкционированном доступе к страницам ядра.
Для анализа поведения памяти в Linux скилл предлагает утилиты pmap -x и чтение /proc/self/maps, а также проверку статистики через grep pgfault /proc/vmstat. В случае высокой нагрузки на TLB при случайном обходе указателей предлагаются вызовы с флагом MAP_HUGETLB или madvise(MADV_HUGEPAGE).
На микроконтроллерах Cortex-M буфера TLB и полноценного MMU нет — защита там строится на MPU с фиксированным числом регионов и линейной адресацией из скрипта линкера. Попытка применить логику виртуальных страниц к микроконтроллерам без MMU приведёт к неверному определению физических адресов.
Какие задачи решает
- разобрать причины segfault и падений из-за W^X в JIT-компиляторах
- снизить промахи TLB с помощью huge pages и выравнивания рабочих данных
- отличить сбои страниц Major, Minor и нарушения прав доступа в Linux
- сопоставить механизмы MPU микроконтроллера Cortex-M с классическим MMU
Примеры запросов агенту
- /virtual-memory-paging-and-tlb Объясни, почему случайный доступ к страницам 4 KiB замедляет работу TLB и как помогают huge pages
- /virtual-memory-paging-and-tlb Разбери сбой segfault: как проверить отображение памяти через /proc/self/maps?
- /virtual-memory-paging-and-tlb Чем отличается MPU в Cortex-M от полноценного MMU при изоляции памяти?
Как установить virtual-memory-paging-and-tlb
1Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill virtual-memory-paging-and-tlb -a claude-code2Вручную: положить файлы
~/.claude/skills/virtual-memory-paging-and-tlb/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/virtual-memory-paging-and-tlb/
1Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill virtual-memory-paging-and-tlb -a codex2Вручную: положить файлы
.agents/skills/virtual-memory-paging-and-tlb/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill virtual-memory-paging-and-tlb -a cursor2Вручную: положить файлы
.cursor/skills/virtual-memory-paging-and-tlb/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install mohitmishra786/low-level-dev-skills virtual-memory-paging-and-tlb2Вручную: положить файлы
.github/skills/virtual-memory-paging-and-tlb/SKILL.md1Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill virtual-memory-paging-and-tlb -a gemini-cli2Командой платформы
gemini skills install https://github.com/mohitmishra786/low-level-dev-skills --path skills/computer-architecture/virtual-memory-paging-and-tlbВручную: положить файлы
.devin/skills/virtual-memory-paging-and-tlb/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill virtual-memory-paging-and-tlb -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о virtual-memory-paging-and-tlb
Как установить virtual-memory-paging-and-tlb в Claude Code?
Выполните команду npx skills add mohitmishra786/low-level-dev-skills --skill virtual-memory-paging-and-tlb -a claude-code в терминале. Также можно вручную поместить файл спецификации по пути ~/.claude/skills/virtual-memory-paging-and-tlb/SKILL.md.
Что делает скилл virtual-memory-paging-and-tlb?
Он помогает ассистенту объяснять виртуальную адресацию, структуру таблиц x86-64, обработку page faults и поведение TLB.
Как скилл предлагает решать проблемы с высокой нагрузкой на TLB?
Для уменьшения промахов TLB при обходе больших структур скилл рекомендует подключать huge pages через MAP_HUGETLB или madvise(MADV_HUGEPAGE), а также оптимизировать локальность данных.
Исходный текст
SKILL.md · MIT
---
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 |
```bash
# 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)
```bash
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
© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills