ФЭНДОМ


Режим управления системой (SMM, System Management Mode) — самый «загадочный» режим работы микропроцессоров архитектуры IA-32. Впервые он появился в процессоре Intel 80386SL, предназначенном для ноутбуков.

Появление SMM было вызвано желанием обеспечить выполнение специфического для конкретной вычислительной платформы кода незаметно для любых «нормальных» программ, включая существующие операционные системы. Первоначально такой код был предназначен для управления электропитанием в обход ОС, в первую очередь MS DOS и Windows 3.x, которые ещё не имели соответствующих возможностей. В настоящее время SMM используется в стандартах управления конфигурированием и энергопитанием ACPI и более старом APM, а также для программной эмуляции устаревшего оборудования (например, клавиатуры и мыши PS/2). Обычные программы не замечают выполнения кода SMM, за исключением увеличения времени своего выполнения и, возможно, изменения состояния некоторых устройств, которыми управляет код SMM. В связи со спецификой стоящих перед кодом этого режима задач весь он сосредоточен в BIOS.

Вход в режим управления системой возможен только по аппаратному сигналу SMI (прерывание управления системой) из любого другого режима работы. Получив этот сигнал, процессор сохраняет своё текущее состояние в специальной области памяти (так называемая память режима управления системой — SMRAM) и начинает выполнение кода SMM. Завершается код SMM выполнением доступной только ему инструкции RSM, возвращающей управление программе, прерванной сигналом SMI. Сигнал SMI не может быть запрещён и имеет наивысший приоритет по сравнению с любыми другими источниками прерываний.

Код режима управления системой не может быть прерван никакими внешними событиями, включая вторичное появление сигнала на линии SMI. Он выполняется в плоском адресном пространстве объёмом 4 Гбайта и может использовать любые команды процессора. В режиме управления системой невозможно использование механизма расширенной физической адресации, именно поэтому объём доступного физического адресного пространства памяти ограничен величиной 4 Гбайта.

SMRAM является частью оперативной памяти. Базовый адрес и размер области, отведённой под SMRAM, устанавливается программно (это выполняет инициализационный код BIOS). В многопроцессорных системах каждому логическому процессору назначается своя область SMRAM.

Первоначально в качестве SMRAM использовалось ОЗУ, лежащее по физическим адресам 000A_0000 — 000B_FFFF. При работе процессора в обычном режиме в этом диапазоне находится видеопамять, и доступы осуществляются к ней. Когда же процессор находится в режиме SMM, доступ к видеопамяти блокируется, и вместо неё доступным становится обычное ОЗУ. Позднее появилась возможность выделять SMRAM в памяти с адресами свыше 1 Мбайта. В документации на чипсеты Intel соответствующие области обычно обозначаются TSEG и HSEG (см. Карта распределения памяти). Например, чипсет G45 позволяет использовать для доступа к SMRAM следующие группы адресов:

  • область совместимой (compatible) SMRAM, лежащую по физическим адресам 000A_0000 — 000B_FFFF;
  • область TSEG, лежащую сразу под памятью, отведённой под нужды встроенного графического контроллера, а если последний не используется — в конце нижней (ниже 4 Гбайт) области доступной для использования системной памяти;
  • область HSEG, лежащую с точки зрения процессора по физическим адресам FEDA_0000 — FEDB_FFFF, но отображаемую на адреса памяти 000A_0000 — 000B_FFFF, т.е. в область совместимой SMRAM. Разница заключается в том, что область 000A_0000 — 000B_FFFF не может кэшироваться процессором, поскольку на эти адреса приходится и SMRAM, и видеопамять, а область FEDA_0000 — FEDB_FFFF может быть кэширована.

Современные чипсеты, включая упомянутый выше G45, включают специальную поддержку обращений к SMRAM: те области, которые отведены под неё, недоступны внешним устройствам, а также процессорам, работающим не в режиме управления системой.

При использовании механизма виртуализации возможны два варианта обработки SMI:

  • обычный режим (default treatment), в котором обработку SMI осуществляет код аппаратной платформы, на базе которой работают виртуальные машины (т.е. код, находящийся в «настоящем» BIOS);
  • двухмониторный режим (dual-monitor treatment), когда обслуживание SMI выполняется двумя программами: исполнительным монитором (executive monitor) и монитором SMM (SMM monitor). Первый работает вне режима управления системой: он обеспечивает виртуализацию для поддержки гостевых систем. Второй монитор функционирует в SMM и выполняет функции управления реальной аппаратной платформой. Двухмониторный режим поддерживается не всеми процессорами.

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

Обнаружено использование расширения AdBlock.


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

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.