有了程式的概念後,我們能用不同的程式,讓同一部計算機處理不同的任務。但是要執行一支程式的步驟有點繁瑣,例如早期會將程式使用打孔紙,打洞和沒打洞就表示 0 和 1,那每次要跑程式的時候,不就都要把打孔紙拿去放到機器上?加上隨著任務越來越複雜,我們可能會想要把程式 A 的結果輸入到程式 B,讓不同程式的輸入輸出結果能互相傳遞。於是漸漸發展出了作業系統。
作業系統提供方便的操作介面讓人使用,例如大部分人都會使用的圖形化介面,或是程式設計師常會使用的終端機,讓我們只要用滑鼠點擊,或是使用鍵盤輸入指令就能執行程式。
作業系統也負責管理程式的運行,當我們輸入指令執行程式時,作業系統會幫忙把我們指定的程式從儲存裝置上搬到記憶體上開始執行。當程式出問題時,作業系統會終止程式,把資源收回來,這樣才不會因為一支程式出問題,導致整台電腦當機(當然也是有例外的時候)。
作業系統也負責管理硬體,當一支程式要用到硬體資源,例如手機的相機 APP,通常會要跟作業系統發出請求才能使用。一方面硬體資源是所有程式共用的,作業系統要負責協調。另一方面作業系統可能有提供操作相機的程式介面方便 APP 使用,這樣寫 APP 程式時就不需要知道控制相機的細節。
作業系統本身也是程式,當我們按下開機鍵時,會從硬碟中讀出作業系統的程式,載入到主記憶體中,讓作業系統開始執行,接下來我們就能透過鍵盤滑鼠來操作,來執行程式。
所以說作業系統其實就是負責管理程式、硬體資源的程式。