redis
IO模型都有哪几种(阻塞IO)?
✔ 阻塞IO ✔ 非阻塞IO ✔ IO多路复用 ❒ 阻塞I0就是两个阶段都必须阻塞等待 ☪ 阶段一: ✔ 用户进程尝试读取数据(比如网卡数据) ✔ 此时数据尚未到达,内核需要等待数据 ✔ 此时用户进程也处于阻塞状态 ☪ 阶段二: ✔ 数据到达并拷贝到内核缓冲区,代表已就绪 ✔ 将内核数据拷贝到用户缓冲区 ✔ 拷贝过程中,用户进程依然阻塞等待 ✔ 拷贝完成,用户进程解除阻塞,处理数据 ✔ 进程阻塞等待数据 可以看到,阻塞IO模型中,用户进程在两个阶段都是阻塞状态
✔ 利用阻塞等待,来判断对应的读写缓冲区是否有数据,其优点是,不需要占用CPU时间,缺点是,同一时刻只能处理一个操作,效率较低。 ✔ 进一步的,添加进程或者线程,可以同时处理多个操作。其优点就是可以连接多个客户端,实现并发操作。缺点是,线程或者进程会消耗资源,消耗CPU资源(进程调度)。