IO请求的两个阶段:
等待资源阶段:IO请求一般需要请求特殊的资源(如磁盘、RAM、文件),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源。
使用资源阶段:真正进行数据接收和发生。
举例说就是排队和服务。
在等待数据阶段,IO分为阻塞IO和非阻塞IO。
阻塞IO:资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。
非阻塞IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用
在使用资源阶段,IO分为同步IO和异步IO。
同步IO:应用阻塞在发送或接收数据的状态,直到数据成功传输或返回失败。
异步IO:应用发送或接收数据后立刻返回,数据写入OS缓存,由OS完成数据发送或接收,并返回成功或失败的信息给应用。
按照Unix的5个IO模型划分
- 阻塞IO
- 非阻塞IO
- IO复用
- 信号驱动的IO
- 异步IO
从性能上看,异步IO的性能无疑是最好的。
各种IO的特点
- 阻塞IO:使用简单,但随之而来的问题就是会形成阻塞,需要独立线程配合,而这些线程在大多数时候都是没有进行运算的。Java的BIO使用这种方式,问题带来的问题很明显,一个Socket需要一个独立的线程,因此,会造成线程膨胀。
- 非阻塞IO:采用轮询方式,不会形成线程的阻塞。Java的NIO使用这种方式,对比BIO的优势很明显,可以使用一个线程进行所有Socket的监听(select)。大大减少了线程数。
- 同步IO:同步IO保证一个IO操作结束之后才会返回,因此同步IO效率会低一些,但是对应用来说,编程方式会简单。Java的BIO和NIO都是使用这种方式进行数据处理。
- 异步IO:由于异步IO请求只是写入了缓存,从缓存到硬盘是否成功不可知,因此异步IO相当于把一个IO拆成了两部分,一是发起请求,二是获取处理结果。因此,对应用来说增加了复杂性。但是异步IO的性能是所有很好的,而且异步的思想贯穿了IT系统放放面面。
转自:http://pengjiaheng.iteye.com/blog/847615
相关推荐
重叠IO模型是一种高效处理输入/输出(I/O)操作的机制,特别是在多任务和并发环境中。这种模型允许操作系统在进行I/O操作的同时处理其他任务,从而提高系统资源的利用率和程序的响应速度。在本文中,我们将深入探讨...
WinSock异步IO模型是Windows Socket编程中一种高效的数据传输方式。它允许应用程序在等待数据传输完成时执行其他任务,从而提高系统资源利用率和程序响应性。与传统的同步IO模型不同,异步IO不会阻塞调用线程,而是...
本主题聚焦于“网络编程IO模型源代码”,特别是使用C++语言和Windows Socket(Winsock)API的实现。 首先,让我们探讨IO模型的基本概念。IO模型主要有五种:同步阻塞IO、同步非阻塞IO、I/O多路复用、信号驱动IO和...
不同的IO模型决定了程序如何等待、处理和响应数据传输。本篇文章将深入探讨四种主要的IO模型:阻塞IO、无阻塞IO、多路复用IO(也称为选择器或I/O多路复用)以及异步IO,结合源码分析来帮助理解它们的工作原理和应用...
"异步IO模型编程实例(纯C语言)" 异步IO模型是指在进行IO操作时,不会阻塞当前线程或进程,而是将IO操作交由操作系统或专门的IO处理线程处理,从而提高系统的并发性和响应速度。在Windows平台上,异步IO模型主要...
WS Socket五种IO模型代码 作为一名IT行业大师,我将根据提供的文件信息,生成相关知识点,以下是详细的解释: WS Socket五种IO模型 在Windows平台上构建服务器应用时,I/O模型是必不可少的考虑因素。Windows操作...
### IO模型与性能分析 #### 一、基本概念与背景 在探讨IO模型与性能分析之前,我们需要了解一些基础概念: - **时钟周期**:指的是一个时钟脉冲所持续的时间,它是衡量处理器速度的基本单位之一。 - **总线周期**...
【标题】:“IO模型-完成端口(tcp)” 在计算机编程中,IO模型是处理输入/输出操作的关键机制。完成端口(IO Completion Port, IOCP)是一种高级的IO模型,尤其适用于多线程服务器应用,如TCP服务器,它能够高效地...
Linux IO模型 epoll 多进程模型 Socket
Windows socket 编程的模式详解以及基于模式的IO模型详解。这些模型包括s e l e c t(选择)、W S A A s y n c S e l e c t(异步选择)、W S A E v e n t S e l e c t(事件选择)、Overlapped I/O(重叠式I / O)...
Windows 操作系统提供了五种 IO 模型,分别是选择模型(Select)、异步选择模型(WSAAsyncSelect)、事件选择模型(WSAEventSelect)、重叠 IO 模型(Overlapped I/O)和完成端口模型(Completion Port)。...
### IO模型介绍 #### 一、IO概述 **IO**,即输入(Input)与输出(Output),是计算机系统中数据交互的基础。数据通过IO类库在内部表示与外部表示之间进行转换,这一过程涉及多种步骤和技术。 #### 二、内部表示与...
Winsockt_IO模型是Windows操作系统中用于网络编程的重要组件,它提供了一套接口,使得开发者可以利用TCP/IP协议栈进行网络通信。这个模型是基于Windows Socket API(通常简称为Winsock)的,允许应用程序进行高效的...
linux io模型,区分阻塞非阻塞同步异步的概念,从底层理解io。
### IO模型介绍与Java常见IO模型详解 #### 一、引言 在计算机科学领域,输入输出(Input/Output,简称IO)模型是系统中处理数据传输的关键技术之一。随着互联网的发展,网络通信的需求日益增长,传统的IO模型已经...
- **BIO(Blocking IO)**:这是Java早期提供的IO模型,特点是简单易用,但效率较低,适用于连接数量较少且对响应时间要求不高的场景。 - **NIO(Non-blocking IO)**:NIO提供了非阻塞的能力,通过选择器可以同时...
### IO模型中的阻塞模型和非阻塞模型 在计算机科学领域中,输入/输出(Input/Output,简称IO)模型对于操作系统与应用程序之间的交互至关重要。根据数据读写操作是否可以立即返回,IO模型通常被划分为阻塞式...
"五种常见的IO模型" IO 模型是计算机科学中一个基本概念,它描述了计算机系统中输入/输出(IO)操作的处理方式。不同的 IO 模型具有不同的特点和应用场景,了解这些模型对开发高效、可靠的计算机系统非常重要。 一...
在Linux操作系统中,有五种主要的IO模型,分别是阻塞IO、非阻塞IO、IO多路复用、信号驱动IO和异步IO。这些模型决定了应用程序如何与硬件进行交互,以获取和处理输入/输出数据。以下是对这五种模型的详细解释: 1. ...
在Windows Socket编程中,了解和掌握不同的I/O(Input/Output)模型是非常关键的,因为它们直接影响到网络通信的效率和程序的响应性。本文将深入探讨五种常见的Windows Socket I/O模型,并提供相应的代码示例,帮助...