應(yīng)用進程使用 sigaction 系統(tǒng)調(diào)用,內(nèi)核立即返回,應(yīng)用進程可以繼續(xù)執(zhí)行,也就是說等待數(shù)據(jù)階段應(yīng)用進程是非阻塞的。內(nèi)核在數(shù)據(jù)到達時向應(yīng)用進程發(fā)送 SIGIO 信號,應(yīng)用進程收到之后在信號處理程序中調(diào)用 recvfrom 將數(shù)據(jù)從內(nèi)核復(fù)制到應(yīng)用進程中。
相比于非阻塞式 I/O 的輪詢方式,信號驅(qū)動 I/O 的 CPU 利用率更高。
舉例理解
你早上去買現(xiàn)炸油條,門口排隊的人多,現(xiàn)在引入了一個叫號系統(tǒng),點完單后你就可以做自己的事情了,然后等叫號就去拿就可以了。(所以不用再去自己頻繁跑去問有沒有做好了)
Linux 中IO圖例