Переключатели ЦП от Непривилегированного режима до Привилегированного режима: Что точно это делает? Как делает это делает этот переход?

Переключатели ЦП от Непривилегированного режима до Привилегированного режима: Что точно это делает? Как делает это делает этот переход?

Править:

Даже если это является архитектурно-зависимым, предоставьте мне ответ. Архитектура ваше дело. Скажите мне для архитектуры, что Вы знаете о.

Я хочу понять о том, что все вещи будут вовлечены в него.

25
задан Joachim Sauer 23 March 2010 в 11:26
поделиться

3 ответа

Примечание: это в основном относится к архитектуре x86. Вот несколько упрощенное объяснение.

Переход обычно вызывается одной из следующих причин:

  • Ошибка (например, ошибка страницы или другое исключение, вызванное выполнением инструкции)
  • Прерывание (например, прерывание клавиатуры или завершение ввода-вывода)
  • Ловушка (например, системный вызов)

Обычно происходит то, что система проверяет таблицу дескрипторов прерываний (IDT). Каждое исключение (прерывание, ошибка и т. Д.) Имеет связанный с ним номер, который используется для индексации в этой таблице.

Из этой таблицы ЦП может определить обработчик прерывания, который нужно запустить.

В рамках перехода вступают в силу следующие изменения (обычно):

  • Переключиться на стек ядра
  • Сохраняются EFLAGS
  • Сохраняются селектор сегмента кода и EIP.
  • Селектор сегмента стека и указатель стека сохранены
  • Запустить выполнение обработчика прерывания
  • Регистры общего назначения сохранены (задание обработчика)
  • Селекторы сегмента изменяются на селекторы ядра (задание обработчика)

Вы сейчас в режиме ядра.

Надеюсь, что это поможет :)

30
ответ дан 28 November 2019 в 21:23
поделиться

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

4
ответ дан 28 November 2019 в 21:23
поделиться

В Windows при вызове системы библиотечные подпрограммы вызывают точку входа ядра, находящуюся в адресном пространстве операционной системы. Он, в свою очередь, переводит ЦП в режим супервизора, выполняя специальную для этой цели инструкцию, такую ​​как sysenter . По сути, он устанавливает бит в регистре флагов. Это позволяет ОС использовать привилегированные инструкции.

1
ответ дан 28 November 2019 в 21:23
поделиться