В каком порядке происходит переключение контекста на ядро

Из этих трех шагов, это правильный порядок, или мне нужно поменять любой?

1) Сохранить данные о текущем состоянии

2) Включить режим ядра

3) Определить причину прерывания

2 ответа

  1. Текущий контекст процесса сначала частично сохраняется аппаратным обеспечением (процессором), а остальное - программным обеспечением (ядром).
  2. Затем управление передается от пользовательского процесса к ядру путем загрузки нового eip, esp и другого сохраненного контекста ядра, загружаемого аппаратно из сегмента состояния задачи (TSS).
  3. Затем на основе прерывания или ловушки нет. запрос отправляется соответствующему обработчику.

Итак, позвольте мне попытаться помочь вам выяснить правильный порядок.

  • Только ядро ​​может переключать контекст, поскольку только ядро ​​имеет доступ к необходимым данным и может, например, изменять таблицы страниц для адресного пространства другого процесса.
  • Чтобы определить, делать переключение контекста или нет, ядру необходимо проанализировать некоторые "входные данные". Переключение контекста может быть сделано, например, потому что сработало прерывание таймера, и временной интервал процесса закончился, или потому что процесс начал делать некоторый IO.
  • Только ядро ​​может сохранить состояние пользовательского процесса, потому что пользовательский процесс изменит свое состояние, когда попытается сохранить его. Однако ядро ​​знает, что если оно работает, пользовательский процесс в настоящее время прерывается (например, из-за прерывания или потому, что процесс пространства пользователя добровольно вошел в ядро, например, для системного вызова).
Другие вопросы по тегам