Адресация памяти в современных операционных системах работает следующим образом:
Физические адреса — это числовые идентификаторы, которые указывают на ячейку физической памяти. 2 Они представляют фактическое расположение данных в аппаратном обеспечении и играют важнейшую роль в низкоуровневом управлении памятью. 2 Аппаратные компоненты, такие как процессор и контроллер памяти, используют именно физические адреса. 2 Для пользовательских программ физические адреса непригодны. 2
Виртуальные адреса — это адреса, сгенерированные программой. 2 Они представляют собой абстракцию физической памяти. 2 Все процессы используют адресное пространство виртуальной памяти в качестве выделенной памяти. 2 Виртуальные адреса не соответствуют никаким ячейкам физической памяти. 2 Программы читают и создают виртуальные адреса, не подозревая о существовании физического адресного пространства. 2
Блок оперативной памяти (MMU — Main Memory Unit) отвечает за сопоставление виртуальных адресов с физическими, чтобы обеспечить правильный доступ к памяти. 2 Для более эффективного использования памяти виртуальное адресное пространство разделено на сегменты и страницы. 2
Один из способов организации виртуальной памяти — страничная. 5 При её использовании вся виртуальная память делится на N страниц таким образом, что часть виртуального адреса интерпретируется как номер страницы, а часть — как смещение внутри страницы. 5 Другой способ — сегментная организация. 5 Вся память делится на сегменты фиксированной или произвольной длины, каждый из которых характеризуется своим начальным адресом — базой или селектором. 5 Виртуальный адрес в такой системе состоит из двух компонент: базы сегмента, к которому нужно обратиться, и смещения внутри сегмента. 5 Физический адрес вычисляется по формуле: addr = base + offset. 5