基礎:機器模型

核心空間 vs 使用者空間(概覽)

想像一棟大樓,普通辦公室(大家工作的地方)與那間上了鎖、掌管整棟暖氣、電力與保全的控制室嚴格分開。訪客待在辦公室裡;只有獲授權的人員,才能穿過一道有人看守的門去碰控制設備。電腦劃下同樣的界線:使用者空間是你的程式執行的地方,核心空間則是受保護的區域,作業系統的核心在此以對硬體的完整權力運行。

CPU 本身強制執行這道分隔。它能運行於一種特權模式(常稱核心或監督模式),其中程式碼可碰任何記憶體、直接命令硬體;或運行於一種受限模式(使用者模式),其中危險操作被禁止。你的應用程式跑在使用者模式。當它需要某件只有核心被允許做的事——讀檔案、送網路資料、向作業系統要記憶體——它不能逕自去做;它必須提出請求,方法是發出一個系統呼叫,那就是那道看守的門,把 CPU 切換進核心模式、執行可信的核心程式碼把事辦了、再切換回來。

即便只是概覽,為何重要:這道邊界,正是為什麼一個有缺陷的程式通常無法搞垮整台機器、或讀取另一個程式的私有記憶體——核心與硬體會拒絕那些被禁的舉動。它對安全性、穩定性以及系統程式碼的成本模型至關重要,因為跨越邊界(一次系統呼叫)遠比一次普通函式呼叫昂貴。細部機制——特權環、陷阱、模式切換——留待日後;現在該抓住的圖像,就只是兩個受保護的區域,中間僅有一道看守的門。

當你的程式呼叫 printf("hi"),函式庫最終會發出一個 write() 系統呼叫:CPU 陷入核心模式,核心把那些位元組推給終端機裝置,然後控制權回到你的使用者模式程式碼。你的程式碼從未直接碰過螢幕硬體。

使用者程式碼提出請求;核心動手執行;控制權再回來——這就是那道看守的門在運作。

「核心空間」與「使用者空間」談的是特權與受保護的記憶體區域,不是實體晶片。確切的機制(特權環、陷阱)日後再談;此條目只是用來定位方向的概覽。

又稱
kernel mode versus user modesupervisor versus user space核心模式 vs 使用者模式