2018年1月7日 星期日

輸入/輸出系統 (I/O Systems)


Overview

電腦主要工作有兩類 ─ I/O與運算,又以I/O佔絕大部分的時間。

I/O System為OS的子系統 (Subsystem),引導控制與電腦連接的各項裝置。


系統複雜度高,因為I/O硬體裝置間差異度高,例如各裝置速度、功能都不同,故獨立於Kernel外另設Subsystem。

I/O System Hardware

- I/O Device、Bus、Controller

I/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: 放置由主機輸出的資料。

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

沒有留言:

張貼留言