Нужно ли процессу ядра что-то сохранять при переключении в пользовательский режим? [закрытый]

по словам моего профессора,

"при переключении из пользовательского режима в режим ядра, статус пользовательского процесса должен быть сохранен полностью. Но при переключении из режима ядра в режим пользователя, ничего не нужно сохранять, так как процесс ядра не имеет ничего, чтобы сохранить."

прав ли он? Разве процесс ядра не имеет ничего, чтобы сохранить?

24
задан Tom Wijsman
21.05.2023 19:02 Количество просмотров материала 2781
Распечатать страницу

4 ответа

Это лучше понять, если мы проанализируем вашу историю и пытаться лучше использовать терминологию:

  • при переключении из пользовательского режима в режим ядра

    Это также называется переключателем режима.

    когда это случилось? Это происходит, когда ядро процедура вызывается; что может произойти, например, при вызове из пользовательского режима через возвышение или аппаратное прерывание.

    Что такое a процедура? Это фрагмент кода, который обрабатывает вызов / прерывание.

  • статус пользовательского процесса должен быть сохранен полностью.

    точно, поскольку ядро будет запущено ядро процедура нам нужно временно сохранить состояние запущенного пользовательского процесса.

  • но при переключении из режима ядра в режим пользователя, ничего не должно быть спас

    нет ничего, чтобы спастись, так как мы называли процедура имеющего сделал выполнение, в процессе ядра больше нет статуса с процедура больше не работает.

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

Итак, у нас есть две разные вещи здесь:

  • процесс пользователей, который должен продолжать выполняться на переключателе режима, поэтому его состояние сохраняется.

  • обычная ядра, которое сделано исполняющ на переключателе режима, поэтому свое состояние размещано .

Как ответить на ваш вопрос "разве процесс ядра ничего не сохраняет?"; на самом деле процесс ядра не запущен, это просто оболочка, в которой память ядра, подпрограммы и некоторая другая магия.

5
отвечен Tom Wijsman 2023-05-23 02:50

Я никогда не увлекался терминологией "процесса ядра", но это только моя личная проблема.  Я считаю, что ответ заключается в том, что все процессы являются пользовательскими процессами в их основе, а "процесс ядра" активируется только тогда, когда точка входа ядра вызывается из пользовательского режима.  (Я подозреваю, что ваш профессор может сказать, что я не сформулировал это точно правильно, но я считаю, что я достаточно близок, чтобы дать вам достаточно точное представление об отношениях.)

это похоже на то, что происходит в обычной программе: Если у вас есть функция hypot и он называет sqrt система должна сохранить hypotлокальные переменные и точка возврата (счетчик программ / указатель команд из которого sqrt называлась).  Но когда sqrt возвращает и hypot резюме sqrt кадр стека может быть отброшен.

1
отвечен Scott 2023-05-23 05:07

похоже, это в контексте упреждающая многозадачность.

операционная система / ядро всегда работает, так что нет ничего, чтобы быть сохранены. Другие программы тоже работают (поверх ОС), но каждая из них получает долю секунды за раз, по очереди. По мере того как каждая программа получает свою очередь, стек для этой программы должен быть загружен, так что обработка может произойти, то состояние всех регистров должны быть сохранены обратно в оперативную память от процессора, так что следующая программа может нагрузка.

1
отвечен Bigbio2002 2023-05-23 07:24

профессор частично прав.

данные, которые сохраняются при переключении из пользовательского режима в режим ядра является состояние CPU, а не процесс. Пользовательский режим и режим ядра связаны с ЦП, а не с процессами. Когда ядро выполняет какую-либо функцию от имени пользователя, состояние процессора сохраняется заранее. То есть состояние ЦП при выполнении кода пользовательского режима. Затем ядро выполняет свое действие в пользовательском режиме запрос кода. Наконец, ядро восстанавливает состояние процессора обратно в ранее сохраненное состояние. Ядро может вернуть процессор обратно в пользовательский режим, в зависимости от ядра.

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

компоненты операционной системы обычно выполняется в режиме ядра, также называемом кольцом 0 на процессорах x86. Пользовательский режим содержит приложения и иногда называется кольцом 3.

1
отвечен Patrick Seymour 2023-05-23 09:41

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх