💻 作業系統基礎學習指南
Operating System Fundamentals | 2026 Edition
📑 章節目錄
1. 什麼是作業系統? 2. 程序管理 (Process Management) 3. 記憶體管理 (Memory Management) 4. CPU 排程 (CPU Scheduling) 5. 死結 (Deadlock) 6. 檔案系統 (File System) 7. I/O 系統 8. 總結與測驗1. 什麼是作業系統?
🎯 作業系統的定義
作業系統 (Operating System, OS) 是管理電腦硬體與軟體資源的系統軟體,它是電腦與使用者之間的橋樑。
💡 簡單比喻:
如果電腦是一間餐廳,作業系統就像是經理,它協調廚師(CPU)、冰箱(記憶體)、收銀台(I/O 設備)等所有資源,讓餐廳順利運作。
如果電腦是一間餐廳,作業系統就像是經理,它協調廚師(CPU)、冰箱(記憶體)、收銀台(I/O 設備)等所有資源,讓餐廳順利運作。
🔧 作業系統的主要功能
| 功能 | 說明 |
|---|---|
| 程序管理 | 建立、調度、終止程序 |
| 記憶體管理 | 分配、回收記憶體空間 |
| 檔案管理 | 建立、刪除、讀寫檔案 |
| I/O 管理 | 控制輸入輸出設備 |
| 安全保護 | 保護系統資源不被未授權存取 |
| 網路管理 | 處理網路通訊 |
🏗️ 作業系統的組成
┌─────────────────────────────────────────┐
│ 使用者介面 (Shell) │
├─────────────────────────────────────────┤
│ 核心 (Kernel) │
│ ┌─────────┬─────────┬───────────────┐ │
│ │程序管理│記憶體管理│ CPU 排程 │ │
│ ├─────────┼─────────┼───────────────┤ │
│ │檔案系統│ I/O 管理│ 安全機制 │ │
│ └─────────┴─────────┴───────────────┘ │
├─────────────────────────────────────────┤
│ 硬體 (Hardware) │
└─────────────────────────────────────────┘
2. 程序管理 (Process Management)
📝 什麼是程序 (Process)?
程序是正在執行的程式,是作業系統進行資源分配的基本單位。
⚠️ 程式 vs 程序:
程式是靜態的程式碼(存在硬碟上),程序是動態執行的實體(正在使用 CPU、記憶體等資源)。
程式是靜態的程式碼(存在硬碟上),程序是動態執行的實體(正在使用 CPU、記憶體等資源)。
🔄 程序的生命週期
┌──────────┐
│ 新建 │ (New)
└────┬─────┘
│ 建立程序
┌────▼─────┐
│ 就緒 │ (Ready) ◄────────┐
└────┬─────┘ │
│ CPU 排程 │
┌────▼─────┐ │
│ 執行中 │ (Running) ───────┤
└────┬─────┘ │
│ I/O 請求 │
┌────▼─────┐ ┌─────────┐ │
│ 等待 │────►│ 就緒 │─┘
│ (Waiting)│ I/O 完成 └─────────┘
└────┬─────┘
│ 完成執行
┌────▼─────┐
│ 終止 │ (Terminated)
└──────────┘
📊 程序的組成要素
- 程式碼 (Text Segment):存放執行的指令
- 資料 (Data Segment):存放全域變數和靜態變數
- 堆疊 (Stack):存放函數呼叫、區域變數
- 堆積 (Heap):存放動態配置的記憶體
┌──────────────────────────┐
│ 程式碼區 │ ◄ Code
├──────────────────────────┤
│ 全域資料區 │ ◄ Data
├──────────────────────────┤
│ 堆積區 │ ◄ Heap (動態配置)
│ ↓ │
│ ↑ │
│ 堆疊區 │ ◄ Stack (函數呼叫)
└──────────────────────────┘
🔀 程序控制區塊 (PCB)
作業系統使用 PCB (Process Control Block) 來追蹤每個程序的狀態:
| PCB 內含 | 說明 |
|---|---|
| 程序 ID (PID) | 程序的唯一識別碼 |
| 程序狀態 | 就緒、執行中、等待等 |
| 程式計數器 (PC) | 下一個要執行的指令位址 |
| CPU 暫存器 | 保存程序執行時的暫存器值 |
| 記憶體管理資訊 | 基址界限暫存器、頁表等 |
| Accounting 資訊 | CPU 使用時間、執行時間等 |
| I/O 狀態資訊 | 開啟的檔案、I/O 設備列表 |
3. 記憶體管理 (Memory Management)
🎯 記憶體管理的目標
- 有效利用記憶體空間
- 讓多個程式同時存在記憶體中
- 保護程序的記憶體不被其他程序存取
- 提供記憶體擴充的假象(虛擬記憶體)
🗂️ 記憶體配置方式
| 方式 | 說明 | 優點 | 缺點 |
|---|---|---|---|
| 連續配置 | 程序連續佔用記憶體 | 簡單 | 外部碎片 |
| 分頁 (Paging) | 將記憶體分成固定大小頁框 | 無外部碎片 | 內部碎片 |
| 分段 (Segmentation) | 按邏輯單位分割 | 符合程式結構 | 外部碎片 |
| 分頁+分段 | 結合兩者優點 | 彈性大 | 複雜 |
🔲 分頁系統 (Paging)
虛擬位址 = 頁號 (Page Number) + 頁內位移 (Offset)
┌──────────────┬──────────────┐
│ 頁號 (4位) │ 頁內位移 (12位)│
└──────────────┴──────────────┘
│ │
▼ ▼
┌─────────┐ ┌─────────┐
│ 頁表 │ │ 頁框 │
│ 查詢 │ │ 位址 │
└────┬────┘ └────┬────┘
│ │
▼ ▼
┌─────────────────────────────┐
│ 實體位址 = 頁框號 + 位移 │
└─────────────────────────────┘
🧠 虛擬記憶體 (Virtual Memory)
使用硬碟空間來擴充記憶體,讓程式認為有更多記憶體可用。
程序 A
256 MB
256 MB
程序 B
128 MB
128 MB
程序 C
64 MB
64 MB
空閒
152 MB
152 MB
💡 分頁替換算法:
當記憶體不足時,需要將某些頁面換出到硬碟 (Swap Space)。常用算法:
• FIFO、LRU、LFU、Optimal
當記憶體不足時,需要將某些頁面換出到硬碟 (Swap Space)。常用算法:
• FIFO、LRU、LFU、Optimal
4. CPU 排程 (CPU Scheduling)
📊 排程的層級
- 長期排程:決定哪些程式載入記憶體(工作排程)
- 中期排程:決定哪些程式換出記憶體(置換)
- 短期排程:決定哪個就緒程序獲得 CPU(CPU 排程)
⚡ 排程算法
| 算法 | 說明 | 特色 |
|---|---|---|
| FCFS | 先來先服務 | 簡單,但可能造成 convoy effect |
| SJF | 最短工作優先 | 平均等待時間最短 |
| Priority | 優先權排程 | 可配合老化機制避免飢餓 |
| Round Robin | 時間片輪轉 | 公平,適合互動式系統 |
| Multilevel Queue | 多層佇列 | 不同類型程序用不同隊列 |
⏱️ 排程效能指標
- CPU 利用率:CPU 忙碌時間的比例
- 吞吐量 (Throughput):單位時間完成的工作數
- 週轉時間 (Turnaround Time):提交到完成的總時間
- 等待時間 (Waiting Time):在就緒佇列中的時間
- 回應時間 (Response Time):提交到首次回應的時間
⚠️ 注意:
互動式系統重視回應時間,批次系統重視吞吐量。
互動式系統重視回應時間,批次系統重視吞吐量。
5. 死結 (Deadlock)
💀 什麼是死結?
死結是指兩個或多個程序互相等待對方釋放資源,導致所有程序都無法繼續執行。
🚨 經典範例 - 哲學家用餐問題:
5 位哲學家圍坐在圓桌,每人左手邊有一根筷子。要吃飯需要兩根筷子。當所有人都拿起左手筷子時,就發生死結。
5 位哲學家圍坐在圓桌,每人左手邊有一根筷子。要吃飯需要兩根筷子。當所有人都拿起左手筷子時,就發生死結。
📋 死結的必要條件
四個條件才會發生死結:
- 互斥 (Mutual Exclusion):資源不能被共享
- 持有並等待 (Hold and Wait):持有資源並等待其他資源
- 非搶奪 (No Preemption):資源不能被強制奪取
- 循環等待 (Circular Wait):形成資源等待環
🛡️ 處理死結的方法
| 方法 | 策略 | 說明 |
|---|---|---|
| 預防 | 破壞必要條件 | 限制資源申請方式 |
| 避免 | 動態檢查 | 銀行家算法確保安全狀態 |
| 檢測與復原 | 允許發生後處理 | 定期檢測並殺死程序 |
| 忽略 | 假裝不會發生 | Unix/Linux 的做法 |
6. 檔案系統 (File System)
📁 檔案系統的功能
- 提供檔案的抽象化介面
- 管理檔案的建立、讀取、寫入、刪除
- 提供目錄結構組織檔案
- 控制檔案的存取權限
- 管理磁碟空間配置
🗂️ 常見的檔案系統
| 檔案系統 | 說明 | 使用場景 |
|---|---|---|
| FAT32 | 簡單相容性好 | 隨身碟、記憶卡 |
| NTFS | Windows 專用,高效能 | Windows 系統碟 |
| ext4 | Linux 主流 | Linux 系統碟 |
| APFS | Apple 專用 | macOS、iOS |
| exFAT | 大檔案支援 | 大容量隨身碟 |
💾 磁碟空間配置方式
| 方式 | 說明 | 優缺點 |
|---|---|---|
| 連續配置 | 檔案連續存放 | 讀取快,但有外部碎片 |
| 連結配置 | 用指標串接 | 無碎片,但隨機存取慢 |
| 索引配置 | 建立索引區塊 | 平衡好,但需要額外空間 |
7. I/O 系統
🔌 I/O 設備分類
| 類型 | 範例 | 特點 |
|---|---|---|
| 區塊設備 | 硬碟、SSD、USB | 以固定大小區塊傳輸 |
| 字元設備 | 鍵盤、滑鼠、序列埠 | 以字元為單位傳輸 |
| 網路設備 | 網卡、數據機 | 以封包為單位傳輸 |
⚙️ I/O 傳輸方式
| 方式 | 說明 | 優缺點 |
|---|---|---|
| 程式控制 I/O | CPU 不斷輪詢設備 | 簡單但浪費 CPU |
| 中斷驅動 I/O | 設備完成後發中斷 | CPU 可做其他事 |
| DMA | 直接記憶體存取 | CPU 負擔最低 |
8. 總結與測驗
📚 重點回顧
- 作業系統是管理電腦資源的系統軟體
- 程序是資源分配的基本單位,透過 PCB 管理
- 記憶體管理包含配置、保護和虛擬記憶體
- CPU 排程決定哪個程序獲得 CPU 時間
- 死結需要四個條件同時滿足才能發生
- 檔案系統管理檔案的儲存和存取
📝 自我測驗
Q1: 程序的五種狀態是什麼?
Ans: 新建、就緒、執行中、等待、終止
Q2: 分頁和分段有什麼不同?
Ans: 分頁是固定大小,分段是依邏輯單位
Q3: 死結的四個必要條件?
Ans: 互斥、持有並等待、非搶奪、循環等待
Q4: 什麼是 PCB?
Ans: Process Control Block,儲存程序資訊的資料結構
🎯 延伸學習資源
- 《Operating System Concepts》- Silberschatz(經典教材)
- 《Modern Operating Systems》- Tanenbaum
- MIT 6.828 課程:Operating System Engineering
- Linux 核心原始碼分析
✅ 完成學習
完成本教材後,點擊下方按鈕記錄你的學習進度!