zoukankan      html  css  js  c++  java
  • 浅谈I/O

    按照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系统放放面面。

    物理IO和逻辑IO

    逻辑IO是操作系统发起的IO,这个数据可能会放在磁盘上,也可能会放在内存(文件系统的Cache)里。

    物理IO是设备驱动发起的IO,这个数据最终会落在磁盘上。

    逻辑IO和物理IO不是一一对应的。提升性能就是尽可能的减少逻辑I/O的次数。

  • 相关阅读:
    qq
    qqq
    q
    .json文件
    q
    q
    q
    找jar包的网址
    1qq
    day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)
  • 原文地址:https://www.cnblogs.com/pzyin/p/14700553.html
Copyright © 2011-2022 走看看