`
guzizai2007
  • 浏览: 359601 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

IO模型

    博客分类:
  • Java
 
阅读更多

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模型

    重叠IO模型是一种高效处理输入/输出(I/O)操作的机制,特别是在多任务和并发环境中。这种模型允许操作系统在进行I/O操作的同时处理其他任务,从而提高系统资源的利用率和程序的响应速度。在本文中,我们将深入探讨...

    WinSock 异步IO模型

    WinSock异步IO模型是Windows Socket编程中一种高效的数据传输方式。它允许应用程序在等待数据传输完成时执行其他任务,从而提高系统资源利用率和程序响应性。与传统的同步IO模型不同,异步IO不会阻塞调用线程,而是...

    网络编程IO模型源代码

    本主题聚焦于“网络编程IO模型源代码”,特别是使用C++语言和Windows Socket(Winsock)API的实现。 首先,让我们探讨IO模型的基本概念。IO模型主要有五种:同步阻塞IO、同步非阻塞IO、I/O多路复用、信号驱动IO和...

    IO模型编程实例

    不同的IO模型决定了程序如何等待、处理和响应数据传输。本篇文章将深入探讨四种主要的IO模型:阻塞IO、无阻塞IO、多路复用IO(也称为选择器或I/O多路复用)以及异步IO,结合源码分析来帮助理解它们的工作原理和应用...

    异步IO模型编程实例(纯C语言)

    "异步IO模型编程实例(纯C语言)" 异步IO模型是指在进行IO操作时,不会阻塞当前线程或进程,而是将IO操作交由操作系统或专门的IO处理线程处理,从而提高系统的并发性和响应速度。在Windows平台上,异步IO模型主要...

    ws Socket五种IO模型代码

    WS Socket五种IO模型代码 作为一名IT行业大师,我将根据提供的文件信息,生成相关知识点,以下是详细的解释: WS Socket五种IO模型 在Windows平台上构建服务器应用时,I/O模型是必不可少的考虑因素。Windows操作...

    IO模型与性能分析

    ### IO模型与性能分析 #### 一、基本概念与背景 在探讨IO模型与性能分析之前,我们需要了解一些基础概念: - **时钟周期**:指的是一个时钟脉冲所持续的时间,它是衡量处理器速度的基本单位之一。 - **总线周期**...

    IO模型-完成端口(tcp)

    【标题】:“IO模型-完成端口(tcp)” 在计算机编程中,IO模型是处理输入/输出操作的关键机制。完成端口(IO Completion Port, IOCP)是一种高级的IO模型,尤其适用于多线程服务器应用,如TCP服务器,它能够高效地...

    Linux下IO模型及epoll介绍

    Linux IO模型 epoll 多进程模型 Socket

    Windows Socket 五大IO 模型详解

    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 Socket五种IO模型

    Windows 操作系统提供了五种 IO 模型,分别是选择模型(Select)、异步选择模型(WSAAsyncSelect)、事件选择模型(WSAEventSelect)、重叠 IO 模型(Overlapped I/O)和完成端口模型(Completion Port)。...

    IO模型介绍

    ### IO模型介绍 #### 一、IO概述 **IO**,即输入(Input)与输出(Output),是计算机系统中数据交互的基础。数据通过IO类库在内部表示与外部表示之间进行转换,这一过程涉及多种步骤和技术。 #### 二、内部表示与...

    Winsockt_IO模型

    Winsockt_IO模型是Windows操作系统中用于网络编程的重要组件,它提供了一套接口,使得开发者可以利用TCP/IP协议栈进行网络通信。这个模型是基于Windows Socket API(通常简称为Winsock)的,允许应用程序进行高效的...

    linux io 模型

    linux io模型,区分阻塞非阻塞同步异步的概念,从底层理解io。

    IO模型介绍,理解java常见的IO模型

    ### IO模型介绍与Java常见IO模型详解 #### 一、引言 在计算机科学领域,输入输出(Input/Output,简称IO)模型是系统中处理数据传输的关键技术之一。随着互联网的发展,网络通信的需求日益增长,传统的IO模型已经...

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

    - **BIO(Blocking IO)**:这是Java早期提供的IO模型,特点是简单易用,但效率较低,适用于连接数量较少且对响应时间要求不高的场景。 - **NIO(Non-blocking IO)**:NIO提供了非阻塞的能力,通过选择器可以同时...

    IO模型中的阻塞模型和非阻塞模型

    ### IO模型中的阻塞模型和非阻塞模型 在计算机科学领域中,输入/输出(Input/Output,简称IO)模型对于操作系统与应用程序之间的交互至关重要。根据数据读写操作是否可以立即返回,IO模型通常被划分为阻塞式...

    五种常见的IO模型.pdf

    "五种常见的IO模型" IO 模型是计算机科学中一个基本概念,它描述了计算机系统中输入/输出(IO)操作的处理方式。不同的 IO 模型具有不同的特点和应用场景,了解这些模型对开发高效、可靠的计算机系统非常重要。 一...

    linux 5中 IO模型.pptx

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

    windows socket 五种IO模型-代码全攻略

    在Windows Socket编程中,了解和掌握不同的I/O(Input/Output)模型是非常关键的,因为它们直接影响到网络通信的效率和程序的响应性。本文将深入探讨五种常见的Windows Socket I/O模型,并提供相应的代码示例,帮助...

Global site tag (gtag.js) - Google Analytics