2.1 Computer System Operation
- 執行程式: Disk -> bus -> Main Memory -> CPU執行
- adapter
- Disk Controller: 控制Disk工作
- Interface Card: 控制I/O
Main Memory作為整個系統的中繼點,不單只有CPU可以控制, 其他I/O設備也可以進行操作。
現代電腦系統
- 並行 (Concurrent): CPU, Disk Controller, I/O 都可能同時運作
- 主記憶體
- 主記憶體只能被一個設備佔用,記憶體控制器安排使用順序
- Memory Controller提供同步 (Synchronous)
- 同步: 依序存取主記憶體,不允許同時存取主記憶體
- 設備
- 設備完成工作並發出interrupt通知CPU
- CPU透過Polling檢查設備狀態
- DMA: Direct Memory access,以用於大量資料傳輸,取代前兩者
Polling
由Master unit circularcheck各個slave單元的狀態
Interrupt
設備與程式透過中斷通知CPU,CPU停止當前工作並處理對映工作。
- 提高CPU
- 事件: 改變CPU執行的次序
Polling vs Interrupt
- 中斷可以提高CPU效率
- CPU必須輪詢以確認多個設備發生中斷的設備進行處理
2.2 Interrupt Service
中斷的類型
中斷發生處理流程
- 轉回控制權給作業系統
- OS保存當前程式CPU狀態(注: 保存的PC為當前執行指令 + 1)
- OS識別中斷,以呼叫Interrupt Service Routine
- 完成ISR,並還原CPU狀態
- 執行中斷時的下一指令
注:
- 因為指令週期只在最後檢查中斷,因此會完成當前指令。
- 由於硬體設計,CPU接收中斷時即可保存當前CPU狀態存入,之後才轉交PC控制權給OS,
因此不會有保存到OS本身CPU Status的問題
- Program Status Word
- Global Stack
- Global Memory
- 中斷向量(Interrupt Vector)保存中斷服務函數地址, 發生時,透過中斷編號找到對映的中斷。
- CPU Status: registers, PC, stack..
分類1
- External Interrupt: By hardware
- Internal Interrupt: Stack Overflow, Divided by Zero, Protect Violation (如存取到不該存取的記憶體)
- Software Interrupt: 軟體中斷,SVC (Supervisor Call)
分類2
- Restart Interrupt
- I/O Interrupt
- External Interrupt: 計時器, Console
- Supervisor Call
- Software Check Interrupt
- Machine Check Interrupt
注: console在早期電腦系統中,多為系統管理員操作,雖為I/O設備而有格外的分類。
- cold start: 開啟電源並開機
- warm start: 電腦本來已經擁有電源,重新啟動
Trap
- 軟體中斷
- 安排過可預期的中斷
- System Call為典型的trap
- 刻意使程式產生錯誤,其發生的中斷也為trap
System call的處理
- 程式產生陷阱,進入監督者模式(控制權轉交給OS)
- 保存當CPU狀態
- 判斷中斷向量
- 執行中斷
- 復原CPU狀態,並回到Trap繼續執行
中斷優先級
如何解決同時發生的中斷?
- 透過中斷優先級決定是否再次中斷
如何實現
- Polling: 輪詢時,次序即可決定中斷優先級
- Daisy Chain: 硬體機制,透過串接的and與not邏輯閘(not位於先前的中斷), 之後就可以優先輸出前者
- Parrallel Priority Interrupt: 軟體機制,並且在PC上面使用, Mask register決定啟用或禁用,啟用的中斷可以執行,ISP中包含Mask register 根據不同優先級對其更改。
注:
- Daisy Chain: 串連的硬體,如SCSI界面,並且同時只能啟用單一硬體。
對中斷的反應
大多數情況中斷發生時都必須立刻處理,不過依然有例外情況。
- Occur: 高優先級,System call, 系統保護
- Pending: I/O
- Ignore: 如溢位處理
2.3 I/O Interrupts
- 同步I/O: CPU必須等待I/O完成
- 非同步I/O: CPU與I/O分離,並且定期檢查是否有I/O內容
Time Sharing中,CPU在等待I/O時,會優先切換至其他程式中
data communication
- 同步: 收送共用時脈
- 非同步: 透過同步訊號(start bit / stop bit)處理資料, 而同步訊號之間放置資料 Ex: 網路
Direct Memory Access
- 中斷不適合處理大量資料傳輸
- 適合高速設備傳輸
- 直接透過bus傳送資料到main memory
- 控制器傳送DMA訊號給CPU,使CPU閒置而不儲存狀態 避免影響bus。
特性
- 一次傳輸大量資料
- 高速I/O設備
- 增加I/O產能
- 減少中斷
- 由於CPU閒置,降低CPU產能
補充
- 傳統cpu有dma訊號線
- 如果cpu內有南北橋,可以透過中斷去處理DMA而不用格外DMA訊號線
Cycle Stealing
- 與DMA的差別,在於閒置時間為一個Memory cycle
- 或者在CPU計算時,進行Memory access
buffer
作為高低速設備之間的緩衝,以增加高速設備的效能, 而低速設備則可以處理數據。
E.g. 印表機與CPU傳輸資料
Physical Record
- 1 Physical Record = 1 Sector = 1 block = buffer
- N Logical Records (一筆數據)
- Blocking: 將多個Logical record Blocking成一個block
- Blocking factor: block中logical的數量
- 每次讀寫Logical records時,填滿之後才會進行Physical I/O
關於設備
- character device: 每次以char為單位, RS232, USB
- block device: 以block為單位, disk
Double Buffer
兩個buffer個別填滿之後發生中斷, 其中一個buffer填滿之後,則換填充另一個
2.4 storage structure
-
von veumann architecture
-
Main Memory: Volatility
-
Secondary Memory: non Volatility
-
Memory mapped I/O: 對記憶體特定位置進行I/O,進而控制device
- memory 填寫進行I/O
-
Device mapped I/O: Main Memory與I/O的memory分離,並且需要使用I/O instruction
- statement (fucntion call)
- DOS/BIOS call (system call)
進行I/O的方式
- statement (fucntion call)
- DOS/BIOS call (system call)
- memory 填寫進行I/O,需要Protect
secondary memory
階層式記憶體
reg <-> cache <-> Main Memory <-> Secondary Memory
- 由以上4者組成Hierarchical storage
- 大小: reg < cache < main memory < Secondary
- Replacemeny Policy: 80~90% hit ratio
Address space
程式能合法使用的記憶體範圍, 原則上只能存取本身的記憶體, 或者透過system call存取其他資源
2.5 Hardware Protection
避免未授權資源受到存取導致異常
監督者模式執行的命令為privileged instruction
- I/O protection: 透過系統呼叫進行I/O存取其他資源
- Memory Protection: Bounded register的範圍都可以存取, 否則需要透過System call存取其他資源
- CPU proctection: 避免停止問題(Halting Problem),永不停止的問題,
Timer用於解決該問題,並且發出Time out interrupt
- Time Sharing也能避免完全占用
- File Protection: 只能存取授權或自己的目錄,對Access capability保護
Context Switch: 交換佔有cpu的行為
Operating System