|
发表于 2005-3-24 09:45:20
|
显示全部楼层
Post by realtang
如题。
如果标准socket API 不提供,那么是否可以有别的办法。
另外,小弟想知道linux的tcp/ip的实现是不是已经在底层使用了高效率的DMA的方法,类似我们写应用程序的时候,打开一个设备文件,然后直接mmap它的驱动数据缓冲区到我们的应用程序空间。
是不是tcp/ip栈的实现也是模块化的可以随时从内核拿掉呢?
不管拿不拿掉tcp/ip协议栈,是不是应用程序只要通过直接打开网卡设备文件,然后就可以使用mmap呢?
Linux 提供了 mmap 系统调用,但和 socket 没什么关系,socket 是传输层服务提供给应用程序的接口,没有实现 mmap 的责任。
mmap 和 DMA 也没什么关系,把设备缓冲区映射到内存空间只是访问方式上的变化。
并不是所有接口都有必要利用DMA,也并不是利用了DMA一定会提高效率。
如果拿掉或者绕过TCP/IP,要实现有实用价值的网络通信程序,你将付出非常庞大的代价。 |
|