什么是IO

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`

IO本质解析

什么是IO?

IO,即输入输出(Input/Output),是计算机从外部世界获取数据并将结果返回给外部世界的过程。

IO的工作流程

如下图所示,IO的工作流程可以概括为以下四个主要步骤:

  1. 应用程序(app)发起IO请求。

  2. 内核(kernel)接收并处理IO请求,与外部设备交互。

  3. 外部设备(如磁盘)执行实际的读写操作。

  4. 数据在应用程序与外部设备之间进行传输。

应用程序 ---> 内核 ---> 外部设备 ---> 内核 ---> 应用程序
   |                                             ^
   V                                             |
用户空间                                       内核空间
  • 用户空间即我们平时编写的程序所在的空间,与操作系统内核层之间有明确的界限。

  • 内核空间是操作系统的核心区域,能够直接访问硬件设备,处理复杂的任务,如IO操作。

IO操作过程中,数据需要通过这两个不同的空间传递,通常需要系统调用等方式,涉及上下文切换等成本。

类型的细分

IO根据不同的分类有不同的类型,如同步IO和异步IO,块IO和字符IO,还有直接IO和缓冲IO等。

同步IO与异步IO

  • 同步IO要求应用程序在发起IO请求后必须等待IO操作完成才能继续执行。

  • 异步IO允许应用程序在发起IO请求后立即执行后续操作,在IO完成后通过回调或者轮询的方式获取结果。

块IO与字符IO

  • 块IO指以块(一定量的数据)为单位执行的IO操作,常用于硬盘等设备。

  • 字符IO以字符为单位,常见于键盘或网络IO。

每种类型根据应用场景的不同,选择最合适的IO模型是提高程序效率和用户体验的关键。

最后更新于