|
作業系統扮演的角色 |
|
|
一部運作正常的電腦,不論是超級電腦還是桌上型 PC ,大致上主要由三個部份所構成的,這三個部份分別是硬體,作業系統和應用程式。硬體,顧名思意,就是像 CPU ,硬碟等這些構成電腦的電子元件,而應用程式則是使用者利用來完成特定目標的程式,例如 ms word 是專門作文書處理的應用程式,netscape 是 brower 。應用程式是一個集合,代表所有執行於作業系統以上的軟體,基本上我們每天開機使用的都是一個又一個的應用程式。那作業系統又是什麼?作業系統位於幕後,是位默默耕耘的功臣,雖然不像硬體看得見,或是像應用程式可以直接使用,它卻影響整部電腦的效率甚巨。它的兩個最重要的任務是提供應用程式介面及資源管理。 控制硬體是件極複雜的事,以讀寫軟碟為例,必須啟動馬達,移動磁頭等等,如果開發應用程式須要包含硬體的控制,那麼難度馬上增加好幾倍,而且不同廠牌的硬體又會有不同的操作方法,等於對每一家硬體廠商須要重寫一次。還好,應用程式控制硬體的方式大同小異,以軟碟為例,不外乎格式化(format),讀出資料,寫入資料等少數幾個動作。把這些硬體的常用動作,寫成類似函式庫的形式,提供給應用程式呼叫,就是作業系統核心的主要任務之一。這些由作業系統核心提供給應用程式用的類函式統稱為系統呼叫(system calls),從此以後,應用程式不必再擔心軟碟的運作,它只須呼叫 system call 的 read 或 write ,它甚至不須要管它要寫入資料的是硬碟還是軟碟,使得應用程式的開發可以專心在它的特色功能上。 作業系統依特性可分為單工與多工,DOS 是一個單工的作業系統,單工作業系統的預設是,一個應用程式執行完畢後才會執行另一個程式,因此它允許應用程式可以無限制地使用系統的資源,例如 CPU 時間,記憶體和 IO 等等,這個應用程式甚至可以佔據系統,不再將主導權交回作業系統。這類單工的作業系統只須提供上述的系統呼叫便已足夠。而多工的作業系統,如 Linux ,它允許多個應用程式同時進行,共用 CPU 時間和記憶體,因此只提供系統呼叫的服務是不夠的,還必須做資源的管理,讓這些同時在執行的應用程式不會互相干擾,例如一個程式不能寫入另一程式的記憶體,才能確保這些應用程式都能順利地完成任務。 提供應用程式介面及資源管理並不是完全獨立的,而是相輔相成,因為當程式透過系統呼叫去存取 IO 或要求記憶體時,系統呼叫會呼叫作業系統,作業系統將所有來自程式的要求整合後,在滿足它們的要求時,也作資源管理。 一般多工作業系統可分為下列次系統:行程管理(為了簡單化,此處將行程和程式視為同義),記憶體管理,檔案系統,IO 及網路系統。這些次系統分別管理整部電腦的一些重要資源,行程管理是管理CPU時間的分配,其它的次系統從名字,即可得知它們所管理的資源。 |
|