Является ли выполнение кода ядра для обработки системного вызова из процесса частью процесса?

(В основном я задаю следующие вопросы об ОС с точки зрения информатики. Далее, если мне нужно быть конкретным в отношении ОС, я в основном говорю о Linux)

Процесс определяется как выполнение одной или нескольких программ.

Тем не менее, мы часто различаем пользовательские программы и ядро ​​ОС (которое также состоит из программ).

  • Процесс выполняет только пользовательские программы, а не программы в ядре ОС?

  • Когда процесс выполняет системный вызов, процессор переключается из режима пользователя в режим ядра и выполняет обработчик системного вызова в коде ядра. Является ли выполнение обработчика системных вызовов (как часть кода ядра) частью процесса или частью выполнения ядра ОС?

Благодарю.

1 ответ

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

Процесс выполняет только пользовательские программы, а не программы в ядре ОС?

В ядре ОС нет программ (вообще). Процесс может выполнять обработчики прерываний и исключений в режиме ядра.

Когда процесс выполняет системный вызов, процессор переключается из режима пользователя в режим ядра и выполняет обработчик системного вызова в коде ядра. Является ли выполнение обработчика системных вызовов (как часть кода ядра) частью процесса или частью выполнения ядра ОС?

Процесс. То же самое происходит с прерываниями.

Билл делает запрос ввода-вывода. Процесс Джима начинает работать. Запрос ввода / вывода Билла завершается, запускается и прерывается. Процесс Джима входит в режим ядра и обрабатывает запрос ввода-вывода Билла.

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

Другие вопросы по тегам