【发布时间】: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