一个进程使用IPC(进程间通信)的各种方式与另一个进程进行通信 ,例如共享内存,消息传递,信令?
我知道一个操作系统的内核可以和一个使用信号的进程进行通信 ,如果我是对的,那么同样的信号也是IPC的一种方式。
操作系统内核是否与一个进程或进程使用IPC的其他方式进行通信,例如共享内存,消息传递?
如果需要具体,我想知道最多的Linux内核,也很高兴知道Windows内核。
我如何解释meminfo中的所有内存?
为什么在批处理脚本中检查了Windows版本?
操作系统崩溃的常见原因
在Windows上使用C语言读取硬盘驱动器上的特定扇区
从性能的angular度来看,虚拟地址空间映射怎么可以被接受呢?
如何在运行时检查内存地址是否可写?
使用`splice` for Linux …还有什么其他的系统?
如果我想将基于Intel Atom的主板用作embedded式系统,可以使用哪些操作系统?
如何testing我的应用程序在不同国家的Windows操作系统版本上的function?
这个问题暗示了对大多数操作系统结构的根本性误解。
没有单独的“内核”进程来沟通。 内核是在任何进程的上下文中运行的代码。 内核内核代码由中断,陷阱或异常调用。 在内核模式下,进程可以访问所有进程共享的内核内存。
因此,进程和内核之间不能进行进程间通信。
当内核发送一个信号(在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信号的东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。