分散/聚集 I/O是一种可以在单次系统调用中对多个缓冲区输入输出的方法,可以把多个缓冲区的数据写到单个数据流,也可以把单个数据流读到多个缓冲区中.其命名的原因在于数据会被分散到指定缓冲区向量,或者从指定缓冲区向量中聚集数据.这种输入输出方法也称为向量 I/O(vector I/O).与之不同,标准读写系统调用(read,write)可以称为线性I/O(linear I/O). 与线性 I/O 相比,分散/聚集 I/O 有如下几个优势: 编码模式更自然 如果数据本身是分段的(比如预定义的结构体的变…
I/O向量(struct iovec) readv(2)与writev(2)函数都使用一个I/O向量的概念.这是由所包含的文件定义的: #include <sys/uio.h> 头文件定义了struct iovc,其定义如下: struct iovec { ptr_t iov_base; /* Starting address */ size_t iov_len; /* Length in bytes */ }; struct iovec定义了一个向量元素.通常,这个结构用作一个多元素的数组.…
http://blog.163.com/lichuan0502@126/blog/static/9933534820111033228285/…
矢量IO=Scatter/Gather:   在多个缓冲区上实现一个简单的IO操作.减少或避免了缓冲区拷贝和系统调用(IO)   write:Gather 数据从几个缓冲区顺序抽取并沿着通道发送,就好比全部缓冲区全部连接起来放入一个大的缓冲区进行发送,缓冲区本身不具备gather能力. read:Scatter 从通道读取的数据会按顺序散布到多个缓冲区,直到缓冲区被填满或者通道数据读完.   Gather: Scatter: 示例代码: /** * channel Gather/Scatter…
转自:http://blog.csdn.net/shanshanpt/article/details/21024465 在2.6.24之后这个结构体有了较大的变化,此处先说一说2.6.16版本的sk_buff,以及解释一些问题. 一. 先直观的看一下这个结构体~~~~~~~~~~~~~~~~~~~~~~在下面解释每个字段的意义~~~~~~~~~~~ struct sk_buff { /* These two members must be first. */ struct sk_buff    …
原文链接:http://zhina123.blog.163.com/blog/static/417895782012106036289/ 引用自身的结构体,一个结构体中有一个或多个成员的基类型就是本结构体类型时,说明这个结构体可以引用自己,所以称作引用自身的结构体. 例如下面的结构体: struct link{ char ch; struct link *p} a; p是一个可以指向struct link类型变量的指针成员,这样,a.p=&a就是合法的表达式.那么,这有什么意义呢? 这样的意义就…
什么是Scatter/Gather scatter/gather指的在多个缓冲区上实现一个简单的I/O操作,比如从通道中读取数据到多个缓冲区,或从多个缓冲区中写入数据到通道: scatter(分散):指的是从通道中读取数据分散到多个缓冲区Buffer的过程,该过程会将每个缓存区填满,直至通道中无数据或缓冲区没有空间: gather(聚集):指的是将多个缓冲区Buffer聚集起来写入到通道的过程,该过程类似于将多个缓冲区的内容连接起来写入通道: scatter/gather接口 如下是Scatte…
一.分散/聚集 Scatter/Gather scatter/gather指的在多个缓冲区上实现一个简单的I/O操作,比如从通道中读取数据到多个缓冲区,或从多个缓冲区中写入数据到通道:scatter(分散):指的是从通道中读取数据分散到多个缓冲区Buffer的过程,该过程会将每个缓存区填满,直至通道中无数据或缓冲区没有空间:gather(聚集):指的是将多个缓冲区Buffer聚集起来写入到通道的过程,该过程类似于将多个缓冲区的内容连接起来写入通道: scatter/gather接口如下是Scat…
1. Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作. 分散(scatter): 从Channel中读取是指在读操作时将读取的数据写入多个buffer中.因此,Channel将从Channel中读取的数据"分散(scatter)"到多个Buffer中. 聚集(gather): 写入Channel是指在写操作时将多个buffer的数据写入同一个Ch…
Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作.分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中.因此,Channel将从Channel中读取的数据"分散(scatter)"到多个Buffer中.聚集(gather)写入Channel是指在写操作时将多个buffer的数据写入同一个Channel,因此,…