当前位置: 技术问答>linux和unix
Linux 内核空间与用户空间批量数据传输问题!
来源: 互联网 发布时间:2016-02-11
本文导语: 一般大家在做user space and kernel space 批量传输时好像有一般内核API(Ioctrl) 可用。 也可以用netlink 或者其他的方式。 问一下,大家做这方面事情的时候用什么方式最有效率和安全?????????? | ...
一般大家在做user space and kernel space 批量传输时好像有一般内核API(Ioctrl) 可用。
也可以用netlink 或者其他的方式。
问一下,大家做这方面事情的时候用什么方式最有效率和安全??????????
|
你的大块的数据量,可以不用拷贝的思维吗?user space and kernel space交换数据必须是系统调用,这个
机制是提不高效率律的空间不大。你要作的事情是处理这堆数据,建议考虑把你处理的数据的代码移植到内核或到
用户空间,尽量只交换结果。为了效率如果产品前景很好多些工作量是值得的。
机制是提不高效率律的空间不大。你要作的事情是处理这堆数据,建议考虑把你处理的数据的代码移植到内核或到
用户空间,尽量只交换结果。为了效率如果产品前景很好多些工作量是值得的。
|
unsigned long copy_to_user(void __user *to,const void *from,unsigned long count);
unsigned long copy_from_user(void *to,const void __user *from,unsigned long count);
这个?
unsigned long copy_from_user(void *to,const void __user *from,unsigned long count);
这个?
|
曾经做过这方面的东西。netlink是一种可行的方式,但是内核空间和用户空间的同步工作效果比较差。
可以考虑用ioctl+mmap的方式,或者自己重新在内核中实现一个sock来支持mmap。
可以考虑用ioctl+mmap的方式,或者自己重新在内核中实现一个sock来支持mmap。
|
老兵哥说的没错, 内核用户, 必须是系统调用, 这个和效率无关.
|
unsigned long copy_to_user(void __user *to,const void *from,unsigned long count);
unsigned long copy_from_user(void *to,const void __user *from,unsigned long count);
这个时候用户态和内核态 内存之间的转换
unsigned long copy_from_user(void *to,const void __user *from,unsigned long count);
这个时候用户态和内核态 内存之间的转换
|
楼上的,不一定都是系统调用哦!哪来的必须呢?