CPU從磁盤讀取數據過程


傳統用戶通過cpu讀取磁盤數據過程

 

 

由於cpu要參與從磁盤讀數據到寄存器,又存入內存。這中間cpu都是阻塞狀態不能干別的工作

由此產生DMA技術

DMA技術

從磁盤搬運數據的任務都交給了DMA控制器  而cpu不再負責搬運

 

 

  • 用戶進程調用 read 方法,向操作系統發出 I/O 請求,請求讀取數據到自己的內存緩沖區中,進程進入阻塞狀態;

  • 操作系統收到請求后,進一步將 I/O 請求發送 DMA,然后讓 CPU 執行其他任務;

  • DMA 進一步將 I/O 請求發送給磁盤;

  • 磁盤收到 DMA 的 I/O 請求,把數據從磁盤讀取到磁盤控制器的緩沖區中,當磁盤控制器的緩沖區被讀滿后,向 DMA 發起中斷信號,告知自己緩沖區已滿;

  • DMA 收到磁盤的信號,將磁盤控制器緩沖區中的數據拷貝到內核緩沖區中,此時不占用 CPU,CPU 可以執行其他任務

  • 當 DMA 讀取了足夠多的數據,就會發送中斷信號給 CPU;

  • CPU 收到 DMA 的信號,知道數據已經准備好,於是將數據從內核拷貝到用戶空間,系統調用返回;

 

傳統IO與零拷貝的幾種實現

圖解計算機底層IO過程及JavaNIO

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM