【问题标题】:Does an OS kernel communicate with a process in the same ways as IPC? [closed]操作系统内核是否以与 IPC 相同的方式与进程通信? [关闭]
【发布时间】:2016-03-22 19:58:16
【问题描述】:

一个进程使用various ways of IPC (interprocess communication)与另一个进程通信,比如共享内存、消息传递、信令?

我知道an OS kernel can communicate with a process using signals,如果我是对的,用相同的信号发信号也是IPC的一种方式。

操作系统内核是否使用其他 IPC 方式(例如共享内存、消息传递)与一个或多个进程通信?

如果需要具体,我最想了解Linux内核,也很高兴了解Windows内核。

【问题讨论】:

  • linux 作为一种架构是单片的,这意味着整个内核是一个大模块,内核之间/内部的通信是通过信号完成的(如 unix 系统)。其他内核是模块化或微内核,它们使用更灵活(和更慢)的 IPC
  • 请做一些谷歌搜索!在大约 30 秒内,我阅读了实现信号发送机制的 signal.c 的源代码。
  • 投票结束太广泛了。操作系统可以通过多种方式与用户模式代码“通信”。可以说,用户模式代码进行的每一个 API 调用都是一种通信形式。
  • @Harry:“用户模式代码产生的每一个 API 调用”是进程与操作系统内核通信的一种方式,而不是操作系统内核与进程通信的一种方式。
  • 是一样的;如果我在和你交流,你也在和我交流。如果您的意思是未经请求的通信,我不确定 Windows 或 Linux 内核是否会这样做。 SIGPIPE 并不是真正主动提供的,例如,因为它是对 API 调用期间出现的特定情况的直接响应;它是一个信号而不是错误代码这一事实只是一个实现细节。 (因此,如果 SIGPIPE 算作“通信”,那么返回错误代码也是如此。)也许您可以缩小定义范围或提供上下文?照原样,我真的不知道你在问什么。

标签: linux windows process operating-system ipc


【解决方案1】:

这个问题表明对大多数操作系统的结构存在根本性的误解。

没有单独的“内核”进程可以与之通信。内核是在任何进程的上下文中运行的代码。内核内核代码由中断、陷阱或异常调用。在内核模式下,进程可以访问所有进程共享的内核内存。

因此,进程与内核之间不能进行进程间通信。

当内核发送信号(在 Unix 中)或 APC(在 Windoze 中)时,它会在接收信号的进程的上下文中这样做。

有些信号可以在接收过程之外创建。一般顺序是:

进程 P 进入内核模式并在内核内存中排队一个信号给进程 Q。 当进程 Q 成为当前进程时,内核会安排 Q 执行一个信号处理程序。

对于这样的信号,通信是在P和Q之间;不是 Q 和内核。

请记住,这种信号机制起源于 Unix 只有单一执行流的时代。这是一种穷人形式的异步过程调用(如在 Windoze 或 VMS 上)。曾几何时,对太监进行任何形式的并行处理都需要创建一个单独的进程。 [设计不良] 信号模型不区分外部生成/异步/同步事件。

Windoze (NT) 遵循 VMS 模型,使用软件中断来通知事件进程。这种中断模型很大程度上隐藏在将中断模型转换为事件模型的 Windows API 后面。

在中断模型中,一个进程可以将多个 I/O 请求排队到(例如)100 个单独的网络连接、终端或磁盘驱动器。作为操作系统服务的一部分,调用者可以指定在请求完成时要调用的过程。假设它有 100 个终端。

单个进程(应用程序)可以管理此类系统中的任意数量的设备。

如果任何一个终端因软件中断而断开连接,进程可能会收到通知。中断处理程序的参数将识别特定设备,以便处理程序可以重新建立连接或清理。

在经典 Unix(线程之前)中,您必须为每个终端创建一个单独的进程。该进程将等待“读取”或“写入:等待终端响应的操作。如果终端断开连接,该进程将收到一个 SIGHUP 信号。

在 Windoze 中,信号是 C 库的一部分,将软件中断转换为看起来像 unix 信号的东西。

【讨论】:

  • 谢谢。我知道内核不是进程。这就是为什么我要询问操作系统内核是否使用与 IPC 相同的方式与进程通信。
猜你喜欢
  • 2011-01-02
  • 1970-01-01
  • 2011-11-17
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 2012-02-05
相关资源
最近更新 更多