概述
1 引言
Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T
Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V
IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix
IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)及命名管道(Named
Pipe),信号(Signal),消息队列(Message queue),共享内存(Shared
Memory),信号量(Semaphore),套接字(Socket)。通过这些IPC机制,用户空间进程之间可以完成互相通信。为了完成内核空间与用户空间通信,Linux提供了基于socket的Netlink通信机制,可以实现内核与用户空间数据的及时交换。
本文第2节概述相关研究工作,第3节与其他IPC机制对比,详细介绍Netlink机制及其关键技术,第4节使用KGDB+GDB组合调试,通过一个示例程序演示Netlink通信过程。第5节做总结并指出Netlink通信机制的不足之处。
2 相关研究
到目前Linux提供了9种机制完成内核与用户空间的数据交换,分别是内核启动参数、模块参数与
sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,其中模块参数与sysfs、procfs、debugfs、relayfs是基于文件系统的通信机制,用于内核空间向用户控件输出信息;sysctl、系统调用是由用户空间发起的通信机制。由此可见,以上均为单工通信机制,在
最后
以上就是故意花瓣为你收集整理的linux内核态socket,Netlink—基于socket的Linux内核—用户空间通信机制(1)的全部内容,希望文章能够帮你解决linux内核态socket,Netlink—基于socket的Linux内核—用户空间通信机制(1)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复