用户态和内核态:同一时刻不同的程序

User mode and kernel mode: different program at same time

是否有可能一个进程运行同时处于内核态而另一个进程处于用户态?

我知道,这不是编码问题,但如果有人知道答案,请指导我。

是的,这是可能的。甚至多个进程可以同时处于内核态。

只是一个进程不能同时处于两种模式。

两个进程实际上要同时运行ning,你必须有多个CPU。事实上,当你有多个 CPUs 时,不同 CPUs 上的 运行s 是非常松散耦合的,你绝对可以有一个进程 运行ning 用户代码一个 CPU,而另一个进程 运行 的内核代码(例如,在系统调用中做一些工作)在另一个 CPU.

如果您只询问一个 CPU,那么您不能同时拥有两个 运行ning 进程。但是你可以拥有两个 运行nable 进程,这意味着两个进程都准备好 运行 但是因为只有一个 CPU ,实际上只有一个可以 运行。 运行nable 进程之一可能处于用户模式 ​​- 例如,考虑一个长时间的 运行ning 紧密循环,它在其时间配额结束后被抢占。另一个 运行nable 进程可能处于内核模式 - 例如,考虑一个从磁盘执行 read() 系统调用的进程,内核将读取请求发送到磁盘,但读取请求已完成,所以现在进程是准备在内核模式下再次 运行 并完成 read() 调用。

纠正我,但我想内核模式下没有任何进程,只有线程。