1.系统I/O模型
# 同步/异步:同步:进程发出请求调 用后,内核不 提供通知机制,即 文件IO处理 完成后不 通知进程,需要进程 自 己去问内核是否处理 完成。异步:进程发出请求调 用后,内核会在调 用处理 完成后返回调 用结果给进程,Nginx是异步的。# 阻塞/ 非阻塞:阻塞:blocking,指IO操作需要彻底完成后才返回到 用户空间,调 用结果返回之前,调 用者被挂起, 干不 了 别的事情。 非阻塞:nonblocking,指IO操作被调 用后 立即返回给 用户 一个状态值, 无需等到IO操作彻底完成,最终的调 用结果返回之前,调 用者不 会被挂起,可以去做别的事情。# IO模型组合:同步阻塞:我点完包 子后不 能去做别的事情, 而且不 知道包 子有没有做好,需要 自 己 一直等着并 一次次的问厨师做好没有。同步非阻塞:点完包 子后可以去做别的事情,但是不 能 长时间做别的事情,因为我还是不 知道包 子有没有做好,也要 自 己 一直等着并 一次次的问厨师做好没有,只能抽空做点别的。异步阻塞:我点完包 子后不 能去 走做别的事情,但是厨师在做好包 子后会告诉我,也就是我不 用再 一次次为厨师包 子有没有做好了 。异步非阻塞:我点完包 子后可以做别的事情, 而且可以 一直在做别的去事情,因为厨师在做好包 子后会告诉我。