基礎:作業系統是什麼

作業系統作為資源管理者

一台電腦能分配的東西就那麼多:通常只有少數幾個 CPU 核心、固定容量的記憶體、一顆磁碟、一張網路卡、一個螢幕。但你執行的數十個程式,每個都表現得彷彿自己獨佔整台機器。想像一間住滿廚師的房子裡只有一座共用廚房,每個人都想同時用爐子、流理台和水槽。沒有管理者就會一團亂——有人會霸著爐子不放。作業系統就是那個管理者:它決定誰使用每項稀有資源、何時用、用多久。

它管理三類資源。分時共享的資源,例如 CPU,會交給某個程式一小段時間,再收回交給下一個,速度快到讓一切看起來同時在跑(這就是排程)。空間共享的資源,例如記憶體與磁碟,被切成片段分派出去,作業系統追蹤每塊歸誰所有,避免兩個程式互相踩踏(這就是配置)。序列重用的裝置,例如印表機,一次只交給一位使用者,通常透過佇列排隊。作業系統記帳、授予與回收,並公平且安全地化解競爭。

這個角色解釋了本主題的大量內容。CPU 排程、記憶體配置、死結、磁碟排程,全都只是謹慎地進行資源管理。誠實的難處在於:沒有單一正確的策略——把公平最大化可能傷害產出率,偏袒互動式的反應靈敏可能讓背景工作飢餓。作業系統不斷在做取捨,而不同的作業系統做法不同——這正是伺服器作業系統與手機作業系統手感不同的原因之一。

在一台只有 4 GB 記憶體的機器上,兩個程式各要求 3 GB。它們無法同時擁有,於是作業系統把其中一個程式的部分資料留在磁碟上(置於置換空間),需要時再換回來,巧妙地調度有限的記憶體,讓兩者都能推進——雖然較慢,但行得通。

稀缺下的配置:沒人能獨得一切,但每個人都輪得到。

資源管理不等於把東西變快——它是關於安全且公平地共享。即使管理得完美,若底層資源根本不夠應付需求,系統仍可能很慢。