作業系統
作業系統(operating system)是你一按下電源鍵就開始運作、直到關機才停止的主控程式,它掌管整台電腦。把它想成一間忙碌的旅館:旅客就是你想執行的應用程式(瀏覽器、遊戲、音樂播放器),建築與房間就是硬體(CPU、記憶體、磁碟、螢幕),而作業系統就是整組旅館員工——決定誰住哪間房的櫃檯、替旅客處理雜事讓他們不必自己面對水電管線的服務生,以及不讓某位旅客闖進別人房間的保全。單一應用程式無法自己把這一切打理得井然有序;作業系統替所有人代勞。
具體來說,作業系統位於你的程式與裸機之間,同時擔起三大工作。第一,它是資源管理者:把唯一的 CPU、有限的記憶體與少數的裝置分配給眾多程式,讓每個都輪得到,又不讓任何一個獨佔一切。第二,它是抽象層:與其強迫每個應用程式都要懂你這台特定磁碟的精確電氣指令,它提供乾淨、統一的介面,例如「開啟一個檔案」或「把這些位元組送上網路」。第三,它是控制程式:監看執行中的程式,阻止出錯的程式拖垮整台機器,並執行「誰能做什麼」的規則。
幾乎每一台運算裝置都有作業系統,即使你看不見它——你的手機(Android、iOS)、筆電(Windows、macOS、Linux)、網站背後的伺服器、汽車的影音系統,甚至微波爐裡的小晶片,都跑著規模不一的作業系統。作業系統不等於你使用的應用程式,也不等於硬體;它是讓硬體可用、讓應用程式得以存在的那一層。本主題其餘的一切——行程、記憶體、檔案、排程——其實都是對作業系統默默承擔的某項工作的進一步細看。
你在下載進行中、聊天視窗開著的同時,雙擊打開一個音樂程式。三個程式都想要 CPU,全都要記憶體,其中兩個還要網路——它們卻能共存,而且關掉其中一個不會凍住其他的。這種順暢的共存正是作業系統在運作:在幕後切分 CPU、分派記憶體、並仲裁裝置。
作業系統讓一台共享的機器,對每個程式都表現得像是專屬於它。
常見的混淆:作業系統不是桌布、開始功能表或應用程式商店——那些只是隨附的程式。真正的作業系統主要是核心,加上一組你從不直接看見的系統服務。