Nginx的io复用模型
1. I/O模型简介
- 同步/异步: 关注的是消息通信机制
- 同步: synchronous, 被调用者等待被调用者返回消息, 才能继续执行
- 异步: asynchronous, 被调用者通过状态/通知或回调机制主动通知调用者被调用者的运行状态
- 阻塞/非阻塞:关注调用者在等待结果返回之前所处的状态
- 阻塞: blocking, 指I/O操作需要彻底完成后才能返回到用户空间, 调用结果返回之前, 调用者被挂起
- 非阻塞: nonblocking, 值I/O操作被调用后立即返回给用户一个状态值, 无需等到IO操作彻底完成, 最终的调用结果返回之前, 调用者不会被挂起
- 生产中常用I/O 模型
- 阻塞型, 非阻塞型, 复用型, 信号驱动型, 异步
- 阻塞型, 非阻塞型, 复用型, 信号驱动型, 异步
2. I/O模型详解
2-1. 同步阻塞IO模型
- 同步阻塞IO模型是组件但的IO模型, 用户线程在内核进行IO操作时被阻塞
- 用户线程通过系统调用read发起IO读操作, 由用户空间转到内核空间,内核等到数据包到达后, 然后将接收到数据拷贝到用户空间, 完成read操作
- 用户需要等待read将数据读取到buffer后