日期:2014-05-16  浏览次数:20670 次

为什么IO函数要把内容从内核缓冲区拷贝到用户缓冲区? 有点浪费
例如,一个socket用recv接受数据,socket接受到了先放到内核缓冲区,
然后recv再拷贝到用户缓冲区里面。

两次拷贝感觉是对内存/cpu时间的浪费,而且切换运行级别也是要耗费时间的啊。

这样做的必要性在哪里? 好处在哪里? 我看不出来。


------解决方案--------------------
人家内核是很忙的,人家的资源怎么能让你一个小用户随便占用,所以先临时放在人家那里一会儿,差不多了就赶快拿走,别在人家那里占地方....

大概是这个意思
------解决方案--------------------
socket的底层实现是在内核中
这个运行级别切换是必须的吧