五種IO模型

五種IO模型

  • blocking IO
  • non-blocking IO
  • IO multiplexing
  • signal driven IO
  • asynchronous IO

IO過程當中,會涉及到用戶進程系統內核兩個概念,分兩步完成IO。
首先,等待數據準備。
而後,將數據從系統內核copy到用戶進程。異步

阻塞IO

  1. process 要求 kernal 返回數據
  2. process 等待
  3. kernal 開始準備數據
  4. kernal 準備好數據
  5. 將數據從內核空間複製到用戶空間
  6. process 處理 數據

圖片描述

kernal準備數據並返回數據的整個過程當中,process不能作別的事,這就是所謂的阻塞

非阻塞IO

  1. process 要求 kernal 返回數據
  2. kernal 還沒準備好,通知 process 沒準備好你去幹點別的吧
  3. process 又問 kernal
  4. kernal 說還沒準備好
  5. process 去喝了口水,又問kernal
  6. kernal說準備好了,你來取吧
  7. process開始讀取數據(阻塞)
  8. process 讀取數據完成

IO多路複用

  1. process想要kernal返回數據
  2. processfd去作這個事
  3. processfd交給select
  4. processselect能夠取數據了麼
  5. select說不行,再等等
  6. processselect能夠取數據了麼
  7. select說能夠
  8. process開始取數據
  9. process取數據完成

異步IO

  1. process想要kernal返回數據
  2. kernal開始準備數據 ,process去作別的事情了
  3. kernal把數據準備好,並送到process手中
  4. process拿到數據了,開始處理數據
相關文章
相關標籤/搜索