Является ли выполнение кода ядра для обработки системного вызова из процесса частью процесса?
(В основном я задаю следующие вопросы об ОС с точки зрения информатики. Далее, если мне нужно быть конкретным в отношении ОС, я в основном говорю о Linux)
Процесс определяется как выполнение одной или нескольких программ.
Тем не менее, мы часто различаем пользовательские программы и ядро ОС (которое также состоит из программ).
Процесс выполняет только пользовательские программы, а не программы в ядре ОС?
Когда процесс выполняет системный вызов, процессор переключается из режима пользователя в режим ядра и выполняет обработчик системного вызова в коде ядра. Является ли выполнение обработчика системных вызовов (как часть кода ядра) частью процесса или частью выполнения ядра ОС?
Благодарю.
1 ответ
В большинстве операционных систем "ядро" выполняется в контексте процесса. Есть некоторые, которые работают по-другому, но это общий механизм использования. Процесс переключается между пользовательским режимом и режимом ядра (и в некоторых системах есть дополнительные режимы).
Процесс выполняет только пользовательские программы, а не программы в ядре ОС?
В ядре ОС нет программ (вообще). Процесс может выполнять обработчики прерываний и исключений в режиме ядра.
Когда процесс выполняет системный вызов, процессор переключается из режима пользователя в режим ядра и выполняет обработчик системного вызова в коде ядра. Является ли выполнение обработчика системных вызовов (как часть кода ядра) частью процесса или частью выполнения ядра ОС?
Процесс. То же самое происходит с прерываниями.
Билл делает запрос ввода-вывода. Процесс Джима начинает работать. Запрос ввода / вывода Билла завершается, запускается и прерывается. Процесс Джима входит в режим ядра и обрабатывает запрос ввода-вывода Билла.
Конечно, система безопасности не позволяет коду пользовательского режима Джима иметь доступ к данным Билла.