#c #c #linux #operating-system #linux-kernel
#c #c #linux #операционная система #linux-ядро
Вопрос:
здравствуйте, в операционной системе unix BSD 5 у нас есть диспетчер отдельного процесса с идентификатором процесса или его код выполняется в контексте какого-то другого процесса. например, если у нас есть какая-то пользовательская запущенная программа, которую необходимо отправить обратно в «готово к запуску в памяти» … так что dispatcher будет выполняться в контексте пользовательской программы или нет? будем признательны за любую помощь.
Ответ №1:
Ядро Linux (Unix, BSD, macOS X, …) действует как «диспетчер». Он решает, какой процесс должен выполняться следующим, настраивая приоритеты и статус процессов, и гарантирует, что выбранный процесс не будет выполняться дольше, чем его квант времени (до того, как ядро получит возможность контролировать, какой процесс выполняется следующим еще раз). Ядро использует упреждающее планирование (а не совместное планирование). Он категорически не выполняется в контексте пользовательской программы; он выполняется в контексте ядра.
Вы можете обсудить, является ли ядро отдельным процессом. Это, конечно, не часть вашего пользовательского процесса, поэтому он отдельный; вопрос в том, действительно ли это процесс. Однако это несколько философский вопрос и на самом деле вас не затрагивает — существует отдельная часть системы, которая управляет планированием и отправкой процессов.