💻 作業系統基礎學習指南

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 設備)等所有資源,讓餐廳順利運作。

🔧 作業系統的主要功能

功能說明
程序管理建立、調度、終止程序
記憶體管理分配、回收記憶體空間
檔案管理建立、刪除、讀寫檔案
I/O 管理控制輸入輸出設備
安全保護保護系統資源不被未授權存取
網路管理處理網路通訊

🏗️ 作業系統的組成

┌─────────────────────────────────────────┐
│           使用者介面 (Shell)             │
├─────────────────────────────────────────┤
│           核心 (Kernel)                  │
│  ┌─────────┬─────────┬───────────────┐  │
│  │程序管理│記憶體管理│ CPU 排程     │  │
│  ├─────────┼─────────┼───────────────┤  │
│  │檔案系統│ I/O 管理│ 安全機制     │  │
│  └─────────┴─────────┴───────────────┘  │
├─────────────────────────────────────────┤
│           硬體 (Hardware)                │
└─────────────────────────────────────────┘
                

2. 程序管理 (Process Management)

📝 什麼是程序 (Process)?

程序是正在執行的程式,是作業系統進行資源分配的基本單位。

⚠️ 程式 vs 程序:
程式是靜態的程式碼(存在硬碟上),程序是動態執行的實體(正在使用 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
程序 B
128 MB
程序 C
64 MB
空閒
152 MB
💡 分頁替換算法:
當記憶體不足時,需要將某些頁面換出到硬碟 (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 位哲學家圍坐在圓桌,每人左手邊有一根筷子。要吃飯需要兩根筷子。當所有人都拿起左手筷子時,就發生死結。

📋 死結的必要條件

四個條件才會發生死結:

  1. 互斥 (Mutual Exclusion):資源不能被共享
  2. 持有並等待 (Hold and Wait):持有資源並等待其他資源
  3. 非搶奪 (No Preemption):資源不能被強制奪取
  4. 循環等待 (Circular Wait):形成資源等待環

🛡️ 處理死結的方法

方法策略說明
預防破壞必要條件限制資源申請方式
避免動態檢查銀行家算法確保安全狀態
檢測與復原允許發生後處理定期檢測並殺死程序
忽略假裝不會發生Unix/Linux 的做法

6. 檔案系統 (File System)

📁 檔案系統的功能

  • 提供檔案的抽象化介面
  • 管理檔案的建立、讀取、寫入、刪除
  • 提供目錄結構組織檔案
  • 控制檔案的存取權限
  • 管理磁碟空間配置

🗂️ 常見的檔案系統

檔案系統說明使用場景
FAT32簡單相容性好隨身碟、記憶卡
NTFSWindows 專用,高效能Windows 系統碟
ext4Linux 主流Linux 系統碟
APFSApple 專用macOS、iOS
exFAT大檔案支援大容量隨身碟

💾 磁碟空間配置方式

方式說明優缺點
連續配置檔案連續存放讀取快,但有外部碎片
連結配置用指標串接無碎片,但隨機存取慢
索引配置建立索引區塊平衡好,但需要額外空間

7. I/O 系統

🔌 I/O 設備分類

類型範例特點
區塊設備硬碟、SSD、USB以固定大小區塊傳輸
字元設備鍵盤、滑鼠、序列埠以字元為單位傳輸
網路設備網卡、數據機以封包為單位傳輸

⚙️ I/O 傳輸方式

方式說明優缺點
程式控制 I/OCPU 不斷輪詢設備簡單但浪費 CPU
中斷驅動 I/O設備完成後發中斷CPU 可做其他事
DMA直接記憶體存取CPU 負擔最低

8. 總結與測驗

📚 重點回顧

  1. 作業系統是管理電腦資源的系統軟體
  2. 程序是資源分配的基本單位,透過 PCB 管理
  3. 記憶體管理包含配置、保護和虛擬記憶體
  4. CPU 排程決定哪個程序獲得 CPU 時間
  5. 死結需要四個條件同時滿足才能發生
  6. 檔案系統管理檔案的儲存和存取

📝 自我測驗

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 核心原始碼分析

✅ 完成學習

完成本教材後,點擊下方按鈕記錄你的學習進度!