6.3操作係統
操作係統是管理和控製計算機係統硬、軟資源與運行程序的係統軟件,它是用戶和計算機間的接口,並提供了軟件的開發環境和運行環境。因此操作係統是係統軟件的核心,對於計算機係統非常重要。下麵我們從幾種角度進一步解釋上麵的提法。
在現代計算機係統中,硬件設備與軟件日益豐富,對用戶來說他們是一些可用的資源。如果要求用戶.對所有的硬軟件細節都很清楚,才能很好地使用計算機,那顯然是不現實的。因此設計者編製了操作係統這種綜合管理軟件,將計算機係統的硬軟資源,以及用戶的程序,都置於操作係統的管理之下,而用戶則通過操作係統來使用和操縱計算機。為此,精心設計計算機與用戶之間的界麵關係,也就是用戶以哪些方式、使用哪些命令,來操縱計算機。例如用戶可以使用一組鍵盤命令,啟動與控製計算機,調用設備,調用文件(程序與數據)等,而操作係統則負責接收並解釋執行這些命令。所以我們說:操作係統是用戶與計算機之間的接口。
在開發軟件時,需要使用在操作係統管理下的係統,調用有關的工具性軟件及其他軟件資源。例如在IBM-PC機上開發軟件時,首先得啟動運行操作係統PC-DOS,在DOS管理下進行程序的輸入與修改,調用由DOS所支持的一些軟件,幫助開發調試,使用DOS管理下的CRT顯示器與打印機。所開發出的程序被視為由DOS管理的一個文件,將來以文件的形式被調用執行。所以我們說:操作係統提供了軟件的開發環境與運行環境。當我們進行一項開發時,首先要問:是在哪種操作係統環境下進行開發?當我們要使用某種保存在軟盤片中的軟件時,也要考慮:這個軟件需在哪種操作係統的支持下才能運行?並不是任何一種軟件可在任何一個係統上運行。
為了充分發揮計算機係統的潛力,提高它的工作效率,應當盡可能合理地利用係統中各種硬、軟資源,例如GPU的合理調度,存儲空間的充分利用與有效管理,各種外圍設備的調用,盡可能使多種任務與操作能並行地進行,等等。因此,操作係統的設計著眼於一個核心問題:提高係統的效率。與一般的管理程序不同,操作係統有以下二個重要的特點。
(1)動態性
操作係統應能動態地管理各種硬、軟設備。如果隻是在程序執行之前作好調度安排,運行中不再改變,稱為靜態調度管理。而操作係統應能對程序運行中出現的各種情況作出反應,針對出現的變化情況進行調度管理,即所謂動態管理。
(2)並發性
操作係統應能協調控製大量的、可並發執行的程序段。後麵將要解釋,在大型係統中常采取一種多道程序、處理方式,同時運行若幹用戶程序;在多終端係統中采取一種分時工作方式,使幾個終端可以同時工作;既使在一般係統中,也盡可能地CPU工作與I/Q操作並發地執行。
上麵這二點,是一個完善的操作係統所具有的重要特點。對一些比較簡單的操作係統,可能隻是部分地具有上述特色。
一、操作係統的出現與類型
操作係統是隨計算機技術的發展應運而生的,我們先概述一下計算機工作方式沿幾個方向的演變情況,由此對操作係統提出的要求,導致產生的操作係統分類情況。
計算機係統發展的基本方向,是想方設法提高處理效率,但是它麵臨著兩個主要的矛盾。(1)高速CPU與慢速外圍設備、慢速人工操作茗間的矛盾,在采用高速大規模集成電路之後,CPU的功能日益強大,速度提高較快。但大多數外設備由於其機電性操作,速度提高相對較慢,例如磁盤、磁帶、打印機中的電機旋轉速度提高不多,機械動作較慢等。程序輸入時,人的按鍵速度有限,很難與高速的主機相匹配。如此等等,導致人們不得不在運行方式上想辦法,例如采取脫機輸入、批量處理、中斷方式等技術。這就要求操作係統提供相應的調度管理。(2)硬、軟資_日益豐富與調度管理之間的矛盾。如前所述,計算機係統中可連接多台各種類型的外圍設備,他們在結構、原理與操縱方式上往往相差甚大而各種各樣的軟件更是滾雪球般地增長。一方麵,這導致係統功能的不斷增強,另一方麵對調度管理提出了越來越高的要求。
在電子管計算機時代,CPU速度很慢,存儲容量很小,所帶的外圍設備也很少。當時使用機器語言和彙編語言編製程序,除了用戶程序之外,其他軟件資源也很少。用戶通過控製台上有限的開關操縱計算機,被稱為手工操作階段。不用說還沒有操作係統,連管理程序都還沒有。
到了晶體管計算機時代,出現了磁帶、磁鼓等外存儲器,主機速度提高,存儲容量增大,軟件開始豐富起來,出現了高級程序設計語言和相應的編譯程序。管理調度的任務變得重要起來,於是出現了管理程序。
當集成電路計算機出現後,計算機性能有了重大突破,軟件迅速發展,調度管理任務更為重要,也更為複雜。於是管理程序逐漸發展成為操作係統,並隨著計算機技術的發展,而日趨成熟,功能豐富。
現在,計算機係統的運行方式大致有以下幾類,相應地,操作係統也可大致分為這些類:
1.多道程序方式與批處理方式
為充分發揮高速CPU的運行效率,解決與慢速I/O操作、慢速人工操作之間的矛盾,對於大量計算與數據處理一類的任務,可采取批處理的工作方式。用戶將需要執行的程序和敦據,以“作業”為單位進行組織,用一種作業控製語言寫出作業說明書。然後將作業與作業說明書穿成卡片,或先輸入到軟盤片中,這是在脫離主機情況下進行的作業準備,可稱為脫機輸入方式,它不占用CPU的寶貴時間,使慢速的手工輸入操作,盡可能不影響高速CPU的處理。係統操作員在適當的時候,將這些卡片或軟盤上的信息送入計算機係統,也就是將若幹個用戶的程序、數據,連同作業說明書,一起送人係統,這時才使用聯機輸入方式。作業送入係統之後,就置於操作係統管理之下,操作係統將動態地為各個作業分配CPU與主存儲器空間,以及其他資源,直到這些作業完成。在運行過程中,不讓或是基本不讓用戶與機器相互作用,使工作過程高度自動。這種先在脫機方式下準備好多個用戶作業,然後聯機批量處理的方式,是充分利用CPU的一種有效方法。
如上所述,在計算機係統中可能有幾個程序都需要運行,如果係統中隻有一個CPU,怎麼安排呢?簡單的作法是讓這些程序逐個地執行。但如果其中的某個程序,由於等待鍵盤輸入或等待磁盤輸入一類原因,暫時不能運行,這時是讓CPU等待?還是先執行另外的程序?一種合理的選擇是采取多道程序運行方式,即在操作係統控製之下,將多個作業排隊,從中選擇一個作業運行;當這個作業因某種原因暫時不能執行時,就將它掛起,轉去執行另一作業;當被掛起的作業重新具備運行條件時,又提出申請,等待操作係統為它分配CPU,然後重新運行。如果操作係統來采取恰當的調度策略,這種多道程序方式就能大大提高CPU的運行效率。
有的係統采取單道程序批處理方式,即逐個地執行多個作業3有的係統采取多道程序批處理方式,這是多道程序方式與批處理方式的結合,常見於大型計算機係統中。相應地有單道程序批處理型操作係統,及多道程序批處理型操作係統。
2.分時係統
批處理方式要求盡量避免處理過程中的人機交互作用,但是有許多類型的工作又需要以交互方式進行,即用戶頻繁地向係統提出要求,發出命令,係統也相應地作出響應,提出詢問,給以提示。對於這種類型的工作,又如何提高CPU的效率呢?一種方法是讓主機帶有多台終端,這就從單用戶方式發展為多用戶分時工作方式。
仔細分析一下人機對話過程就會發現,由於人工操作很慢,CPU常處於等待鍵盤輸入狀態。為什麼不利用這段等待時間,讓CPU處理其他終端用戶的任務呢?因此,利用高速CPU與低速終端操作之間的速度差別,我們可以采用分時工作方式。分時操作係統采取某種分時管理策略,例如將工作時間分成若幹時間片,讓多個終端用戶輪流占用CPU,每個終端用戶分用一個時間片,時間片結束,轉由另一終端用戶占用CPU。隻要CPU速度夠快,就可以在分時操作係統的支持下,掛接多個終端。