Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Режимы ЦП (также называемые режимами процессора, состояниями ЦП, уровнями привилегий ЦП и другими именами) - это рабочие режимы для центрального процессора некоторых компьютерных архитектур, которые накладывают ограничения на тип и объем операций, которые могут выполняться определенными процессами , выполняемыми CPU. Такой дизайн позволяет операционной системе работать с большим количеством привилегий, чем прикладное программное обеспечение .

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

На практике, однако, системные вызовы требуют времени и могут ухудшить производительность вычислительной системы, поэтому разработчики систем нередко позволяют некоторому критичному по времени программному обеспечению (особенно драйверам устройств ) работать с полными привилегиями ядра.

Можно реализовать несколько режимов, что позволяет гипервизору запускать несколько супервизоров операционной системы под ним, что является базовой конструкцией многих систем виртуальных машин , доступных сегодня.

Типы режимов [ править ]

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

Ядро
В режиме ядра ЦП может выполнять любую операцию, разрешенную его архитектурой; может быть выполнена любая инструкция, инициирована любая операция ввода-вывода, доступна любая область памяти и так далее. В других режимах ЦП определенные ограничения на операции ЦП устанавливаются аппаратным обеспечением. Как правило, определенные инструкции не разрешены (особенно те, в том числе операции ввода-вывода, которые могут изменить глобальное состояние машины), некоторые области памяти недоступны и т. Д. Возможности ЦП в пользовательском режиме обычно являются подмножеством этих доступны в режиме ядра, но в некоторых случаях, например, при аппаратной эмуляции неродных архитектур, они могут значительно отличаться от тех, которые доступны в стандартном режиме ядра.
Пользователь
Некоторые архитектуры ЦП поддерживают несколько пользовательских режимов, часто с иерархией привилегий. Часто говорят, что эти архитектуры имеют безопасность на основе кольца, в которой иерархия привилегий напоминает набор концентрических колец с режимом ядра в центре. Аппаратное обеспечение Multics было первой значительной реализацией кольцевой безопасности, но многие другие аппаратные платформы были разработаны в соответствии с аналогичными принципами, включая защищенный режим Intel 80286 , а также IA-64 , хотя в этих случаях он упоминается по-другому. .

Защита режима может распространяться на ресурсы, выходящие за рамки самого аппаратного обеспечения ЦП. Аппаратные регистры отслеживают текущий режим работы ЦП, но дополнительные регистры виртуальной памяти , записи таблицы страниц и другие данные могут отслеживать идентификаторы режима для других ресурсов. Например, ЦП может работать в кольце 0, что обозначено словом состояния в самом ЦП, но каждый доступ к памяти может дополнительно проверяться по отдельному номеру кольца для сегмента виртуальной памяти, на который направлен доступ, и / или по номеру звонка для целевой физической страницы (если есть). Это было продемонстрировано на портативной системе PSP .

Аппаратное обеспечение, отвечающее требованиям виртуализации Попека и Голдберга, значительно упрощает написание программного обеспечения для эффективной поддержки виртуальной машины. Такая система может запускать программное обеспечение, которое «считает», что оно работает в режиме супервизора, но на самом деле работает в пользовательском режиме.

Ссылки [ править ]