Hacker News Digest

03 ноября 2025 г. в 23:04 • 0xkato.xyz • ⭐ 228 • 💬 25

OriginalHN

#linux#process-memory#virtual-memory#mmap

A friendly tour of process memory on Linux

Linux создаёт иллюзию непрерывного адресного пространства для процессов, собирая его постранично. Физическая RAM состоит из кадров, распределённых по всей системе, тогда как виртуальное представление — это упорядоченная линия, которую видит программа. Страницы таблицы переводят виртуальные адреса в физические кадры. При первом обращении к странице происходит page fault, и система либо заполняет кадр, либо выдаёт ошибку. При нехватке RAM неиспользуемые страницы перемещаются на диск, а при повторном доступе возвращаются обратно.

Каждый процесс владеет объектом, представляющим всё адресное пространство, разделённым на виртуальные области памяти (VMA) — непрерывные диапазоны с одинаковыми правами доступа и источником данных. Все потоки процесса разделяют это пространство. Управление происходит через mmap (резервирование области), mprotect (изменение прав) и munmap (удаление). Память выделяется лениво — при первом обращении. В /proc/self/maps можно увидеть сегменты бинарного файла, кучу, общие библиотеки и стеки потоков, а также специальные области [vdso] и [vvar] для ускорения системных вызовов. mmap создаёт обещание выделения памяти, но не выделяет страницы сразу.