Skip to content

作業系統:給電腦請個「大管家」

前言

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

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

這篇文章會帶你學什麼?

學完這章後,你將獲得:

  • 問題排查能力:遇到「程式當掉」、「記憶體不足」時,能從作業系統層面分析原因
  • 術語理解深度:理解「多程序」、「虛擬記憶體」、「檔案權限」解決的是什麼問題
  • 系統觀思維:理解程式不是孤立運行的,而是與作業系統、其他程序、硬體資源密切互動
  • 後續學習基礎:為並行程式設計、系統調優、容器技術打下基礎
章节內容核心概念
第 1 章程序管理CPU 時分複用、時間片輪轉
第 2 章記憶體管理虛擬記憶體、分頁機制
第 3 章檔案系統檔案組織、目錄結構

0. 全景圖:沒有作業系統會怎樣?

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

如果你不僱用一個廠長(作業系統)來管理:

  1. CPU 獨佔危機:CPU 一次只能幹一件事。
  2. 記憶體踩踏事故:微信和遊戲都在使用倉庫(記憶體),可能互相覆蓋。
  3. 硬碟迷宮:要找到昨天存的照片,必須準確記住它的物理位置。
📱 Applications
🎵💬🎮
🖥️ Operating System
Schedule CPU
Allocate memory
Manage files
💾 Hardware
🧠 CPU💾 Memory💿 Disk
The application is ready to send a request...

為了解決上述的三大噩夢,作業系統祭出了它的三板斧:程序管理記憶體管理檔案系統


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

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

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

⏱️ The CPU switches tasks so fast you cannot feel it
CPU
💬Chat
Time slice: 0ms
💬
Chat
Running
🎵
Music
Waiting
🌐
Browser
Waiting
💡 Principle: The CPU switches processes every 100ms. It happens so quickly that it feels like everything runs at the same time, even though each process is actually executing in slices.

1.1 什麼是「程序」?

每一個正在運行的程式,就被稱為一個程序

1.2 時間片輪轉

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


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

🧠 The operating system gives each program an illusion of memory
📱 Memory as the program sees it (virtual)
💬 Chat
1
2
3
4
🎮 Game
1
2
3
4
The operating system maps addresses ↓
💾 Real memory chips (physical)
1OS
2
3
4OS
5
6
7
8OS
💡 Principle: Each program thinks it owns a continuous block of memory on the left. In reality, the operating system spreads data across real memory on the right. The addresses a program sees are virtual, and the OS translates them.

2.1 虛擬記憶體

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

2.2 分頁表對應

實際上呢?作業系統偷偷把資料塞進真實實體記憶體中各種零碎的縫隙裡。這有兩個絕頂天才的好處:

  1. 絕對安全:微信永遠只能看到自己的空間
  2. 碎片利用:不管實體記憶體多亂,對應給程序的虛擬空間依然是整齊的

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

📁 The file you see vs fragments on disk
📂 What you see (folder)
📁Photos
🖼️pet.jpg2.5MB
🖼️trip.png1.8MB
💾 Real disk storage (data blocks)
1
2
3Pet-1
4
5Trip-1
6Trip-2
7Pet-2
8
9
10
11Pet-3
12
💡 Principle: The file system splits a file into fragments stored in different disk blocks, then keeps a table of their locations. The tidy folder you see is a view built from that table.

3.1 檔案系統做了什麼?

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

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

🚀 What is the computer doing after you double-click an icon?
1👆
You double-click the icon
The operating system receives a request to start the browser
2📋
Create a process
3🧠
Allocate memory
4📁
Load files
5▶️
Start running
🖱️
Clicking...

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


延伸閱讀

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