有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`

IO本质解析
什么是IO?
IO,即输入输出(Input/Output),是计算机从外部世界获取数据并将结果返回给外部世界的过程。
IO的工作流程
如下图所示,IO的工作流程可以概括为以下四个主要步骤:
- 应用程序(app)发起IO请求。
- 内核(kernel)接收并处理IO请求,与外部设备交互。
- 外部设备(如磁盘)执行实际的读写操作。
- 数据在应用程序与外部设备之间进行传输。
应用程序 ---> 内核 ---> 外部设备 ---> 内核 ---> 应用程序
| ^
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模型是提高程序效率和用户体验的关键。
本文是原创文章,采用 CC BY-NC-SA 4.0 协议,完整转载请注明来自 小朱
评论
隐私政策
0/500
滚动到此处加载评论...


