1 / 7
文档名称:

异步io(aio).doc

格式:doc   大小:41KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

异步io(aio).doc

上传人:iris028 2020/3/9 文件大小:41 KB

下载得到文件列表

异步io(aio).doc

相关文档

文档介绍

文档介绍:Linux?中最常用的输入/输出(I/O)模型是同步I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待I/O请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O请求可能需要与其他进程产生交叠。可移植操作系统接口(POSIX)异步I/O(AIO)应用程序接口(API)就提供了这种功能。在本文中,我们将对这个API概要进行介绍,并来了解一下如何使用它。AIO简介Linux异步I/O是Linux内核中提供的一个相当新的增强。,。AIO背后的基本思想是允许进程发起很多I/O操作,而不用阻塞或等待任何操作完成。稍后或在接收到I/O操作完成的通知时,进程就可以检索I/O操作的结果。Linux上的AIO简介本节将探索Linux的异步I/O模型,从而帮助我们理解如何在应用程序中使用这种技术。在传统的I/O模型中,有一个使用惟一句柄标识的I/O通道。在UNIX?中,这些句柄是文件描述符(这对等同于文件、管道、套接字等等)。在阻塞I/O中,我们发起了一次传输操作,当传输操作完成或发生错误时,系统调用就会返回。,。   在异步非阻塞I/O中,我们可以同时发起多个传输操作。这需要每个传输操作都有惟一的上下文,这样我们才能在它们完成时区分到底是哪个传输操作完成了。在AIO中,这是一个aiocb(AIOI/OControlBlock)结构。这个结构包含了有关传输的所有信息,包括为数据准备的用户缓冲区。在产生I/O(称为完成)通知时,aiocb结构就被用来惟一标识所完成的I/O操作。这个API的展示显示了如何使用它。AIOAPIAIO接口的API非常简单,但是它为数据传输提供了必需的功能,并给出了两个不同的通知模型。表1给出了AIO的接口函数,本节稍后会更详细进行介绍。,直到一个或多个异步请求已经完成(或失败)aio_cancel取消异步I/O请求lio_listio发起一系列I/O操作  每个API函数都使用aiocb结构开始或检查。这个结构有很多元素,但是清单1仅仅给出了需要(或可以)使用的元素。{intaio_fildes;//FileDescriptorintaio_lio_opcode;//Validonlyforlio_listio(r/w/nop)volatilevoid*aio_buf;//DataBuffersize_taio_nbytes;//NumberofBytesinDataBufferstructsigeventaio_sigevent;//NotificationStructure/*Internalfields*/...}; sigevent结构告诉AIO在I/O操作完成时应该执行什么操作。我们将在AIO的展示中对这个结构