Overview
電腦主要工作有兩類 ─ I/O與運算,又以I/O佔絕大部分的時間。I/O System為OS的子系統 (Subsystem),引導控制與電腦連接的各項裝置。
系統複雜度高,因為I/O硬體裝置間差異度高,例如各裝置速度、功能都不同,故獨立於Kernel外另設Subsystem。
I/O System Hardware
- I/O Device、Bus、ControllerI/O Device
- Storage device: disk...
- Transmission device: network cards...
- Human-interface device: keyboard, mouse...
- Specialized device: touchpad...
Controller Register
- Status register: 內含裝置目前的狀態訊息。
- Control register: 儲存主機送出的指令或模式。
- Data in register: 放置等待主機讀取的資料。
- Data out register: 放置由主機輸出的資料。
- 周邊裝置透過匯流排 (Bus) 與電腦系統互相連結,Bus上傳送的訊息由協定 (Protocol) 定義,最常見為PCI Bus;另外還有擴充匯流排 (Expansion Bus) 連接較慢的裝置。
- 控制器 (Controller) 是用來控制Bus與裝置的硬體元件,內有暫存器 (Register) 放置來自CPU的指令。每個裝置都有各自的Controller,CPU與裝置之間資料的流通需經由Controller協調,主要有三種溝通的方式: Polling、Interrupt、DMA。
如何以Software來控制Hardware?
- Device Driver Module
- I/O System介於硬體與OS Kernel (應用程式、檔案系統等) 之間的軟體層。
- OS提供一個抽象層做為使用者與Hardware之間的溝通介面,即I/O System Interface。
資料存取功能的差異
- 區塊裝置 (Block device): 以區塊為傳輸單位,大量傳輸資料,ex. Disk。
- 字元裝置 (Character Device): 以字元為傳輸單位,ex. Keyboard。
- 網路裝置 (Network Device): 網路傳輸以Socket為傳輸介面。
- 時鐘 (Clock): 硬體時鐘將時間傳至系統。
Process的控制權差異
- 同步 (Synchronous)/阻隔 (Blocking): Process送出I/O request後,需等I/O作業完成後才能繼續執行。
- 非同步 (Asynchronous)/非阻隔 (Noblocking): 送出I/O request後,Process可繼續執行其它與I/O無關的動作,效率高。
緩衝 (Buffering): 一塊記憶體用來中繼暫存傳遞資料,通常用在當兩裝置間速度或傳輸量差異過大時,或是傳遞變化快速的資料 (Copy semantics)。
快取 (Caching): 複製一份經常傳遞的資料於快速記憶體中。
序列 (Spooling): 用來保留必須連續接收且有次序的資料,例如印表機工作。
Error handling
I/O protection
Other Issues:
Blocking vs Synchronous
No blocking vs Asynchronous
PCI vs PCIe vs PCI-X
Port vs Bus
Controller Register
- Status register: 內含裝置目前的狀態訊息。
- Control register: 儲存主機送出的指令或模式。
- Data in register: 放置等待主機讀取的資料。
- Data out register: 放置由主機輸出的資料。
I/O System設計考量 (硬體層面)
如何將裝置與電腦系統連接?- 周邊裝置透過匯流排 (Bus) 與電腦系統互相連結,Bus上傳送的訊息由協定 (Protocol) 定義,最常見為PCI Bus;另外還有擴充匯流排 (Expansion Bus) 連接較慢的裝置。
- 控制器 (Controller) 是用來控制Bus與裝置的硬體元件,內有暫存器 (Register) 放置來自CPU的指令。每個裝置都有各自的Controller,CPU與裝置之間資料的流通需經由Controller協調,主要有三種溝通的方式: Polling、Interrupt、DMA。
如何以Software來控制Hardware?
- Device Driver Module
I/O System Interface
階層式設計- I/O System介於硬體與OS Kernel (應用程式、檔案系統等) 之間的軟體層。
- OS提供一個抽象層做為使用者與Hardware之間的溝通介面,即I/O System Interface。
資料存取功能的差異
- 區塊裝置 (Block device): 以區塊為傳輸單位,大量傳輸資料,ex. Disk。
- 字元裝置 (Character Device): 以字元為傳輸單位,ex. Keyboard。
- 網路裝置 (Network Device): 網路傳輸以Socket為傳輸介面。
- 時鐘 (Clock): 硬體時鐘將時間傳至系統。
Process的控制權差異
- 同步 (Synchronous)/阻隔 (Blocking): Process送出I/O request後,需等I/O作業完成後才能繼續執行。
- 非同步 (Asynchronous)/非阻隔 (Noblocking): 送出I/O request後,Process可繼續執行其它與I/O無關的動作,效率高。
I/O SubSystem
排程 (Scheduling): 將等待I/O的Process安排最佳次序。緩衝 (Buffering): 一塊記憶體用來中繼暫存傳遞資料,通常用在當兩裝置間速度或傳輸量差異過大時,或是傳遞變化快速的資料 (Copy semantics)。
快取 (Caching): 複製一份經常傳遞的資料於快速記憶體中。
序列 (Spooling): 用來保留必須連續接收且有次序的資料,例如印表機工作。
Error handling
I/O protection
Other Issues:
Blocking vs Synchronous
No blocking vs Asynchronous
PCI vs PCIe vs PCI-X
Port vs Bus
沒有留言:
張貼留言