首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内核和进程是如何通信的?

内核和进程是如何通信的?
EN

Unix & Linux用户
提问于 2019-03-26 10:50:57
回答 1查看 2.2K关注 0票数 2

在Linux中,进程间通信有多种方式,例如共享内存、(命名)管道、套接字、消息队列。

Linux内核和进程通信的等效或类似方式是什么?下面是一些方法吗?

进程间通信可以在进程之间传输任意数据,而可以在内核和进程之间传输的数据形式更有限(根据我列出的方式),这是否正确?

谢谢。

EN

回答 1

Unix & Linux用户

发布于 2019-03-26 12:45:50

进程间通信在某种程度上是用户空间和内核之间通信的特殊情况,因为进程间通信总是由内核(至少是用于安装和拆卸)进行的。

注意,当进程调用内核时,进程仍在运行,但处于内核模式。因此,区分进程和内核,虽然方便,但有些不准确,可能导致误解。列出的事件确实会导致数据从用户空间传递到内核,并在内核模式下执行处理;其他示例包括

  • ioctl (它实际上是一个系统调用,但非常通用,因此单独考虑它是有用的);
  • 内存映射文件(内存映射也是实现进程间共享内存的一种方式);
  • netlink套接字

可以在用户空间和内核之间传输的数据的性质本质上没有任何限制;例如,write允许您将任何东西写入文件,而send允许您将任何东西写入套接字。数据是否有意义取决于您正在做什么;请参见您自己的必须存在应用层协议,以便在使用套接字的任何两个程序之间进行通信?问题(它适用于任何形式的通信)。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/508704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档