LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1061|回复: 3

socket API 是否提供mmap函数?

[复制链接]
发表于 2005-3-23 16:25:59 | 显示全部楼层 |阅读模式
如题。
如果标准socket API 不提供,那么是否可以有别的办法。
另外,小弟想知道linux的tcp/ip的实现是不是已经在底层使用了高效率的DMA的方法,类似我们写应用程序的时候,打开一个设备文件,然后直接mmap它的驱动数据缓冲区到我们的应用程序空间。
是不是tcp/ip栈的实现也是模块化的可以随时从内核拿掉呢?
不管拿不拿掉tcp/ip协议栈,是不是应用程序只要通过直接打开网卡设备文件,然后就可以使用mmap呢?
发表于 2005-3-23 21:53:50 | 显示全部楼层
mmap和socket没有任何直接关系。mmap是用于系统的虚拟内存管理的,从来没有听说可以用于把设备映射到内存空间!
回复 支持 反对

使用道具 举报

发表于 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,要实现有实用价值的网络通信程序,你将付出非常庞大的代价。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-25 09:41:54 | 显示全部楼层
Post by doubleelec
Linux 提供了 mmap 系统调用,但和 socket 没什么关系,socket 是传输层服务提供给应用程序的接口,没有实现 mmap 的责任。

mmap 和 DMA 也没什么关系,把设备缓冲区映射到内存空间只是访问方式上的变化。

并不是所有接口都有必要利用DMA,也并不是利用了DMA一定会提高效率。

如果拿掉或者绕过TCP/IP,要实现有实用价值的网络通信程序,你将付出非常庞大的代价。

多谢了,只是想更加高效的传输mpeg4视频,所以多了很多性能上的考虑。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表