当某个进程进行系统调用以通过网络传输TCP数据包时,以下哪些步骤不会总是发生?

时间:2019-05-04 00:55:02

标签: networking architecture operating-system system

我正在通过学​​习IIT孟买(https://www.cse.iitb.ac.in/~mythili/os/)课程的讲义来自学OS。流程工作表中的问题之一是,在标题所述的情况下,以下情况并非总是发生。 答案是C。

A。该过程进入内核模式。

B。 CPU的程序计数器移至地址空间的内核部分。

C。该进程被上下文切换出,一个单独的内核进程开始执行。

D。调用用于处理TCP / IP数据包的OS代码

我有点困惑。我以为,当发生中断例程时,该进程会被上下文切换出去,以便其他进程可以运行,并且在此期间CPU不会空闲。然后,内核将负责数据包的发送。 为什么C不正确?

1 个答案:

答案 0 :(得分:0)

您说的很对:“当发生中断例程时,该进程将在上下文中切换出来,以便其他进程可以运行,并且在此期间CPU不会处于空闲状态”,但是需要添加“通常或大部分”字样

在大多数情况下,还有另一个进程正在等待CPU时间,可以安排该进程。但是不是100%的情况。问题是关于“始终”一词的问题,而在给定情况下总是出现其他选项,而选项C是OS在运行时做出的选择。如果OS确定退出此过程可能比执行系统调用和恢复同一过程次优,则它可能不会执行上下文切换。

与上下文切换相关联的代价是,如果在某些I / O上也阻塞了其他进程,则OS最好不切换上下文,或者可能有其他原因不切换上下文,例如只有1个进程正在运行,没有其他进程可以将上下文切换到!