Chinaunix
标题:
经典面试之二:netlink有什么好处?
[打印本页]
作者:
smalloc
时间:
2012-05-23 16:55
标题:
经典面试之二:netlink有什么好处?
本帖最后由 Godbach 于 2012-05-24 10:41 编辑
求赐教
作者:
embeddedlwp
时间:
2012-05-23 17:24
怎么没有面试一呢??
作者:
帅绝人寰
时间:
2012-05-23 19:40
根正苗红
作者:
Godbach
时间:
2012-05-24 10:41
回复
1#
smalloc
我的实际应用中,netlink 用的不多。
netlink 的特点,用户空间做好设置了,内核态可以主动的发送信息给用户态。除此之外,暂时想不起来还有那些场景 netlink 可以胜任,其他通信方式都不好用的情形。
但是 netlink 一次数据量受报文长度的控制。
作者:
smalloc
时间:
2012-05-24 12:04
。怎么把我的帖子分内改了。!。
当时我想,最最最要紧最重点的一句搞定吧,于是说,能在中断上下文发包并且可发广播。继续被问,还有没有别的好处,我死活想不出还有什么值得一提的好处
作者:
Godbach
时间:
2012-05-24 12:26
回复
5#
smalloc
netlink 属于内核与用户态通信,我觉得划分到通信比较合适。
作者:
Godbach
时间:
2012-05-24 12:27
回复
5#
smalloc
你可反问一下,你觉得还有那些好处呢?
smalloc 大牛还需要面试啊,人家应该直接招了。
作者:
smalloc
时间:
2012-05-25 09:39
回复
7#
Godbach
我说想不到其他好处了(本意是想说没有其他值得说的好处了)。然后被BS。于是我反问,那还有什么其他好处了,面试官轻摇头笑而不语。
我回来就纠结了。
作者:
asuka2001
时间:
2012-05-25 10:16
http://blog.csdn.net/dog250/article/details/6430801
不知道这算不算。。。
作者:
zonian
时间:
2012-08-22 10:54
smalloc 发表于 2012-05-24 12:04
。怎么把我的帖子分内改了。!。
当时我想,最最最要紧最重点的一句搞定吧,于是说,能在中断上下文发包并 ...
因为对于netlink不是太了解,但“
能在中断上下文发包
”,有点疑问。如果使用kernel里面发送uevent包的方法(kobject_uevent_env/kobject_uevent),里面均有不少睡眠的函数存在,请问,大神们一般是怎么使用这个netlink的?
作者:
daniel_kohler
时间:
2012-08-22 23:11
回复
4#
Godbach
在实际应用中,netlink非常普遍,至少网络这一块儿基本都是使用netlink实现的,
作者:
androidfried1
时间:
2012-08-23 16:44
1. duplex.
2. multicast
3. asynchronous
4. buffered IO
?
I hate such questions. Just like a teacher VS student.
作者:
linuxfellow
时间:
2012-08-24 19:36
回复
12#
androidfried1
面试和相亲很相似:乘兴而去, 败兴而归
作者:
myspace21
时间:
2012-08-25 17:29
作为内核和用户空间通信的方式之一,好像主要是网络参数的配置和查询用得比较多吧,呵呵。
作者:
hk_sean
时间:
2012-11-27 09:24
netlink相对于系统调用,ioctl以及/proc文件系统而言焗油以下优点:
1、为了使用netlink,用户仅需要在include/linux/netlink.h中添加一个新类型的netlink协议定义即可,如#define NETLINK_MYTEST 17,然后,内核和用户态应用就可以通过socket API使用该netlink协议类型进行数据交换。但系统调用需要增加新的系统调用,ioctl则需要增加设备或文件,那需要不少代码,/proc文件系统则需要在/proc下添加新的文件或目录,那将使本来就混乱的proc更加混乱。
2、netlink是一种异步通信机制,在内核用户态应用之间传递的消息保存在socket缓存中,发送消息只是把消息保存在接受者的socket的接收队列,而不需要等待接收者收到消息,但系统调用与ioctl则是同步通信机制,如果传递的数据太长,将影响调度粒度。
3、使用netlink的内核部分可以采用模块的方式实现,使用netlink的应用部分和内核部分没有编译依赖,但系统调用就有依赖,而且新的系统调用的实现必须静态地连接到内核中,它无法在模块中实现,使用新的系统调用的应用在编译时需要依赖内核。
4、netlink支持多播,ioctl和系统调用只是单播。
5、内核可以使用netlink首先发起会话,但系统调用和ioctl只能由用户发起调用。
6、netlink使用标准的socket API,因此很容易使用。
作者:
smalloc
时间:
2012-11-27 10:21
但问题是netlink老需要挂在某dev 设备上,这个恶心的问题如何解决?另外一个是数据包缓存/清除问题。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2