Режимы ЦП (также называемые режимами процессора, состояниями ЦП, уровнями привилегий ЦП и другими названиями) — это режимы работы центрального процессора большинства компьютерных архитектур , которые накладывают ограничения на тип и объем операций, которые могут быть выполнены инструкциями, выполняемыми ЦП. Например, эта конструкция позволяет операционной системе работать с большими привилегиями, чем прикладное программное обеспечение , запуская операционные системы и приложения в разных режимах. [1]
В идеале только высоконадежный код ядра может выполняться в неограниченном режиме; все остальное (включая неконтролируемые части операционной системы) работает в ограниченном режиме и должно использовать системный вызов (через прерывание ), чтобы запросить ядро выполнить от его имени любую операцию, которая может повредить или поставить под угрозу систему, что делает невозможным для недоверенных программ изменять или повреждать другие программы (или саму вычислительную систему). Драйверы устройств спроектированы так, чтобы быть частью ядра из-за необходимости частого доступа к вводу-выводу .
Можно реализовать несколько режимов, например, позволяя гипервизору запускать несколько супервизоров операционных систем под своим началом, что является базовой конструкцией многих систем виртуальных машин, доступных сегодня.
Неограниченный режим часто называют режимом ядра, но существует множество других обозначений ( главный режим , режим супервизора , привилегированный режим и т. д.). Ограниченные режимы обычно называются пользовательскими режимами, но также известны под многими другими названиями ( режим подчиненного, проблемное состояние и т. д.). [2]
Некоторые архитектуры ЦП поддерживают больше режимов, чем те, часто с иерархией привилегий. Часто говорят, что эти архитектуры имеют кольцевую безопасность, в которой иерархия привилегий напоминает набор концентрических колец с режимом ядра в центре. Аппаратное обеспечение Multics было первой значительной реализацией кольцевой безопасности, но многие другие аппаратные платформы были разработаны по схожим принципам, включая защищенный режим Intel 80286 , а также IA-64 , хотя в этих случаях он упоминается под другим именем.
Защита режима может распространяться на ресурсы за пределами самого оборудования ЦП. Аппаратные регистры отслеживают текущий режим работы ЦП, но дополнительные регистры виртуальной памяти , записи таблицы страниц и другие данные могут отслеживать идентификаторы режима для других ресурсов. Например, ЦП может работать в кольце 0, как указано словом состояния в самом ЦП, но каждый доступ к памяти может дополнительно проверяться по отдельному номеру кольца для сегмента виртуальной памяти, на который нацелен доступ, и/или по номеру кольца для физической страницы (если таковая имеется). Это было продемонстрировано с помощью портативной системы PSP .
Аппаратное обеспечение, которое соответствует требованиям виртуализации Попека и Голдберга, значительно упрощает написание программного обеспечения для эффективной поддержки виртуальной машины. Такая система может запускать программное обеспечение, которое «думает», что оно работает в режиме супервизора, но на самом деле работает в пользовательском режиме.
Несколько компьютерных систем, представленных в 1960-х годах, такие как IBM System/360 , DEC PDP-6 / PDP-10 , GE-600 / Honeywell 6000 series, а также Burroughs B5000 series и B6500 series, поддерживают два режима ЦП: режим, который предоставляет полные привилегии коду, работающему в этом режиме, и режим, который запрещает прямой доступ к устройствам ввода/вывода и некоторым другим аппаратным средствам для кода, работающего в этом режиме. Первый режим упоминается под такими именами, как состояние супервизора (System/360), исполнительный режим (PDP-6/PDP-10), главный режим (GE-600 series), режим управления (B5000 series) и состояние управления (B6500 series). Второй режим упоминается под такими именами, как состояние проблемы (System/360), пользовательский режим (PDP-6/PDP-10), подчиненный режим (GE-600 series) и нормальное состояние (B6500 series); В серии B5000 предусмотрено несколько нерегулируемых режимов.
RISC-V имеет три основных режима ЦП: режим пользователя (U), режим супервизора (S) и режим машины (M). [3] Виртуализация поддерживается посредством ортогональной настройки CSR вместо четвертого режима.