VK
Физическая память в компьютерной системе является ограниченным ресурсом, и даже для систем, которые поддерживают горячее подключение памяти, существует жесткое ограничение на объем памяти, который можно установить. Физическая память не обязательно является смежной; он может быть доступен в виде набора отдельных диапазонов адресов. Кроме того, разные архитектуры ЦП и даже разные реализации одной и той же архитектуры имеют разные представления о том, как определяются эти диапазоны адресов.
Все это делает работу непосредственно с физической памятью довольно сложной, и чтобы избежать этой сложности, была разработана концепция виртуальной памяти.
Виртуальная память абстрагирует детали физической памяти от прикладного программного обеспечения, позволяет хранить в физической памяти только необходимую информацию (пейджинг по требованию) и обеспечивает механизм защиты и контролируемого обмена данными между процессами.
С виртуальной памятью каждый доступ к памяти использует виртуальный адрес. Когда ЦП декодирует инструкцию, которая считывает (или записывает) из (или в) системную память, он преобразует виртуальный адрес, закодированный в этой инструкции, в физический адрес, который может понять контроллер памяти.
Физическая системная память делится на фреймы страниц или страницы. Размер каждой страницы зависит от архитектуры. Некоторые архитектуры позволяют выбирать размер страницы из нескольких поддерживаемых значений; этот выбор выполняется во время сборки ядра путем установки соответствующей опции конфигурации ядра.
Каждая страница физической памяти может быть отображена как одна или несколько виртуальных страниц. Эти сопоставления описываются таблицами страниц, которые позволяют переводить виртуальный адрес, используемый программами, в адрес физической памяти. Таблицы страниц организованы иерархически.
Таблицы на самом низком уровне иерархии содержат физические адреса реальных страниц, используемых программным обеспечением. Таблицы на более высоких уровнях содержат физические адреса страниц, принадлежащих нижним уровням. Указатель на таблицу страниц верхнего уровня находится в регистре. Когда ЦП выполняет преобразование адреса, он использует этот регистр для доступа к таблице страниц верхнего уровня. Старшие биты виртуального адреса используются для индексации записи в таблице страниц верхнего уровня. Затем эта запись используется для доступа к следующему уровню в иерархии со следующими битами виртуального адреса в качестве индекса таблицы страниц этого уровня. Младшие биты в виртуальном адресе определяют смещение внутри фактической страницы.
А вы тут тимке про кеш диска втираете 😂