`
huangyongxing310
  • 浏览: 491943 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

IO - 同步,异步,阻塞,非阻塞,AIO

阅读更多
IO - 同步,异步,阻塞,非阻塞

阻塞与非阻塞(进程有没有挂起)
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.(就是进程有没有被挂起)

阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。


同步与异步(调用有没有等待返回结果)
同步和异步关注的是消息通信机制(调用得到的是不是结果(想要的内容),而不是设置状态和操作状态的返回)

所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。
换句话说,就是由*调用者*主动等待这个*调用*的结果。

而异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,
调用者不会立刻得到结果。而是在*调用*发出后,*被调用者*通过状态、通知来通知调用者,或通过回调函数处理这个调用。


阻塞I/O模型(同步阻塞)



blocking IO的特点就是在IO执行的两个阶段都被block了


非阻塞IO模型(同步非阻塞)



IO执行的第二个阶段被block了


IO复用模型(同步阻塞(但可以同时处理多个IO))



两个阶段都被block了


信号驱动IO(异步)



第二个阶段被block了


异步IO模型(异步非阻塞)



二个阶段没有被block,但占用内存空间较多(因为要准备好数据空间用于内核将数据复制到用户空间)


5个I/O模型的比较





AIO(异步非阻塞IO):
就是在进行IO调用时要准备好数据存放的空间,调用时告诉内核这个空间的地址,当有数据到达时,内核在这个
空间中得到数据或写数据到这个空间,内核读/写好后就发送通知或回调使进程知道这个事。



参考原文件:http://www.cnblogs.com/renxs/p/3683189.html
  • 大小: 39.6 KB
  • 大小: 62.3 KB
  • 大小: 59.4 KB
  • 大小: 55 KB
  • 大小: 47.8 KB
  • 大小: 72.1 KB
分享到:
评论

相关推荐

    网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

    这里我们将深入探讨同步IO、异步IO、阻塞IO和非阻塞IO的概念,理解它们的工作原理以及在实际应用中的差异。 1. 同步IO与异步IO: - **同步IO**:在同步模式下,应用程序执行I/O操作时会等待操作完成。这意味着程序...

    linux异步IO aio

    ### Linux异步IO aio #### 引言 随着网络技术的发展和CPU性能的提升,传统的网络编程接口(如Unix套接字API)已逐渐无法满足高效处理大量数据的需求。当前的操作系统在网络接口方面存在局限性,尤其是在数据传输...

    scalable-io-in-java-中文.pdf

    在Java中,I/O处理经历了从传统的BIO(阻塞I/O),到NIO(非阻塞I/O),再到AIO(异步I/O)的演变过程。本书所关注的主要是NIO,因为它是Java中实现可扩展网络服务的关键。 ### 关键知识点 1. **可扩展网络服务**...

    异步输入/输出aio.doc

    根据《Unix 网络编程》的分类,I/O模型可以分为五类:阻塞IO、非阻塞IO、IO复用(如select、poll、epoll)、信号驱动IO和异步IO。然而,POSIX标准将它们简化为两类:同步IO和异步IO。区分这两者的关键在于,同步I/O...

    linux异步IO.pdf

    3. **异步阻塞I/O**:结合了非阻塞I/O和阻塞通知机制,如select/poll/epoll,用于检测I/O描述符的状态变化。虽然提供了多描述符通知的便利,但在高性能场景下效率不足。 4. **异步非阻塞I/O(AIO)**:真正实现了I/O...

    BIO,NIO,AIO,Netty面试题.pdf

    - **定义**:AIO是一种异步非阻塞的IO模型,客户端的I/O请求由操作系统先完成,然后通知服务器应用启动线程进行处理。 - **适用场景**:适合连接数较多且连接时间较长的应用,如相册服务器。 - **特点**: - 充分...

    04-IO控制.zip

    1. **IO模型**:IO模型主要有五种,包括同步阻塞IO、同步非阻塞IO、IO多路复用、信号驱动IO和异步IO。同步阻塞IO是最传统的模型,当进程发起IO请求后,会一直等待数据准备好;同步非阻塞IO则允许进程在等待数据时...

    io-study.7z

    本学习资料"io-study.7z"聚焦于三种主要的I/O模型:BIO(Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O),通过源码实例来帮助开发者深入理解它们的特点和适用场景。 1. **BIO(阻塞I/O)**: ...

    01-VIP-BIO,NIO,AIO精讲1

    首先,我们来看BIO,即同步阻塞IO模型。在BIO中,每个客户端连接都会分配一个单独的线程进行处理,这意味着如果有很多连接,服务器会创建大量线程,可能导致资源过度消耗。例如,服务端代码中的`ServerSocket.accept...

    使用异步IO应用程序接口API

    3. **异步阻塞 I/O**:结合非阻塞 I/O 和阻塞 I/O 的特点,通过 select 或 poll 等系统调用来监听多个描述符,当有数据准备好时得到通知。然而,select 和 poll 效率较低,不适合高并发场景。 4. **异步非阻塞 I/O...

    Java IO应届生培训讲义

    3. 同步/异步阻塞/非阻塞 同步和异步是针对消息通知机制而言的。同步操作是指执行操作后需要等待结果通知,而异步操作则是提交后即可继续其他任务,由系统在适当的时候发送通知。阻塞和非阻塞则是针对程序(线程)...

    03-04-01-Java IO演进之路1

    AIO,又称NIO.2,进一步提升了IO性能,提供了异步非阻塞的IO操作,使得应用程序可以注册感兴趣的IO事件,然后继续执行其他任务,当事件发生时,操作系统会通知应用程序。 6. 应用场景 - BIO适合简单、低并发的...

    javaIO模型1

    这里有五种主要的IO模型,它们分别是阻塞IO(BIO)、非阻塞IO、IO多路复用、信号量和异步IO(AIO)。理解这些模型的关键在于区分同步与异步以及阻塞与非阻塞的概念。 同步与异步主要关乎应用程序与内核交互时的等待...

    2024年Java常见的-BIO,NIO,AIO,Netty面试题

    2. **同步与异步、阻塞与非阻塞**: - **同步与异步**: - **同步**:任务执行期间,程序需要等待任务完成才能继续执行后续操作。例如打电话时必须等到通话结束才能进行下一个动作。 - **异步**:任务执行期间,...

    linux 5中 IO模型.pptx

    在Linux操作系统中,有五种主要的IO模型,分别是阻塞IO、非阻塞IO、IO多路复用、信号驱动IO和异步IO。这些模型决定了应用程序如何与硬件进行交互,以获取和处理输入/输出数据。以下是对这五种模型的详细解释: 1. ...

    使用异步AIO大大提高应用程序的性能.docx

    3. **异步阻塞I/O**:通过使用select、poll或epoll等系统调用,应用程序可以非阻塞地检查多个文件描述符的就绪状态。当某个描述符准备就绪时,再进行I/O操作。然而,select调用的效率较低,不适合高吞吐量的场景。 ...

    已待解决user 的IO问题

    - 同步与异步:同步IO操作会阻塞执行,直到操作完成;异步IO则允许程序在等待IO完成期间继续执行其他任务。 - 阻塞与非阻塞:阻塞IO在等待数据准备好时会挂起进程;非阻塞IO则不会挂起,会立即返回状态。 2. **...

    第11讲 Java提供了哪些IO方式? NIO如何实现多路复用?1

    - 网络API如`Socket`和`ServerSocket`也属于同步阻塞IO,因为它们的通信也是IO行为。 2. **非阻塞IO(NIO)**: - 在Java 1.4引入,包含在`java.nio`包中,引入了Channel、Selector和Buffer等新概念。 - 可以...

    cpp-C14高性能非阻塞网络IO基于epollboostcontext

    2. **异步I/O**:除了使用epoll进行同步非阻塞I/O,还可以考虑结合异步I/O(如AIO)进一步提高性能。 3. **连接复用**:使用TCP连接池可以减少建立和关闭连接的开销,同时提高连接的复用率。 4. **延迟接受**:避免...

    ioapi-3.2-master.tar.gz

    - 同步I/O与异步I/O:同步I/O操作会阻塞进程直到I/O操作完成,而异步I/O则允许进程在等待I/O操作完成时继续执行其他任务。 - ioapi提供了这两种模型的抽象,使得开发者可以通过统一的接口来选择合适的模型。 2. *...

Global site tag (gtag.js) - Google Analytics