Operating system 运行内核函数的用户进程或系统调用后等待的用户进程

Operating system 运行内核函数的用户进程或系统调用后等待的用户进程,operating-system,kernel,Operating System,Kernel,我在听操作系统讲座,被这两个短语弄糊涂了 当用户进程调用IO时,它调用系统调用并等待系统调用完成 当用户进程调用系统调用时,用户进程本身在内核模式下执行内核函数 我认为用户进程调用系统调用来使用IO,内核执行内核指令,而内核正在运行,用户进程等待IO进程完成。所以我认为第二句一定是错的。但教授说这两种说法都是正确的。有人能帮我理解为什么吗?事实上,两者有时都是正确的 当用户进程调用IO时,它调用系统调用并等待系统调用完成 只有在系统服务执行同步I/O时才是这样。某些操作系统具有不会导致等待的异步

我在听操作系统讲座,被这两个短语弄糊涂了

  • 当用户进程调用IO时,它调用系统调用并等待系统调用完成
  • 当用户进程调用系统调用时,用户进程本身在内核模式下执行内核函数

  • 我认为用户进程调用系统调用来使用IO,内核执行内核指令,而内核正在运行,用户进程等待IO进程完成。所以我认为第二句一定是错的。但教授说这两种说法都是正确的。有人能帮我理解为什么吗?

    事实上,两者有时都是正确的

    当用户进程调用IO时,它调用系统调用并等待系统调用完成

    只有在系统服务执行同步I/O时才是这样。某些操作系统具有不会导致等待的异步I/O调用

    当用户进程调用系统调用时,用户进程本身在内核模式下执行内核函数

    当系统以内核模式实现其所有系统服务时,情况就是这样。一些系统具有多种模式(通常为4),允许实现不可能使系统崩溃的系统服务


    无论如何,这可能不是同步I/O系统服务调用。在这种情况下,它可能不会等待。如果调用时间系统服务,则进程不太可能等待。

    “用户进程调用系统调用以使用IO,内核执行内核指令”-内核在某个进程的上下文中执行指令。在许多操作系统中,用户进程和处理系统调用的内核进程是相同的进程。这就是为什么第二个短语也是正确的。@Tsyvarev让我说清楚。从进程的角度来看,内核指令是在同一进程中执行的,所以第二个短语是正确的?是的,完全正确。因此,系统可以有一个“安全内核”模式,允许用户进程运行一些内核指令?不是。在古怪的英特尔世界之外,通常有4种处理器模式。因此,您可以拥有对这些模式开放的系统内存。通常,您不能在这些中间模式下执行特权指令。注意:您可以在此处了解有关多CPU模式系统的更多信息