Виртуальная память — это технология управления памятью, которая позволяет операционной системе предоставлять приложениям иллюзию наличия большого, непрерывного адресного пространства, даже если физической памяти (RAM) меньше. Это достигается за счет комбинации аппаратной поддержки (MMU — Memory Management Unit) и программных механизмов ОС.
Абстракция адресного пространства
Каждый процесс "видит" свое собственное линейное адресное пространство, изолированное от других процессов. Например, два процесса могут использовать адрес 0x00400000, но физически это будут разные ячейки памяти.
Страничная организация (Paging)
Виртуальная память делится на фиксированные блоки — страницы (обычно 4KB). Физическая память делится на фреймы того же размера. ОС и MMU поддерживают таблицы страниц для отображения виртуальных адресов на физические.
Пример таблицы страниц в x86:
CR3 → Page Directory → Page Tables → Physical Frames
Подкачка (Swapping)
Если физической памяти не хватает, редко используемые страницы могут быть сохранены на диск (в swap-файл или раздел). При обращении к такой странице возникает page fault, и ОС загружает ее обратно в RAM.
Преимущества:
#include <stdio.h>
int main() {
int *ptr = (int*)0x12345678; // Виртуальный адрес
*ptr = 42; // MMU транслирует его в физический адрес
return 0;
}
Резюмируем: виртуальная память — фундаментальный механизм современных ОС, обеспечивающий безопасность, изоляцию процессов и эффективное использование ресурсов через комбинацию аппаратных и программных технологий.