netlink
###1. netlink linxu选择将关键并且性能要求较高的代码放置在内核空间, 其它的代码, 例如GUI等, 放置在用户空间中运行, 因此, 很多时候需要kernel与userspace之间的通信 kernel与userspace之间存在着多种IPC方法, 例如系统调用, ioctl, proc文件系统以及netlink socket Netlink socket是用于内核和用户空间之间交换信息的特殊的IPC机制。它提供了一种全复用的通信链路。和TCP/IP使用的地址族AF_INET相 比,Netlink socket使用地址族AF_NETLINK,每个的netlink socket特征定义协议类型在内核头文件中include/linux/netlink.h ###2. netlink的优势 为了linux的稳定性,不建议在轻易为不常用的功能来添加系统调用,而使用ioctl和proc文件系统相对也比较复杂, 而添加一个新的netlink协议类型较简单 同socket API一样,Netlink是异步的,它提供了一个socket队列来平滑突发的信息, netlink消息将排列在接受者的netlink队列中, 然后调用接收者的处理函数 netlink socket的一大优势是支持多播, 一个进程可以将一条消息广播到一个netlink组地址。任意多的进程可以监听那个组地址。这提供了一种从内核到用户空间进行事件分发接近完美的机制 netlink socket的另一优势是双向IPC, userspace和kernel可以互向对方发送消息, 而系统调用和ioctl是单一的IPC 5. netlink socket 使用标准的sockt API, 容易使用 ###3....