用户进程如何在不经过上下文切换的情况下执行系统调用



当用户进程执行系统调用时,会调用内核进程。现在,这个NOT是如何导致上下文切换的呢?由于内核进程与用户进程不同。或者,我说内核例程(由系统调用调用)和用户进程属于同一个进程,这是错的吗?

‘当用户进程执行系统调用时,会调用内核进程’——实际上并不是调用内核代码。任何系统调用都将不可避免地导致保护上下文的更改,即环循环。深度取决于通话。如果调用到达环0,则那里的内核代码可以访问所有用户和内核线程,因此通常不能将那里的内核码描述为"进程",即具有内存管理/安全上下文来提供保护的进程。通常,从0环到0环的一个环周期需要2000多个cpu周期(德国歌剧中需要三天)。无论系统调用是否导致线程上下文切换和/或进程上下文切换,都绝对需要这种开销。

在系统调用导致更改正在运行的线程集的情况下,将存在线程上下文切换的额外开销,尤其是当更改需要抢占在另一个处理器上运行的线程时。

如果任何新运行的线程与被抢占的线程属于不同的进程,那么进程上下文切换的开销会更大。

最新更新