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