如题,传统内核协议栈为什么不使用零拷贝,也就是内存映射来提升性能?
内核TCP/IP协议在中断处理阶段将网卡中数据拷贝到内核缓冲区,协议处理完后再将其拷贝到用户态,第一次拷贝很快,第二次拷贝很慢,大约占了整个处理流程的一半时间以上;
现在的零拷贝技术不再进行内核到用户的拷贝,而是直接进行一次内存映射,以此来提升网络性能。
那么,我想问的是:内核协议栈是否可以使用零拷贝技术?若不能,主要原因是什么?
在此,我的一个想法是:是不是因为用户处理的是纯data,即不包括协议头,如果映射,用户无法识别数据区。但是不是很确定,请各位大神指点。