📚 分类
redis
🕵🏽‍♀️ 问题描述
能解释一下I/O多路复用模型吗?
👨‍🏫 问题讲解
❒ redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度,I/0多路复用模型主要就是实现了高效的网络请求。
✔ 用户空间和内核空间
✔ 常见的IO模型
  ☑ 阻塞IO(Blocking IO)
  ☑ 非阻塞IO(Nonblocking IO)
  ☑ I0多路复用(IO Multiplexing)

❒ redis网络模型

用户空间和内核空间,Linux系统中一个进程使用的内存情况划分两部分: 内核空间、用户空间
✔ 用户空间只能执行受限的命令(Ring3),而且不能直接调用系统资源必须通过内核提供的接口来访问
✔ 内核空间可以执行特权命令(Ring0),调用一切系统资源

❒ 交互样例

✔ 发送数据:用户空间(用户缓冲区)→  [等待数据就绪] 内核空间(内核缓冲区)→  硬件(硬件设备)
✔ 接收数据:用户空间(用户缓冲区)← [读取数据] 内核空间(内核缓冲区)← [准备数据]  硬件(硬件设备)

❒ Linux系统为了提高IO效率,会在用户空间和内核空间都加入缓冲区

✔ 写数据时,要把用户缓冲数据拷贝到内核缓冲区,然后写入设备
✔ 读数据时,要从设备读取数据到内核缓冲区,然后拷贝到用户缓冲区
🏳️‍🌈 问题总结
❒ 优化了底层用户空间和内核空间IO交互的模型

✔ 减少用户空间和内核空间获取数据等待
✔ 减少用户空间和内核空间的数据拷贝
📖 问题信息
📈 浏览次数:17 | 📅 更新时间:2025-12-04 03:44:58
📦 创建信息
🏷️ ID:20 | 📅 创建时间:2024-11-24 08:24:06