IO過程當中,會涉及到用戶進程和系統內核兩個概念,分兩步完成IO。
首先,等待數據準備。
而後,將數據從系統內核copy到用戶進程。異步
kernal準備數據並返回數據的整個過程當中,process不能作別的事,這就是所謂的阻塞
process
要求 kernal
返回數據kernal
還沒準備好,通知 process
沒準備好你去幹點別的吧process
又問 kernal
kernal
說還沒準備好process
去喝了口水,又問kernal
kernal
說準備好了,你來取吧process
開始讀取數據(阻塞)process
讀取數據完成process
想要kernal
返回數據process
讓fd
去作這個事process
把fd
交給select
process
問select
能夠取數據了麼select
說不行,再等等process
問select
能夠取數據了麼select
說能夠process
開始取數據process
取數據完成process
想要kernal
返回數據kernal
開始準備數據 ,process
去作別的事情了kernal
把數據準備好,並送到process
手中process
拿到數據了,開始處理數據