Предназначение и организация виртуальной памяти. Сегментно-страничная организация. MMU и TLB

Виртуальная память

Виртуальная память — это механизм управления памятью, позволяющий каждому процессу работать в собственном непрерывном адресном пространстве и выполнять программы, требующие больше памяти, чем физически установлено в компьютере. Для этого часть данных может временно храниться на внешнем носителе (файл подкачки на диске).

Процесс работает не с физическими, а с виртуальными адресами. Преобразование виртуальных адресов в физические выполняется аппаратным устройством MMU (Memory Management Unit).


Страничная организация

При страничной организации виртуальное и физическое адресные пространства разбиваются на страницы фиксированного размера.

Виртуальный адрес состоит из:

  • номера виртуальной страницы;
  • смещения внутри страницы.

MMU заменяет номер виртуальной страницы на номер соответствующей физической страницы, при этом смещение остается неизменным.

Если нужная страница отсутствует в оперативной памяти, возникает страничное прерывание (Page Fault), после чего операционная система загружает страницу с диска.


Сегментная организация

При сегментной организации виртуальная память делится на сегменты произвольного размера (например, код программы, стек, данные).

Для каждого сегмента задаются:

  • размер;
  • адрес размещения;
  • права доступа.

Виртуальный адрес состоит из номера сегмента и смещения внутри сегмента.

Недостатком сегментной организации является внешняя фрагментация памяти.


Сегментно-страничная организация

Во многих системах используется комбинация обоих подходов:

Сначала выбирается сегмент, затем внутри него выполняется страничная адресация.


MMU (Memory Management Unit)

MMU — аппаратный блок управления памятью, расположенный между процессором и оперативной памятью.

Основные функции MMU:

  • преобразование виртуальных адресов в физические;
  • проверка прав доступа;
  • поддержка виртуальной памяти;
  • взаимодействие с таблицами страниц.

Информация о делении на страницы хранится в Page Table (структура в RAM). В таблице хранится вирт. номер и физ. номер, который ему соотв.


TLB (Translation Lookaside Buffer)

TLB — специальный кэш преобразований виртуальных адресов в физические.

TLB организован как ассоциативная память и хранит наиболее часто используемые записи таблицы страниц.

Алгоритм работы:

  1. Процессор формирует виртуальный адрес.
  2. MMU ищет соответствие в TLB.
  3. Если запись найдена (TLB hit), физический адрес получается сразу.
  4. Если записи нет (TLB miss), выполняется обращение к таблице страниц в оперативной памяти.
  5. Найденная запись заносится в TLB.

Использование TLB значительно уменьшает число обращений к таблицам страниц и ускоряет трансляцию адресов.