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

时间:2012-02-01 23:05:50

标签: operating-system context-switch kernel-mode

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

1 个答案:

答案 0 :(得分:2)

'当用户进程执行系统调用时,将调用内核进程' - 实际上,内核代码不会被调用。任何系统调用都将不可避免地导致保护环境变化 - 一个环形周期。这有多深取决于电话。如果调用到达0,那么内核代码可以访问所有用户和内核线程,因此通常不能将内核代码描述为“进程” - 具有内存管理/安全上下文的内容保护。通常,来自环0的环形循环需要2000+个cpu循环(德国歌剧除外,需要三天)。无论系统调用是否导致线程上下文切换和/或进程上下文切换,都绝对需要此开销。

在系统调用导致更改正在运行的线程集的情况下,线程上下文切换会产生额外的开销,特别是如果更改需要抢占在另一个处理器上运行的线程。

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