📚 分类
redis
🕵🏽‍♀️ 问题描述
IO模型都有哪几种(阻塞IO)?
👨‍🏫 问题讲解
✔ 阻塞IO
✔ 非阻塞IO
✔ IO多路复用

❒ 阻塞I0就是两个阶段都必须阻塞等待

☪ 阶段一:
✔ 用户进程尝试读取数据(比如网卡数据)
✔ 此时数据尚未到达,内核需要等待数据
✔ 此时用户进程也处于阻塞状态

☪ 阶段二:
✔ 数据到达并拷贝到内核缓冲区,代表已就绪
✔ 将内核数据拷贝到用户缓冲区
✔ 拷贝过程中,用户进程依然阻塞等待
✔ 拷贝完成,用户进程解除阻塞,处理数据
✔ 进程阻塞等待数据

可以看到,阻塞IO模型中,用户进程在两个阶段都是阻塞状态
🏳️‍🌈 问题总结
✔ 利用阻塞等待,来判断对应的读写缓冲区是否有数据,其优点是,不需要占用CPU时间,缺点是,同一时刻只能处理一个操作,效率较低。 

✔ 进一步的,添加进程或者线程,可以同时处理多个操作。其优点就是可以连接多个客户端,实现并发操作。缺点是,线程或者进程会消耗资源,消耗CPU资源(进程调度)。
📖 问题信息
📈 浏览次数:13 | 📅 更新时间:2025-12-04 01:48:10
📦 创建信息
🏷️ ID:21 | 📅 创建时间:2024-11-24 08:23:20