歡迎來到系統軟體的世界!

你有沒有想過,電腦是如何在同時開啟 Chrome、播放 Spotify 並執行系統更新的情況下,還能保持流暢而不當機的呢?這就是系統軟體 (Systems Software) 的魔力所在。你可以把它想像成電腦的「經理」。應用程式(如遊戲或 Word)是幫助執行任務,而系統軟體則是幫助電腦順利運作並管理其硬體資源。

在本章中,我們將探討所有軟體的「大佬」:作業系統 (Operating System),以及它如何運用巧妙的技巧讓一切井然有序。

1. 作業系統 (Operating System, OS)

作業系統是一組負責管理電腦硬體並提供應用程式執行平台的程式。沒有它,你的電腦就只是一堆昂貴的金屬和塑膠零件!

作業系統的主要功能:

1. 處理器管理 (Processor Management): 決定 CPU 處理哪個工作以及處理的時間長短。
2. 記憶體管理 (Memory Management): 為正在執行的程式分配 RAM 空間。
3. I/O 管理 (I/O Management): 管理輸入及輸出裝置(例如滑鼠、鍵盤和印表機)。
4. 檔案管理 (File Management): 管理硬碟上的資料儲存方式。
5. 安全性 (Security): 處理使用者名稱、密碼及存取權限。

比喻:想像一家繁忙的餐廳。作業系統就像是「餐廳經理」。經理不會親自下廚(那是 CPU 的工作),但經理會確保服務生各司其職、座位安排妥當,並確保廚房擁有足夠的食材。

重點複習:作業系統在使用者硬體之間充當介面的角色。

2. 記憶體管理

當你開啟一個應用程式時,它需要被載入到 RAM(主記憶體)中。由於 RAM 容量有限,作業系統必須非常聰明地運用它。你需要掌握以下三種主要技術:

A. 分頁 (Paging)

分頁將記憶體劃分成固定大小的區塊,稱為頁面 (pages)。這些是實體的劃分。一個程式可能會被拆分成多個頁面,分散儲存在 RAM 的不同位置。作業系統會使用「分頁表 (page table)」來追蹤這些頁面的位置。

B. 分段 (Segmentation)

分段將記憶體劃分成大小不一的區塊,稱為分段 (segments)。這些是邏輯性的劃分。例如,一個程式可以被拆分為主程式碼段、資料段和函式庫段,它遵循程式原本的結構。

C. 虛擬記憶體 (Virtual Memory)

如果覺得難懂也不用擔心!只要記住:虛擬記憶體是「假」的 RAM。當你的 RAM 完全用盡時,作業系統會把目前沒在用的資料移到硬碟 (Hard Drive)SSD 的特定空間中。這讓電腦「誤以為」自己擁有比實際更大的記憶體空間。

常見的錯誤觀念:千萬別搞混分頁與分段!分頁指的是固定大小的實體區塊,而分段則是程式的邏輯區塊

3. 中斷 (Interrupts) 與中斷服務程式 (ISR)

中斷是一個傳送給 CPU 的訊號,意思是:「嘿!有緊急的事發生,先停下你手邊的工作!」例如印表機缺紙或是你按下了滑鼠。

中斷服務程式 (Interrupt Service Routine, ISR)

當 CPU 收到中斷時,它不會慌張,而是依照以下步驟執行:
1. 完成目前的 Fetch-Decode-Execute(提取-解碼-執行)週期。
2. 儲存暫存器目前的狀態(以便稍後能恢復工作)。
3. 查找中斷服務程式 (ISR)——這是一小段程式碼,告訴 CPU 如何處理該特定問題。
4. 當 ISR 執行完畢後,CPU 會載入先前儲存的狀態,並從中斷點繼續執行。

冷知識:每一個 Fetch-Decode-Execute 週期的結尾,CPU 都會檢查是否有中斷發生!

4. 排程 (Scheduling)

由於 CPU 同時間只能做一件事,作業系統必須決定下一個由哪個處理程序 (process) 使用 CPU。這稱為排程。目標是保持公平性並讓電腦運作起來流暢。

常見的排程演算法:

1. 循環法 (Round Robin): 每個程序獲得相等的「時間片」。如果沒能在該時間內完成,它就會被排到佇列的最末端。(非常公平!)
2. 先到先服務 (FCFS): 誰先到,誰先處理。(簡單,但長作業可能會卡住其他人)。
3. 最短作業優先 (SJF): CPU 挑選預計完成時間最短的作業。
4. 最短剩餘時間優先: 與 SJF 類似,但如果有更新、更短的作業進來,CPU 會立即切換過去。
5. 多層回饋佇列 (Multi-level Feedback Queues): 使用多個具有不同優先級的佇列。雖然複雜,但能讓系統保持極高的回應速度。

重點總結:排程可以防止「飢餓 (starvation)」現象,也就是某個程序永遠無法獲得 CPU 使用權的情況。

5. 作業系統類型

由於電腦用途各異,我們有不同的作業系統類型:

分散式作業系統 (Distributed OS): 多台電腦共同合作處理單一任務,但對使用者而言看起來像是一套系統(例如大型科學計算)。
嵌入式作業系統 (Embedded OS): 內建在特定裝置中,如洗衣機或微波爐。通常介面簡單且任務單一。
多工作業系統 (Multi-tasking OS): 能同時執行多個程式(如 Windows 或 macOS)。
多使用者作業系統 (Multi-user OS): 允許許多使用者同時登入同一台強大的電腦。
即時作業系統 (Real-Time OS, RTOS): 保證在特定時間限制內完成任務。用於飛機控制或醫院監護儀等生死攸關的系統。

6. BIOS 與裝置驅動程式

BIOS (基本輸入輸出系統)

BIOS 是你開啟電腦時執行的一小段程式。它儲存在 ROM(唯讀記憶體)中。其主要工作是執行 POST (Power-On Self-Test,加電自檢),確保硬體運作正常,然後「開機」並將作業系統從硬碟載入到 RAM。

裝置驅動程式 (Device Drivers)

裝置驅動程式是一小段軟體,告訴作業系統如何與特定的硬體通訊。如果你買了一款炫酷的新電競滑鼠,你可能需要安裝驅動程式,讓作業系統知道那些額外的按鍵該做什麼功能。

7. 虛擬機器 (Virtual Machines, VM)

虛擬機器 (VM) 是一種軟體,其表現得就像一台真正的實體電腦。你可以在一套作業系統(如 Windows)裡面執行另一套作業系統(如 Linux)。

為什麼要使用它?

1. 中間碼 (Intermediate Code): Java 等語言使用虛擬機器,讓同一段程式碼可以在任何裝置上執行。
2. 測試: 開發人員可以在不同的作業系統上測試軟體,而無需購買十台不同的電腦。
3. 安全性: 如果病毒感染了 VM,它會被困在那個「虛擬」泡沫中,不會損害你的實體電腦。

快速總結:系統軟體是維繫你電腦運作的隱形膠水,它管理記憶體、硬體和時間,讓你的應用程式能完美執行!