上海天局信息技术有限责任公司

网站首页 > 天局论坛 > Linux

linux下user&kernel几种通信

2018-11-14 06:56:16 上海天局信息技术有限责任公司 已读

user space kernel communication methods:

方式

特点


虚拟文件系统(VFS

存在内存中的文件系统,用户可以通过读写操作访问文件系统中的文件(例如 procfssysfs等)

优点: 有多种工具来发送数据到内核,例如cat echo

缺点:需要事先在内核中创建属性文件,需要编译内 核

内核无法主动通知用户空间

详见http://www.ibm.com/developerworks/cn/linux/l-proc.html


基于socket的通信机制

常见的有UDP socket netlink socket

其中netlink socket是全双工的,用户和内核平等,

通信的双方可以主动发起请求,也可以被动接受消息


ioctl

提供了一种获取设备信息和向设备发送控制参数的手段

内核系统调用

当用户需要内核提供一些额外的系统服务和数据时,需要在内核编写相应的服务程序并重新编译内核,并且要使用glibc提供的标准的封装函数才能被调用

信号通知机制

只能内核主动发送信号到用户空间,内核需要获得用户进程的ID


共享内存机制

最有效的数据传输方式:

通过直接存取内存,无需额外拷贝开销

缺点:需要额外的机制去做notification以及解决并发性问题

upcall

内核提供了一个内核模块来启动用户程序,并可以传参给此程序



Powered by MetInfo 5.3.17 ©2008-2021 www.metinfo.cn