JAVA-NIO学习之I/O选择与控制方式

前言

迎着最近闲暇时间,看了一些关于java nio方面的博客和书籍资料,现在做一些系列总结。

首先在了解NIO之前,先温故下I/O选择方式,因为只有了解这些,才明白出现通道和缓冲区的原因

I/O选择方式

1. 程序I/O方式

特点

CPU要不断地测试I/O设备的状态,没有中断机构,使I/O设备无法向CPU报告它已经完成了一个字符的输入操作。

问题

CPU的高速性能和I/O的低速性能,使CPU绝大部分时间都在等待I/O设备返回消息,这样就造成了CPU的极大浪费。

2. 中断驱动程序I/O方式
特点
  • I/O设备在进行传输时无需
  • 仅当传输一个数据时,CPU才花费极短的时间去做些中断处理
  • CPU和I/O设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量
问题

由于中断驱动程序的传输单元为一个数据,传输完毕之后依旧需要CPU进行中断处理,依旧花费很多时间,所以引入了DMA传输方式

3. 直接存储器访问(DMA)I/O控制方式

特点
  • 数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块
  • 数据传送是从设备直接送入内存的,或者相反
  • 仅仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成。

附上各个流程图片:

222.png

由于DMA传输方式采用一个或多个数据块的开始和结束,才需CPU干预,整块数据的传送是在控制器的控制下完成,有效解决了中断驱动程序I/O方式的每个数据传输,都需要CPU进行中断处理的机制。

I/O通道控制方式

I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。

接下来总结下I/O方式缓冲区的概念及其要点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 设备管理的主要任务之一是控制设备和内存或处理机之间的数据传送,外围设备和内存之间的输入/输出控制方式有四种,下面分...
    saviochen阅读 2,481评论 0 5
  • A:剔槽 1.在木块的尾端钉两个钉子,可以用来顶住银片。把钉有钉子的木块用桌钳紧紧夹在工作台上。 2.用记号笔在银...
    D3舍阅读 1,261评论 1 5
  • 年华清浅,淙淙流淌 你我的往事点滴宛如星辰闪光 在生活的夜幕中安恬入睡 偶尔不自知地眨两下眼睛 既不会黯淡 也不...
    久晞未露阅读 414评论 0 2

友情链接更多精彩内容