通过喝水清晰简单了解I/O五大模型
一般单次I/O请求会分为两个阶段,每个阶段对于I/O的处理方式是不同的
- I/O会经历一个等待资源的阶段
- 阻塞,指的是在数据不可用时,I/O请求会一直阻塞,直到数据返回
- 数据不可用时,立即返回,直到被通知资源可用为止
- 使用资源阶段
- 同步:读取或者写入数据时会阻塞,直到读取或写入完成
- 在读取或者写入数据时立即返回, 由内核完成数据拷贝,再通知应用I/O
将两阶段的四种处理方式,做一些排列组合,再做一些补充,就得到常见的五种I/O模型。
下图以展示以喝水为目的的I/O请求,第一阶段为煮水,第二阶段为倒水
- 同步阻塞
全程一直等待水开然后倒水。 - 同步非阻塞
在煮水阶段,去玩游戏,不过要经常注意水是否开了。 - I/O多路复用
同时煮多壶水,在玩游戏间隙去看看哪壶开了,加快烧水速度 - 信号驱动
总跑厨房看水好累,每个水壶加报警器,只要开了马上得到通知,再去倒水 - 异步
人总是懒的,许个愿来个AI黄金水壶,水开后自动会倒水:)


浙公网安备 33010602011771号