Возможно ли, что один процесс одновременно работает в режиме ядра, а другой — в пользовательском режиме?
Я знаю, что это не вопрос кодирования, но, пожалуйста, помогите мне, если кто-то знает ответ.
Возможно ли, что один процесс одновременно работает в режиме ядра, а другой — в пользовательском режиме?
Я знаю, что это не вопрос кодирования, но, пожалуйста, помогите мне, если кто-то знает ответ.
Да, это возможно. Даже несколько процессов могут одновременно находиться в режиме ядра.
Просто один процесс не может находиться в обоих режимах одновременно.
Чтобы два процесса выполнялись одновременно, у вас должно быть несколько ЦП. И действительно, когда у вас есть несколько ЦП, то, что выполняется на разных ЦП, очень слабо связано, и вы определенно можете иметь один процесс, выполняющий пользовательский код на одном ЦП, в то время как другой процесс выполняет код ядра (например, выполняет некоторую работу внутри системного вызова) на другом процессоре.
Если вы спрашиваете только об одном ЦП, в этом случае у вас не может быть двух запущенных процессов одновременно. Но у вас может быть два запускаемых процесса, что означает два процесса, которые оба готовы к запуску, но, поскольку имеется только один ЦП, только один из них может фактически работать. Один из запущенных процессов может находиться в пользовательском режиме — например, рассмотрим продолжительный замкнутый цикл, который был вытеснен после того, как его квота времени истекла. Другой исполняемый процесс может находиться в режиме ядра — например, рассмотрим процесс, который выполнил системный вызов read() с диска, ядро отправило запрос на чтение на диск, но запрос на чтение был выполнен, так что теперь процесс готов к повторному запуску в режиме ядра и завершите вызов read().