基礎:作業系統是什麼

硬體與軟體的層疊架構

把電腦想成一疊層次會很有幫助:每一層都靠在下一層之上,並對上一層提供服務——就像建築的樓層。最底層是硬體:CPU、記憶體、磁碟與裝置,這是只能執行原始機器指令的實體機器。最頂層是使用者,以及他們執行的應用程式。作業系統是中間那關鍵的一層,而你做的幾乎每件事,都會順著這些層次往下流,再往上返回。

由上往下讀:使用者操作一個應用程式(比方說網頁瀏覽器);應用程式向作業系統索取它自己做不到的服務,例如讀檔案或把資料送上網路;作業系統透過它的核心驅動硬體真正去做工;硬體再把結果沿著層疊往上傳回。每一層只透過明確定義的介面與相鄰層對話——應用程式用系統呼叫介面去找作業系統,作業系統用裝置驅動程式與機器指令去找硬體。正是這種分層,讓你能替換上層或下層而不必重寫一切:新的應用程式跑在同一個作業系統上,同一個作業系統跑在新的硬體上。

把層次理清,是對初學者最具釐清力的一個觀念。許多混淆一旦你問「這東西屬於哪一層」就會煙消雲散:病毒通常是應用程式或核心層級的程式,而非硬體;驅動程式位於作業系統內部或旁邊;隨身碟是硬體,但以檔案抽象的形式呈現給你。邊界並非總是完全清晰——混合核心會模糊內部層次,虛擬化可以把整個客體作業系統疊在主機之上——但「硬體在下、作業系統居中、應用程式在上」這個心智模型,出奇地禁得起檢驗。

存檔的過程:文書處理器(應用程式)呼叫 write();作業系統核心把它轉成區塊寫入;磁碟控制器(硬體)真正把位元組存下;一個確認訊息沿著層疊往上傳回,讓應用程式為你顯示「已儲存」的勾號。四個層次,一次存檔。

請求沿著層疊往下流向硬體,結果再沿著層疊往上流回。

層次邊界是概念上的輔助,而非鐵壁。真實系統為了速度會跨越它們(資料庫可能自行管理快取),虛擬化更是刻意把作業系統疊在作業系統之上——但這個模型仍是最好的入門地圖。

又稱
the layered view of a computersystem layers電腦的分層觀點