iT邦幫忙

0

【小黑馬作業系統教室】(21) (Ch13) I/O系統

嗨嗨,大家好,我是心原一馬,
這個章節主要會介紹作業系統中六種不同做I/O的方式,
這6種方式的I/O可以兩兩分類比較。
(本文稍微比較分較簡介IO的方式,對於實作細節就沒有過多研究了)

第一類: Port-mapped I/O v.s. Memory-mapped I/O

主要區別: 要把I/O寫到哪裡

  • Port-mapped I/O: 直接寫到I/O device,時間較長。
  • Memory-mapped I/O: 寫到memory裡面,由OS或DMA幫你做I/O,並且因為只寫到memory,比Port-mapped I/O快很多,也不用等CPU。但缺點是因為寫到memory裡,資料可能會不小心被其它程式讀寫產生error。

第二類: Poll(busy-waiting) vs. Interrupt

主要區別: 等待IO的方式

  • Poll: 等待時間短,燒CPU
  • Interrupt: 等待時間長,不燒CPU

第三類: Programmed I/O vs. Direct memory access I/O(簡稱DMA)

主要區別: 由誰擔任主要做I/O的角色 ( Programmed I/O: CPU, DMA: DMA controller)

  • Programmed I/O: 透過打斷CPU來做I/O(缺點: CPU很忙,不適合一直打斷它)
  • DMA I/O: 可以不透過CPU直接讀取memory以加快速度(原先的設定是只有CPU可以讀取memory,其它device不該讀取memory)

DMA一定是跟memory-mapped I/O 和 interrupt一起用,
DMA只有做I/O頭尾需要CPU,
起頭由CPU告訴DMA controller 資料放在memory的什麼地方,
當DMA controller忙完時再發個interrupt跟CPU報告,
現代作業系統多是用Direct memory access I/O。


尚未有邦友留言

立即登入留言