傳統用戶通過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 的信號,知道數據已經准備好,於是將數據從內核拷貝到用戶空間,系統調用返回;