Переключатели ЦП от Непривилегированного режима до Привилегированного режима: Что точно это делает? Как делает это делает этот переход?
Править:
Даже если это является архитектурно-зависимым, предоставьте мне ответ. Архитектура ваше дело. Скажите мне для архитектуры, что Вы знаете о.
Я хочу понять о том, что все вещи будут вовлечены в него.
Примечание: это в основном относится к архитектуре x86. Вот несколько упрощенное объяснение.
Переход обычно вызывается одной из следующих причин:
Обычно происходит то, что система проверяет таблицу дескрипторов прерываний (IDT). Каждое исключение (прерывание, ошибка и т. Д.) Имеет связанный с ним номер, который используется для индексации в этой таблице.
Из этой таблицы ЦП может определить обработчик прерывания, который нужно запустить.
В рамках перехода вступают в силу следующие изменения (обычно):
Вы сейчас в режиме ядра.
Надеюсь, что это поможет :)
Это зависит от системы, но обычный механизм заключается в том, что некоторая пользовательская операция вызывает программное прерывание. Это прерывание заставляет процессор переключать режимы и переходить к коду ядра, которое затем проверяет, что программа пыталась сделать (системный вызов?), А затем выполняет запрошенное действие и возвращается к коду пользовательского режима. Другие механизмы, помимо программного прерывания, также могут вызывать переход; например, в системе с вытесняющей многозадачностью прерывание по таймеру может вызвать запуск планировщика.
В Windows при вызове системы библиотечные подпрограммы вызывают точку входа ядра, находящуюся в адресном пространстве операционной системы. Он, в свою очередь, переводит ЦП в режим супервизора, выполняя специальную для этой цели инструкцию, такую как sysenter . По сути, он устанавливает бит в регистре флагов. Это позволяет ОС использовать привилегированные инструкции.