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