Блок управления виртуальной памятью и памятью

Зачем нам нужен блок управления памятью?

Кажется, единственной задачей блока управления памятью является преобразование виртуальных адресов в физический адрес. Разве это не может быть сделано в программном обеспечении? Зачем нам другое аппаратное устройство для этого?

2 ответа

MMU (модуль управления памятью) - это аппаратный компонент, доступный на большинстве аппаратных платформ для преобразования виртуальных адресов в физические. Этот перевод приносит следующие преимущества:

  • Обмен: ваша система может обрабатывать больше памяти, чем физически доступно. Например, в 32-разрядной архитектуре система "видит" 4 ГБ памяти независимо от объема доступной физической памяти. Если вы используете больше памяти, чем фактически доступно, страницы памяти выгружаются на диск подкачки.
  • Защита памяти: MMU обеспечивает защиту памяти, предотвращая доступ пользовательского режима к той части памяти, которая принадлежит другим задачам.
  • Перемещение: каждая задача может использовать адреса с определенным смещением (например, для переменных), независимо от реальных адресов, назначенных во время выполнения.

Возможно частично реализовать механизм перевода программного обеспечения. Например, для перемещения вы можете взглянуть на реализацию gcc fpic. Однако программный механизм не может обеспечить защиту памяти (что, в свою очередь, влияет на безопасность и надежность системы).

Причина, по которой MMU-компонент ЦП состоит в том, чтобы сделать преобразование логического адреса в физический прозрачным для выполняемого процесса. Выполнение этого в программном обеспечении потребовало бы остановки, чтобы обработать каждый доступ к памяти процессом. Кроме того, у вас возникла бы проблема курицы и яйца, которая, если бы перевод памяти выполнялся программным обеспечением, осуществляющим перевод памяти этого программного обеспечения.

Другие вопросы по тегам