A1.3 作業系統與控制系統
作業系統(Operating System, OS)是管理硬體資源、讓應用程式能正常執行的系統軟體;控制系統(control system)則是用感測器與致動器自動調整環境的系統。本頁說明作業系統的主要功能、排程與記憶體管理、輪詢與中斷,以及控制系統的回饋迴路,並標出 HL 加深的多工與記憶體管理內容。
作業系統負責哪些工作?
| 功能 | 說明 |
|---|---|
| 行程管理(process management) | 建立、排程與結束執行中的程式(行程) |
| 記憶體管理(memory management) | 分配與回收 RAM,避免程式互相覆寫 |
| 檔案管理(file system management) | 組織檔案與資料夾、控制存取權限 |
| 裝置管理(device management) | 透過驅動程式(driver)與硬體溝通 |
| 安全性(security) | 使用者帳號、權限、驗證 |
| 使用者介面(user interface) | 提供 GUI 或命令列(CLI) |
作業系統是一種 抽象化(abstraction):應用程式只要呼叫「開檔」,不需要知道硬碟的磁區怎麼排列。
作業系統如何排程?
單一 CPU 核心一次只能執行一個行程,作業系統用 排程演算法(scheduling algorithm) 決定誰先用 CPU:
| 演算法 | 規則 | 優缺點 |
|---|---|---|
| 先到先服務(First-Come First-Served, FCFS) | 依抵達順序執行完 | 簡單;長工作會拖住後面的短工作 |
| 最短工作優先(Shortest Job First, SJF) | 先執行需時最短者 | 平均等待時間短;長工作可能一直等不到(starvation) |
| 輪轉法(Round Robin) | 每個行程輪流用一小段時間(time slice) | 公平、反應快;切換太頻繁會浪費時間 |
| 優先權排程(Priority) | 依優先權高低執行 | 重要工作先做;低優先權可能飢餓 |
輪詢和中斷有什麼不同?
CPU 有兩種方式知道外部裝置需要處理:
- 輪詢(polling):CPU 定期主動檢查裝置狀態。實作簡單,但沒事時也在檢查,浪費 CPU 時間。適合事件頻繁、時間可預測的情境。
- 中斷(interrupt):裝置有事時送訊號給 CPU,CPU 暫停目前工作、儲存狀態,執行 中斷服務程式(Interrupt Service Routine, ISR) 後再回來。反應快、效率高,適合不定時發生的事件,例如鍵盤輸入、網路封包抵達。
多工與記憶體管理
HL 延伸:本節僅 HL 需要
SL 學生可略過本節。
什麼是多工處理?
多工處理(multitasking)讓多個行程看起來同時執行。作業系統快速在行程間切換(context switch:儲存目前行程的暫存器狀態,載入下一個行程的狀態),每個行程只拿到很短的 CPU 時間。多核心 CPU 則能真正同時執行多個行程。
多工會帶來 死結(deadlock) 風險:行程 A 持有資源 1 等資源 2,行程 B 持有資源 2 等資源 1,兩者永遠互等。
分頁與分段有什麼差別?
- 分頁(paging):把程式與實體記憶體切成固定大小的頁(page)與頁框(frame),用分頁表對應。不會產生外部碎片,是現代 OS 的主流做法。
- 分段(segmentation):依程式的邏輯單位(程式碼段、資料段、堆疊段)切成大小不一的段。符合程式結構,但容易產生外部碎片。
- 虛擬記憶體(virtual memory):RAM 不夠時,把暫時不用的頁換到硬碟上的置換空間(swap)。讓程式能使用超過 RAM 的空間,但若頻繁換頁會造成 thrashing,效能大幅下降。
控制系統如何運作?
控制系統透過 回饋迴路(feedback loop) 自動維持目標狀態:
- 感測器(sensor) 測量環境,例如溫度。
- 控制器(controller,通常是微處理器) 比較測量值與設定值(setpoint)。
- 致動器(actuator) 依控制器指令動作,例如開啟暖氣。
- 環境改變後,感測器再次測量,形成迴圈。
flowchart LR
S["感測器<br/>測量溫度"] --> C["控制器<br/>比較設定值"]
C --> A["致動器<br/>開關暖氣"]
A --> E["環境<br/>室溫改變"]
E --> S
- 開迴路(open-loop):不看結果,照固定流程執行,例如定時烤麵包機。
- 閉迴路(closed-loop):依回饋調整,例如恆溫器、汽車定速巡航。
常見應用:自動門、電梯、交通號誌、溫室灌溉、工業機器手臂。
推薦影音
作業系統
簡述:從批次處理講到多工、虛擬記憶體與記憶體保護,對應本頁的 OS 功能、多工與記憶體管理。
虛擬記憶體與分頁
簡述:BitLemon 用動畫說明為什麼程式不直接存取實體記憶體、分頁表如何把虛擬位址轉成實體位址,適合 HL 學生理解分頁。
檔案與檔案系統
簡述:說明檔案格式、目錄結構與檔案系統如何在磁碟上配置資料,對應作業系統的檔案管理功能。
練習題
練習 1:輪詢或中斷
溫室每 10 分鐘讀一次濕度,以及使用者隨時可能按下的緊急停止按鈕,各適合用輪詢還是中斷?
參考答案
濕度讀取時間固定且可預測,用 輪詢 即可;緊急停止按鈕不定時發生且必須立刻處理,應用 中斷。
練習 2:排程計算
三個行程依序抵達:P1 需 8 ms、P2 需 2 ms、P3 需 4 ms。分別計算 FCFS 與 SJF 的平均等待時間。
參考答案
FCFS:等待時間 P1 = 0、P2 = 8、P3 = 10,平均 = 18/3 = 6 ms。SJF(P2 → P3 → P1):P2 = 0、P3 = 2、P1 = 6,平均 = 8/3 ≈ 2.67 ms。
練習 3:設計控制系統
描述一個自動澆水系統的感測器、控制器與致動器,並說明它是開迴路還是閉迴路。
參考答案
感測器:土壤濕度感測器;控制器:微控制器比較濕度與設定值;致動器:電磁閥或水泵。因為依測量的濕度決定是否澆水,屬於 閉迴路。
HL 練習:分頁與 thrashing
說明為什麼同時開太多大型程式時,電腦會變得非常慢,甚至硬碟燈一直亮。
參考答案
RAM 不足時,OS 把頁換到硬碟上的虛擬記憶體。行程不斷需要已被換出的頁,OS 就不停在 RAM 與硬碟間搬移頁(thrashing),大部分時間花在 I/O 而不是執行程式,所以效能大幅下降、硬碟持續存取。