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

Еще одной проблемой, которая так или иначе должна быть решена, является применение прямого доступа к памяти, DMA, который использует абсолютные адреса памяти. Наверное, для вас не будет неожиданностью, что гипервизор должен здесь вмешаться и переназначить адреса до запуска DMA.
Но на оборудовании уже есть блок управления памятью при вводе-выводе (I/O MMU), который виртуализирует ввод- вывод таким же образом, как MMU виртуализирует память. I/O MMU существует в различных видах и формах для множества архитектур процессоров. Даже если мы ограничимся семейством x86, то у Intel и у AMD есть немного отличающиеся друг от друга технологии. Но замысел при этом используется один и тот же. Это оборудование устраняет проблему DMA.

Как и обычные MMU-блоки, I/O MMU использует таблицы страниц для отображения адреса памяти, которым желает воспользоваться устройство (адрес устройства), на физический адрес. В виртуальной среде гипервизор может настроить таблицы страниц таким образом, что устройство, выполняющее DMA, не станет забираться в память, не принадлежащую виртуальной машине, от имени которой оно работает.

I/O MMU-блоки при работе с устройством в виртуализированном мире предлагают различные преимущества. Прямая передача устройства (device pass through) позволяет физическому устройству быть напрямую назначенным конкретной виртуальной машине. В общем, было бы идеально, если бы адресное пространство устройства совпадало с гостевым физическим адресным пространством. Но это вряд ли может произойти, пока у вас не будет I/O MMU. Блок управления памятью позволяет адресам пройти явное переназначение, и тогда как устройство, так и виртуальная машина будут пребывать в абсолютном неведении о производимом в аппаратных недрах преобразовании адресов.

Изоляция устройств (device isolation) гарантирует, что устройство, назначенное виртуальной машине, может напрямую обращаться к этой виртуальной машине, не подвергая опасности неприкосновенность других гостевых операционных систем. Иными словами, I/O MMU предотвращает неконтролируемый DMA-трафик точно так же, как обычный MMU предотвращает неконтролируемое обращение к памяти из процессов. В обоих случаях обращение к неотображенным страницам влечет за собой сбой.

Но, к сожалению, на DMA и адресах история ввода-вывода не заканчивается. Для полноты картины нам нужно также виртуализировать прерывания, чтобы прерывания, выданные устройством, попадали на нужную виртуальную машину, имея правильный номер. В связи с этим современные блоки I/O MMU поддерживают переназначение прерываний (interrupt remapping). Предположим, устройство отправило сообщение, оповещающее о прерывании с номером 1. Сначала это сообщение попадает в I/O MMU, чтобы преобразоваться в новое сообщение, предназначенное для центрального процессора, на котором в данный момент работает виртуальная машина, да еще и с номером вектора, ожидаемого этой виртуальной машиной (например, 66), будет использована таблица переназначения прерываний.

И наконец, наличие I/O MMU также помогает 32-разрядным устройствам иметь доступ к памяти, превышающей порог в 4 Гбайт. Обычно такие устройства (например, DMA) не могут обращаться к адресам за пределами 4 Гбайт, но I/O MMU может легко переназначить нижние адреса устройства на любые адреса в физическом более обширном адресном пространстве.

7.7.2.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Блоки управления памятью при вводе-выводе:

  1. Примечание 2. О вводе во владение
  2. Блоки и Защитные Системы
  3. БЛОКИ МОЗГА
  4. Глава 12 ЭНЕРГЕТИЧЕСКИЕ БЛОКИ И ЗАЩИТНЫЕ СИСТЕМЫ В АУРЕ
  5. Блоки и Защитные Системы. Типы Характеров Человека
  6. Блоки из ПРОШЛЫХ ЖИЗНЕЙ, МЕШАЮЩИЕ ЯСНО-ВИДЕНИЮ '
  7. ПРЕДСТАВЛЕНИЕ ПАМЯТИ
  8. Статья 1040. Обращение взыскания на имущество, переданное в управление, по требованию кредитора установщика управления
  9. Гигиена памяти.
  10. укрепление памяти