IT鐵人
所謂的I/O裝置,就是input/output的裝置,負責輸出跟輸入資料,比如說鍵盤跟螢幕,或是網路等等的裝置,有時候我們需要通知這些裝置做事,就有幾個方法可以實行,分別是polling I/O, Interrupted I/O以及DMA,前兩者的前面六個步驟都相同,依序是下列六步:
No. | Action |
---|---|
1 | User process發出I/O request給OS |
2 | OS收到請求,可能暫停此process執行,並執行相對應的system calls。 |
3 | kernel的I/O-subsystem會pass此請求給Device driver。 |
4 | Device driver依此請求設定對應的I/O commands參數給Device Controller。 |
5 | Device Controller啟動,監督I/O-Device之I/O運作進行。 |
6 | 在此時,OS可能將CPU切給另外一個process執行。 |
後面依序介紹三種I/O處理方式,三種的差別在於I/O動作結束之後怎麼告知OS,讓自己取得I/O結果。
Polling I/O稱為詢問式I/O,CPU在執行其他Process的過程時要不斷去pollling Device Controller確認I/O動作是否完成。
通常實作的方式會使用幾個bit,負責表示I/O動作完成或是出現錯誤,CPU每次只要檢查這幾個bit就好,處理完成後再把這些bit重設。
Polling I/O因為需要花大量的時間去polling Device Controller上,花在process execution的時間就相對被壓縮,所以適合用在Device執行很快的情況,如此一來才不會有一堆需要詢問的Device占用CPU時間。
Interrupted I/O的做法是在I/O動作完成後,發出一個I/O Completed的Interrupt通知OS,CPU再花時間來尋找是哪個I/O完成並且處理之。
Interrupt的好處是不用一直花時間polling,能夠提升CPU utilization。不過要是I/O Device的處理方式很快,則會一直被interrupt,所以適合用在I/O Device有一定處理時間的裝置。
DMA I/O的全名為Direct Memory Access,他的做法是把I/O的處理交給另一個硬體,讓他直接存取記憶體以便他直接把處理好的結果放在該放的位置。
DMA I/O的好處是可以很大幅度的提高CPU utilization。缺點是需要另外設計一個硬體處理I/O,並且DMA I/O還是會跟CPU搶Memory的使用權。
其實我們可以把這個假設成工作中途煮開水:
上一篇 | 下一篇 |
---|---|
OS初體驗 | Kernel Mode |