【问题标题】:User process running kernel functions OR User process wait after system call用户进程运行内核函数或用户进程在系统调用后等待
【发布时间】:2019-08-23 13:04:48
【问题描述】:

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

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

我认为用户进程调用系统调用来使用 IO,内核执行内核指令,而内核正在运行用户进程等待直到 IO 进程完成。所以我认为短语2一定是错误的。但教授说两者都是正确的。有人可以帮我理解为什么吗?

【问题讨论】:

  • “用户进程调用系统调用来使用 IO,内核执行内核指令” - 内核在某个进程的上下文中执行指令。在许多操作系统中,用户进程和处理系统调用的内核进程是相同的进程。这就是为什么第二个短语也是正确的。
  • @Tsyvarev 让我说清楚。从进程来看,内核指令是在同一个进程中执行的,所以第二句话是正确的?
  • 是的,正是如此。

标签: operating-system kernel


【解决方案1】:

实际上,两者都只是有时正确。

“当用户进程调用IO时,它会调用一个系统调用并等待系统调用完成”

仅当系统服务执行同步 I/O 时才会如此。某些操作系统具有不会导致等待的异步 I/O 调用。

“当用户进程调用系统调用时,用户进程自己在内核态执行内核函数”

当系统以内核模式实现其所有系统服务时,情况就是如此。一些系统有多种模式(通常是 4 种),允许实现不会导致系统崩溃的系统服务。

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

【讨论】:

  • 所以系统可以有一个“安全内核”模式允许用户进程运行一些内核指令?
  • 没有。在 Intel 的古怪世界之外,通常有 4 种处理器模式。因此,您可以拥有对这些模式开放的系统内存。在这些中间模式下一般不能执行特权指令。
  • WIKI Link:您可以在此处了解有关多 CPU 模式系统的更多信息
猜你喜欢
  • 1970-01-01
  • 2013-11-09
  • 2018-06-05
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2018-11-01
相关资源
最近更新 更多