Linux AIO
Linux的I/O机制经历了一下几个阶段的演进:
1. 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。
2. 同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。
3. 异步事件阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是I/O操作并不阻塞。通过select/poll/epoll等函数调用来达到此目的。
4. 异步时间非阻塞I/O: 也叫做异步I/O(AIO),用户程序可以通过向内核发出I/O请求命令,不用等带I/O事件真正发生,可以继续做
另外的事情,等I/O操作完成,内核会通过函数回调或者信号机制通知用户进程。这样很大程度提高了系统吞吐量。
下面就AIO做详细介绍:
要使用aio的功能,需要include头文件aio.h,在编译连接的时候需要加入POSIX实时扩展库rt.下面就aio库的使用做介绍。
1. AIO整个过程所使用的数据存放在一个结构体中,struct aiocb,aio control block.看看头文件中的定义:
/* Asynchronous I/O control block. */
struct aiocb
{
int aio_fildes; /* File desriptor. */ 需要在哪个文件描述符上进行I/O
int aio_lio_opcode; /* Operation to be performed. */ 这个是针对批量I/O的情况有效,读写操作类型
int aio_reqprio; /* Request priority offset. */ 请求优先级(If _POSIX_PRIORITIZED_IO is defined, and this file supports it, then the
asynchronous operation is submitted at a priority equal to that of the
&n
相关文档:
2009 年 4 月 23 日
本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性,以加深读者印象。
背景
Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微 ......
解决步骤:以arm-linux-gcc-4.3.2.tgz为例
1. 把arm-linux-gcc-4.3.2.tgz拷贝到你指定的目录里,然后用tar命令解压到当前目录。成功后,会在4.3.2/bin下找到arm-linux-gcc。
例如:/opt/arm-linux-gcc-4.3.2.taz,以下命令,红色为系统提示符,黑色为用户命令
gylu@dell-desktop:~$ ......
http://www.ibm.com/developerworks/cn/linux/embed/diy/
DIY:自己动手做一个迷你 Linux 系统
文档选项
<tr valign="top"><td width="8"><img alt="" height="1" width="8" src="//www.ibm.com/i/c.gif"/></td><td width=&quo ......
1 引言
线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。
......