1.系統(tǒng)I/O模型
# 同步/異步:同步:進程發(fā)出請求調(diào) 用后,內(nèi)核不 提供通知機制,即 文件IO處理 完成后不 通知進程,需要進程 自 己去問內(nèi)核是否處理 完成。異步:進程發(fā)出請求調(diào) 用后,內(nèi)核會在調(diào) 用處理 完成后返回調(diào) 用結(jié)果給進程,Nginx是異步的。# 阻塞/ 非阻塞:阻塞:blocking,指IO操作需要徹底完成后才返回到 用戶空間,調(diào) 用結(jié)果返回之前,調(diào) 用者被掛起, 干不 了 別的事情。 非阻塞:nonblocking,指IO操作被調(diào) 用后 立即返回給 用戶 一個狀態(tài)值, 無需等到IO操作徹底完成,最終的調(diào) 用結(jié)果返回之前,調(diào) 用者不 會被掛起,可以去做別的事情。# IO模型組合:同步阻塞:我點完包 子后不 能去做別的事情, 而且不 知道包 子有沒有做好,需要 自 己 一直等著并 一次次的問廚師做好沒有。同步非阻塞:點完包 子后可以去做別的事情,但是不 能 長時間做別的事情,因為我還是不 知道包 子有沒有做好,也要 自 己 一直等著并 一次次的問廚師做好沒有,只能抽空做點別的。異步阻塞:我點完包 子后不 能去 走做別的事情,但是廚師在做好包 子后會告訴我,也就是我不 用再 一次次為廚師包 子有沒有做好了 。異步非阻塞:我點完包 子后可以做別的事情, 而且可以 一直在做別的去事情,因為廚師在做好包 子后會告訴我。