Что такое виртуальная память?devops-57

Виртуальная память — это технология управления памятью, которая позволяет операционной системе предоставлять приложениям иллюзию наличия большого, непрерывного адресного пространства, даже если физической памяти (RAM) меньше. Это достигается за счет комбинации аппаратной поддержки (MMU — Memory Management Unit) и программных механизмов ОС.

Ключевые аспекты виртуальной памяти:

  1. Абстракция адресного пространства
    Каждый процесс "видит" свое собственное линейное адресное пространство, изолированное от других процессов. Например, два процесса могут использовать адрес 0x00400000, но физически это будут разные ячейки памяти.

  2. Страничная организация (Paging)
    Виртуальная память делится на фиксированные блоки — страницы (обычно 4KB). Физическая память делится на фреймы того же размера. ОС и MMU поддерживают таблицы страниц для отображения виртуальных адресов на физические.

    Пример таблицы страниц в x86:

    CR3 → Page Directory → Page Tables → Physical Frames
    
  3. Подкачка (Swapping)
    Если физической памяти не хватает, редко используемые страницы могут быть сохранены на диск (в swap-файл или раздел). При обращении к такой странице возникает page fault, и ОС загружает ее обратно в RAM.

  4. Преимущества:

    • Изоляция процессов (безопасность)
    • Эффективное использование RAM
    • Возможность запуска программ, требующих больше памяти, чем есть физически
    • Поддержка shared libraries (общие страницы между процессами)

Пример работы виртуальной памяти:

#include <stdio.h>
int main() {
    int *ptr = (int*)0x12345678; // Виртуальный адрес
    *ptr = 42; // MMU транслирует его в физический адрес
    return 0;
}
  1. CPU генерирует виртуальный адрес 0x12345678
  2. MMU проверяет TLB (кеш трансляций)
  3. Если нет в TLB — ищет в таблицах страниц
  4. Если страница в RAM — доступ разрешен
  5. Если страница на диске — page fault → подкачка

Реальные реализации:

  • Linux: использует многоуровневые таблицы страниц, swap в /swapfile
  • Windows: аналогично, но с особенностями в работе диспетчера памяти
  • Современные процессоры: поддержка huge pages (2MB/1GB)

Резюмируем: виртуальная память — фундаментальный механизм современных ОС, обеспечивающий безопасность, изоляцию процессов и эффективное использование ресурсов через комбинацию аппаратных и программных технологий.