# 作業系統原理：行程、記憶體與檔案系統

::: tip 前言
**有了完美的 CPU 和無限的記憶體，電腦就能直接用了嗎？**
在上一章，我們見證了電晶體如何組合成強大的 CPU。但即使你擁有最頂級的硬體，如果直接讓它們工作，連在螢幕上顯示一個字母都需要寫幾百行晦澀的機器指令。

為了解決這些噩夢，**作業系統（Operating System，簡稱 OS）** 誕生了。它是擋在你和冰冷硬體之間的一層最偉大的「軟體」。本章我們將拋開深奧的程式碼，用通俗的比喻，看看這個系統是如何把雜亂無章的硬體調教得服服貼貼的。
:::

**這篇文章會帶你學什麼？**

學完這章後，你將獲得：

- **問題排查能力**：遇到「程式當掉」、「記憶體不足」時，能從作業系統層面分析原因
- **術語理解深度**：理解「多程序」、「虛擬記憶體」、「檔案權限」解決的是什麼問題
- **系統觀思維**：理解程式不是孤立運行的，而是與作業系統、其他程序、硬體資源密切互動
- **後續學習基礎**：為並行程式設計、系統調優、容器技術打下基礎

| 章节 | 內容 | 核心概念 |
|-----|------|---------|
| **第 1 章** | 程序管理 | CPU 時分複用、時間片輪轉 |
| **第 2 章** | 記憶體管理 | 虛擬記憶體、分頁機制 |
| **第 3 章** | 檔案系統 | 檔案組織、目錄結構 |

---

## 0. 全景圖：作業系統的作用

想象一下，你開了一家極具潛力的「運算工廠」（你的電腦），廠裡有一個全能、不知疲倦的頂級幹將（CPU），還有一片巨大的倉庫（記憶體）和無數的貨櫃（硬碟）。

如果你**不僱用**一個廠長（作業系統）來管理：
1. **CPU 獨佔危機**：CPU 一次只能幹一件事。
2. **記憶體踩踏事故**：微信和遊戲都在使用倉庫（記憶體），可能互相覆蓋。
3. **硬碟迷宮**：要找到昨天存的照片，必須準確記住它的物理位置。

<OSArchitectureDemo />

為了解決上述的三大噩夢，作業系統祭出了它的三板斧：**程序管理**、**記憶體管理**和**檔案系統**。

---

## 1. 程序管理：CPU 的時分複用

你平時用電腦，常常是一邊掛著微信，一邊聽著音樂，還能一邊打字。但如果你買的電腦其實只有一個 CPU 核心，它是怎麼同時做這三件事的？

答案是：**它並沒有同時做。而是作業系統在進行瘋狂的「時間管理」。**

<ProcessDemo />

### 1.1 程序概述

每一個正在運行的程式，就被稱為一個**程序**。

### 1.2 時間片輪轉

為了不讓某個流氓軟體一直霸佔 CPU，作業系統把 CPU 的時間切成極小的片段（約 10 毫秒），輪流分配給各個程序。

---

## 2. 記憶體管理：虛擬位址空間

<MemoryDemo />

### 2.1 虛擬記憶體

作業系統對每一個程序都撒了一個大謊：「嘿，你獨佔了整台電腦所有的可用記憶體，隨便用！」

### 2.2 分頁表對應

實際上呢？作業系統把資料塞進**真實實體記憶體**中各種零碎的縫隙裡。這有兩個絕頂天才的好處：
1. **絕對安全**：微信永遠只能看到自己的空間
2. **碎片利用**：不管實體記憶體多亂，對應給程序的虛擬空間依然是整齊的

---

## 3. 檔案系統：持久化儲存的組織

<FilesystemDemo />

### 3.1 檔案系統的功能

1. **切割硬碟**：把硬碟切成無數個固定大小的**區塊**（通常是 4KB）
2. **建立帳本**：記錄哪些區塊是滿的，哪些是空的
3. **翻譯路徑**：把 `D槽/照片/寵物.jpg` 翻譯成「第 3、7、11 區塊」

---

## 4. 三者協同：程式啟動的完整過程

<ProgramLaunchDemo />

無論是你點選桌面圖示，還是程式碼中的一句 `print("Hello World")`，都離不開這一套複雜的暗箱操作。

---

## 延伸閱讀

- **程序與執行緒**：如果程序是專案組，那「執行緒」就是組裡幹活的員工
- **並行與鎖**：當兩個程序同時競爭同一個資源時，如何防止死結
- **系統呼叫**：作業系統給上層應用提供的「服務視窗」
