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