1.2 操作系統的發展歷史
在計算機剛剛誕生的20世紀40年代,計算機系統僅由硬件和應用軟件組成。在這一時期,整個計算機系統是由用戶直接控制使用的,所以又稱為“手工操作”階段。當時的計算機不僅速度慢、存儲容量小,而且外部設備簡單,輔存主要借助磁帶,如圖1.2所示,整個計算機系統由單個用戶獨占使用。當時用戶使用計算機的大致方法是:將程序和數據以穿孔方式記錄在卡片或紙帶上,把卡片或紙帶裝在輸入設備上;然后在控制臺上形成輸入命令,啟動設備將卡片、紙帶信息或磁帶上的信息輸入到指定的主存單元;接著在控制臺上指定主存啟動地址,并啟動程序運行;最后在打印機等輸出設備上取得程序運行的結果。

圖1.2 早期計算機系統
顯然,在這種使用方式下,用戶在上機時獨占全部資源,使用機器語言編寫程序,且對計算機各部分的工作直接實施人工干預,或者由用戶自己所寫的程序控制。在硬件各部分速度較低且程序量較小的情況下,這種方式還能被人們所接受。但是,隨著計算機速度的提高和FORTRAN,COBOL等高級程序設計語言的問世,這種方式勢必使人無法忍受。
例如,用戶如要想運行一個用FORTRAN語言編寫的程序,必須首先把存有FORTRAN編譯程序的磁帶安裝在磁帶機上,將FORTRAN編譯程序和用戶編寫的FORTRAN源程序調入主存,并對FORTRAN源程序進行編譯;然后再安裝磁帶上的“連接程序”,對編譯好的程序進行連接,形成目標程序;最后啟動目標程序運行。
由此可見,由于一批包括語言編譯器在內的系統軟件的問世,使用戶上機過程變得更繁雜,并增加了程序運行前的準備時間。由于計算機速度的提高,上述人工操作勢必造成更大的資源浪費。為了縮短運行前的準備時間,提高計算機資源的利用率,人們提出了簡單的改進措施,引入了“系統操作員”的概念。各用戶將自己的程序及程序的運行步驟(控制意圖)交給系統操作員,系統操作員將這種形式的一批用戶作業按類進行劃分,每次處理一類作業。
例如,將需要進行FORTRAN編譯程序的作業組織成一類依次進行編譯,并由系統操作員控制計算機運行用戶程序。當然,這種使用計算機的方法仍舊停留在手工操作階段,人的操作速度與機器運行速度相比仍存在極大的差距。由于人的操作緩慢,使得計算機資源大部分時間閑置,因此急需用程序來代替人的手工操作。
1.2.1 監督程序
20世紀50年代,為了減少系統操作員工作所花的時間,提高資源利用率,人們開始利用計算機系統中的軟件來代替系統操作員的部分工作,從而產生了最早的操作系統——早期批處理系統。
1.批處理系統
批處理系統的基本思想是:設計一個常駐主存的程序(監督程序Monitor),操作員有選擇地把若干用戶作業合成一批,安裝在輸入設備上,并啟動監督程序。然后,由監督程序自動控制這批作業運行。監督程序首先把第一道作業調入主存,并啟動該作業。一道作業運行結束后,再把下一道作業調入主存啟動運行。待一批作業全部處理結束后,系統操作員則把作業運行的結果一起交給用戶。按照這種方式處理作業,各作業間的轉換以及各作業的運行完全由監督程序自動控制,從而減少了部分人工干預,有效地縮短了作業運行前的準備時間。
所謂作業(Job),是用戶在一次上機活動中要求計算機系統所做的一系列工作的集合。從執行的角度看,作業由一組有序的作業步組成,如“編譯”、“運行”分別稱為不同的作業步。
當監督程序取代系統操作員的部分工作后,用戶應以某種方式告知監督程序其作業的處理步驟。因此,在早期批處理系統中引出了“作業控制語言”和“作業控制說明書”的概念。作業控制說明書是利用作業控制語言編寫的,用以控制作業運行的一段描述程序。在組織一道作業時,通常將“作業控制說明書”放在被處理的作業前面(或插入適當位置),監督程序則通過解釋執行“作業控制說明書”中的語句來控制作業運行。典型的卡片作業結構如圖1.3所示。

圖1.3 典型的卡片作業結構
這疊卡片中某些卡片表示了作業控制語句,監督程序通過逐條解釋、執行該說明書中的作業控制語句自動控制作業運行。$JOB語句說明該作業的名字,預計最大執行時間等信息。監督程序解釋$FORTRAN語句的結果是把FORTRAN編譯程序調入主存,并啟動編譯程序編譯后面的源程序。編譯結束后,控制返回到監督程序。監督程序解釋$LOAD語句的結果是通過連接程序把經過編譯的程序連接起來,形成可執行程序。最后解釋$RUN語句,從而啟動可執行程序運行。
監督程序內專設一個作業控制程序(Job-Controller)以控制作業的運行。批處理作業的控制意圖描述在“作業說明書”中。作業控制程序在控制某一道作業運行時,其實質性工作是解釋執行“作業說明書”中的語句,實現對作業的控制。從邏輯上看,一個作業由三部分組成:源程序(或程序)、數據及“加工”步驟。監督程序一旦接收到一道作業后,根據“加工”步驟所規定的動作逐步完成對作業的加工活動。
如果用戶可以使用全部的機器指令,可以直接控制和使用系統資源(如主存、外部設備等),用戶編程中的錯誤往往可能導致各種預想不到的后果。為了避免這類錯誤發生,人們將機器指令分為“普通指令”和“特權指令”,并且引入了“模式/態(Mode)”的概念。把有關I/O的指令、對特殊寄存器的訪問等列為特權指令,并且規定只有監督程序才有權執行特權指令,用戶程序則只能執行普通指令。將I/O指令列為特權指令后,用戶便不能直接控制設備進行傳輸了。如果用戶希望進行I/O操作,則必須向監督程序提出請求;監督程序通過調用系統內部的程序段來完成用戶的I/O請求。由此又引出了“系統調用(System)”或稱“廣義指令”的概念。
監督程序為用戶提供一系列分別完成各種不同功能的系統調用程序段。用戶程序中可以用一條特殊的硬件轉移指令請求一次特定的系統調用。當處理機執行到用戶程序的系統調用指令時,硬件通過產生“自陷(trap)”并借助轉換機制將當前的用戶模式轉變為監督模式,控制也隨之轉入監督程序。監督程序根據用戶提供的調用參數進行相應的處理,完成設備I/O等功能。處理結束后,監督程序則根據“自陷”前所保存的現場將模式改變為用戶模式,退回用戶程序繼續執行。
“系統調用”概念的引入提高了監督程序在整個系統中的地位,豐富了監督程序的功能。監督程序不僅對作業的處理流程進行自動控制,而且還負責為用戶程序的運行提供各種功能的服務。“系統調用”的引入也為用戶提供了使用計算機系統的新界面,使用戶從直接使用物理處理機的繁雜束縛中解脫出來,呈現在用戶面前的是一臺功能強、使用方便的虛擬處理機。引入“系統調用”后,用戶對系統內部各種資源的使用均由監督程序代為完成,因而也使系統更加安全,避免了用戶在自編程使用資源時可能出現的某些錯誤,也有利于提高資源利用率。
在手工操作階段,存儲器全部由用戶支配使用。引入監督程序后,存儲器不再由用戶獨占,常駐主存的監督程序必須占據部分主存空間。通常,監督程序占用主存的0~k單元,k+1~n單元供用戶程序占用。監督程序所在的存儲空間稱為“系統空間”,用戶程序所在的存儲空間稱為“用戶空間”。為了避免用戶程序執行時有意或無意地對系統空間進行存取訪問,硬件提供一個界地址寄存器,用以存放系統空間與用戶空間的分界地址。當系統處于用戶模式時,每訪問一次主存,硬件自動進行地址越界檢查,從而保證了監督程序不被破壞。這種保護稱為“存儲保護”。
在早期批處理系統中,當系統動態運行時,一段時期處于監督模式,一段時期又處于用戶模式。從用戶模式進入監督模式主要是由用戶程序中的系統調用而引起的。例如,用戶請求設備I/O或請求結束運行。但是,若用戶程序執行過程中永不出現系統調用,或者永不出現請求結束運行的系統調用(如用戶程序進入了“死循環”),系統監督程序便失去了作用。為了防止這種情況發生,人們設置了“定時器中斷”。
定時器(Timer)是一個硬件計數器,計時長度可以根據需要而調整。計數器根據硬件的計時周期自動計時,計數器滿后便發生定時器中斷。用戶程序執行時若碰到定時器中斷,則無條件進入監督程序。監督程序根據當前作業說明(或規定)的“最大運行時間”值來判斷該程序是否進入了“死循環”,從而可以有效地防止某個用戶程序長期壟斷系統處理機的現象。
引出上述概念后,早期批處理系統中的監督程序工作流程如下:
(1)判斷輸入設備上是否有待輸入的作業,如果沒有,則等待作業輸入。
(2)從設備上輸入一道作業。
(3)控制作業運行。
① 取“作業說明書”中的一條語句,解釋執行。如果是一條“作業終止”語句,則刪除該作業,轉第(1)步。
② 如果當前是一條“執行性語句”(如請求編譯、請求運行用戶程序等),則在主存中建立相應程序的運行環境,并分配CPU,開始在用戶模式執行該程序。
③ 在用戶模式的程序執行過程中,如果發生“中斷”事件(如I/O中斷、系統調用、程序執行錯誤等),硬件將控制轉入監督程序。當“中斷”事件處理結束后,返回用戶態,用戶程序繼續執行。
④ 用戶程序執行結束后,進入監督程序,控制轉步驟①,取下一條“作業說明書”語句執行。
監督程序如同一個系統操作員,它負責批作業的I/O,并自動根據“作業控制說明書”以單道串行的方式控制作業運行,同時在程序運行過程中通過提供各種系統調用,控制使用計算機資源。雖然監督程序并不能被稱為操作系統(它與操作系統的本質差別在于監督程序不具有并發控制機制),但它與操作系統有許多相似的特征。監督程序在系統中的地位和作用、實現的基本目標及管理資源的基本方法與操作系統類似。真正的操作系統就是在此基礎上進一步發展和完善起來的。
與手工操作階段相比,監督程序的引入有效地減少了人工干預時間和作業運行前的準備時間,相對提高了CPU的利用率。但是,在計算機速度大幅度提高的形勢下,用這種方法管理計算機遠不能適應需要。首先,在一個CPU上運行的程序啟動I/O操作時CPU被迫處于空閑狀態或忙等待(Busy_Wait)狀態,也就是說,CPU啟動I/O操作后在循環判斷I/O是否完成,而沒有做實質性工作,這將導致高速的CPU受到慢速設備的牽制,從而使CPU無法充分利用。
2.利用脫機I/O改善系統性能
由于作業的I/O與作業的運行是串行的,所以受卡片機、光電機、打印機等慢速I/O設備的影響,CPU的利用率難以提高。為了進一步提高系統的工作效率,必須解決低速I/O的問題。磁帶機的傳輸速度比卡片機、光電機和打印機的速度快,若用磁帶機代替這類低速設備便可進一步縮小CPU與外設間速度上的差異。歷史上人們曾采用脫機I/O技術實現作業I/O,其系統模型如圖1.4所示。

圖1.4 脫機I/O系統模型
在采用脫機I/O技術的系統中,主機的所有I/O操作都是通過磁帶機進行的。用戶的作業由另一臺能力較弱、價格較低的衛星機負責從卡片機傳輸到磁帶上(稱為輸入帶),然后操作員將輸入帶安裝到與主機相連的磁帶機上。主機在處理輸入帶上的作業時,將產生的輸出結果直接送到輸出帶上。操作員再將輸出帶安裝到衛星機上,由衛星機負責將輸出帶上的信息從打印機上輸出。由于磁帶機比慢速I/O設備(如卡片機、打印機)的速度快,因而按照這種脫機方式控制作業的I/O,可以減少作業I/O所花的時間,有效地提高CPU的利用率。如果將一臺主機與多臺衛星機有機地組合,使速度得到最好的匹配,則可以大幅度提高系統的處理能力。從20世紀50年代末到60年代初,這種脫機處理方式被廣泛地應用于批處理系統中。
無論如何,由于CPU與I/O設備是以串行方式工作的,也就是說,當CPU工作時,I/O設備閑著;當I/O設備工作時,CPU在忙等待,這就限制了設備的利用率。另外,從方便用戶的角度來說,采用這種批量處理的控制方法,用戶不能以交互方式使用計算機,從而限制了對計算機的靈活使用。隨著對這些問題不斷深入的研究和解決,逐步形成了第2代操作系統。
1.2.2 專用操作系統
20世紀60年代初,計算機硬件有了很大的發展。例如,主要元件由電子管變成了晶體管,出現了磁盤、通道、終端等部件。而這些硬件的發展為監督程序提出了新的研究課題,也為操作系統的形成提供了重要的物質基礎。這一時期是操作系統形成的重要時期。隨著計算機應用的巨大牽引,不僅批處理系統得到充分的發展,而且還出現了實時(Real Time)、分時(Sharing Time)等不同類型的系統。
1.多道批處理系統
在早期批處理系統(也稱單道批處理系統)中,CPU與I/O設備以串行方式工作,故兩者的利用率較低。為了提高資源利用率,人們開始使用I/O緩沖、SPOOLing等技術,尤其是引入了“多道程序設計”(Multiprogramming)的思想,使單道批處理系統發展為多道批處理系統。
(1)利用I/O緩沖異步編程
在單道批處理系統中,作業的處理過程是單道串行的,所以在監督程序的控制下CPU與外設也按串行方式工作。為改變這種串行工作方式,人們首先采用了緩沖(Buffering)技術使兩者在一定程度上并行操作。
例如,在主存中建立兩個長度相同的緩沖區:B0,B1。對于一批待輸入的信息,首先將其中的一個記錄從設備上讀入B0,讀完后接著將下一個記錄從設備上讀入B1,與此同時,CPU開始處理B0中的記錄。待CPU處理工作與輸入工作均結束后,則將下一個記錄讀入B0,CPU同時處理B1中的記錄。如此重復直至將信息全部輸入,這種利用雙緩沖區實現的I/O操作在一定程度上實現了CPU與外設并行工作。這類并行的實現要求I/O設備有較強的功能,能不依賴于CPU實現外設與主存獨立交換數據,在引入通道技術后這個緩沖技術得到了廣泛應用。
(2)SPOOLing技術
通道技術的引入,使CPU與外設并行操作成為可能。
通道是指專門用來控制I/O的硬件裝置,可以實現外設與主存直接交換數據,在相當長的時間里不用打擾CPU,因此這時CPU可以去干別的事情。為了能夠消除脫機I/O帶來的人工干預的麻煩,又要保持脫機I/O系統中作業高速入出主存的特點,人們借助通道和磁盤成功地實現了著名的SPOOLing系統。通道也可看成是專門的I/O處理機,磁盤則是一種比磁帶更快且能夠隨機存取的輔助存儲設備。
SPOOLing(Simultaneous Peripheral Operation On Line)的含義是并發的外部設備聯機操作。用SPOOLing技術控制批處理系統中作業I/O(如圖1.5所示)的基本思想是:用磁盤(或一組磁盤)設備作為主機的直接I/O設備,即系統直接從磁盤上選取作業運行,作業的運行結果也直接存入磁盤,相應的通道(在設備驅動程序驅動下)則負責并行地將卡片機上的用戶作業輸入到磁盤,或者將磁盤中作業的運行結果從打印機上輸出。

圖1.5 SPOOLing技術控制批處理系統中作業I/O
通道直接受主機控制,主機與通道之間借助中斷機制相互通信。例如,只要卡片機上有用戶作業,操作系統便啟動設備通道,通道被啟動后便將作業依次地通過主機主存傳輸至磁盤,在作業輸入期間主機可以并行地從事其他工作。類似地,只要磁盤中存在等待輸出的信息且打印機空閑,則操作系統通過啟動通道將信息從打印機上輸出。所以,SPOOLing技術又被稱為“偽脫機I/O”技術,被廣泛地用于后來的批處理系統中。采用SPOOLing技術實現I/O的系統通常又簡稱為SPOOLing系統。SPOOLing技術為實現多道批處理系統中的多道程序設計思想提供了重要的基礎。
(3)多道程序設計技術
如前所示,人們采用SPOOLing技術,利用主機和通道間的并行性,可以使作業的I/O與主機運算并行,提高了系統效率。當在主機上運行的某一道作業需要傳輸大量數據時,人們可以采用緩沖技術來獲得一定程度上的并行。盡管如此,由于系統中作業之間仍以串行方式被處理,即主存任何時刻至多保持一道作業,處理完一道作業后再從外部選取另一道作業,所以無法進一步提高資源(如CPU、主存等)的利用率。為了從根本上解決這一問題,人們提出了“多道程序設計”技術。
多道程序設計技術的基本思想是,在主存同時保持多道程序(作業),主機(對于單CPU系統,書中如沒有特殊說明則都是單CPU系統)以交替方式同時處理多道程序。
所謂多道程序,從宏觀上看,是指主機內同時保持和處理若干道已開始運行但尚未結束的程序。而采用這種多道程序設計技術的系統被稱為多道程序設計系統。
由于任何一道作業的運行總是交替地串行使用CPU、外設等資源,即使用一段時間的CPU,然后使用一段時間的I/O設備,如圖1.6所示,所以如果采用多道程序設計技術,加之對多道程序實施合理的運行調度,可以大大提高CPU與外設的利用率,使兩者高度并行工作。
如圖1.7所示,是三道作業同時運行時CPU與外設的利用情況。當作業A因請求I/O而放棄CPU時,操作系統為作業A啟動相應通道(由通道獨立地控制I/O)后,便把CPU重新分配給作業B,此時CPU與外設并行工作。類似地,當作業B也請求I/O時,CPU則重新分配給作業C。依此類推,只要系統能保持足夠道數的作業,再加上合理的調度,便可能使CPU與I/O設備獲得高度的并行。采用多道程序設計技術無疑大大提高了主存及其他資源的利用率。

圖1.6 單作業執行過程

圖1.7 多道作業執行過程
引入多道程序設計技術無論對于實現多道批處理系統還是實現交互式、分時乃至實時系統均提供了重要的技術手段。多道程序設計系統的出現標志著操作系統的形成。
操作系統的最基本特征如下:
① 并發(Concurrent)機制,用以支持多道程序設計技術。
② 共享(Sharing)機制,控制各種并發活動正確共享系統軟、硬資源。
正是由于這兩個特征使得操作系統變得極其復雜。
利用上述論及的各種技術,特別是多道程序設計技術,便將早期的單道批處理系統發展成了多道批處理系統。多道批處理系統的基本特征是:系統按照成批(或稱批量)的形式輸入用戶作業,并采用SPOOLing技術和多道程序設計技術控制多道作業運行。
2.分時系統
多道批處理系統的出現有效地提高了系統資源的利用率,但卻失去了手工操作階段的“交互性”優點。也就是說,使用多道批處理系統的用戶必須將其作業的控制意圖完全地描述在“作業控制說明書”中,用戶一旦把作業交給了系統,便不能再以“會話”方式控制作業運行了,所以使用戶在一定程度上感覺不便。
首先,用戶的算題周期延長了,用戶向機房提交的作業往往需要幾經反復才能獲得所需結果(對一個新程序尤其如此);其次,程序運行過程中失去了人的主觀能動作用。
按照手工操作方式算題,程序員可以觀察程序的運行情況,一旦發現錯誤便可以隨時設法改正。特別是對一個給定的數學模型,當需要觀察不同參數對其產生的影響時,尤其需要交互式環境。“方便用戶”是操作系統追求的重要目標之一,所以在這一階段很快出現了以多道程序設計技術為基礎的交互式系統,即“分時系統”。
由于控制臺和打印機這類外設作為交互作用的人-機接口設備極不方便,因此當時作為理想的人-機接口設備的終端設備便應運而生。
終端是集I/O能力為一體的設備,在此設備基礎上,系統為用戶提供一組終端命令,操作系統中增設了一個命令解釋程序。用戶可以在終端上通過命令與系統交互,從而產生了交互式系統。將交互式系統與多道程序設計系統相結合便形成了分時系統。
在分時系統中,一臺計算機與多臺終端相連接,用戶通過各自的終端和終端命令以交互方式使用計算機系統。系統使每個用戶都能感覺到好像自己在獨占計算機系統,而在系統內部,操作系統負責協調多個用戶分時共享CPU,這便是所謂“分時”的含義。
在協調用戶分享CPU時,操作系統通常采用“時間片輪轉”原則分配CPU給用戶程序。系統規定一個被稱為“時間片”的時間單位,所有終端用戶輪流享用一個時間片的CPU時間。例如,若有n個用戶,時間片大小為Q,則每個用戶在nQ的時間內至少能使用Q個時間單位的CPU。由于CPU的速度比人在終端上輸入命令的速度快很多,因此用戶似乎感到CPU被自己所獨占。
分時系統的基本特點如下:
① 并發性。系統能協調多個終端用戶同時使用計算機系統(即系統內部具有并發機制),能控制多道程序同時運行。
② 共享性。對資源而言,系統在宏觀上使各終端用戶共享計算機系統的各種資源,而在微觀上它們則分時使用這些資源。
③ 交互性。對系統和用戶雙方而言,人與計算機系統以對話方式進行工作。
④ 獨立性。對用戶而言,系統能使用戶有一種只有他自己在使用計算機的感覺。
顯然,前兩個特點(即并發和共享)是各類操作系統所共有的基本特征,而后兩個特點是分時系統所獨有的特點。
交互式作業是指在分時操作系統中用戶通過終端和系統提供的終端命令指導上機的過程,用戶的一次交互使用機器的過程被看成是交互式作業。交互式作業的提交形式與批處理作業不同。用戶登錄代表了用戶交互作業的生成,用戶動態地向系統提交作業步,每完成一個作業步的動作,系統便給出相應的回答信息,用戶繼續提交下一個作業步,直至作業全部完成,用戶和系統以交互方式工作。分時系統上的交互式作業比批處理系統上的批處理作業在管理和控制方面要簡單些。
分時系統的一個重要設計是分時地為所有終端用戶服務,如在某終端用戶輸入命令的時候,處理機可能在處理其他終端用戶已經輸入的命令。為了保證交互的及時性,當分時系統的用戶動態提交作業步時,系統必須立即響應并處理每一個作業步的動作。對終端用戶通過終端提交的作業步,系統必須加以識別并立即解釋執行。為此,系統設有命令解釋程序,由它解釋終端所輸入的命令。如圖1.8所示是分時系統運行環境。

圖1.8 分時系統運行環境
3.實時系統
隨著計算機的不斷普及和發展,計算機的應用領域日益擴大。20世紀60年代后期,計算機已廣泛應用于工業控制、軍事控制及商業事務處理等領域。這類新出現的應用領域對計算機系統提出了新的要求,希望系統對來自外部的信息能在規定的時限內做出處理,我們稱之為實時處理。“實時”應用可分為兩類。
(1)實時控制
如將計算機用于飛行器的飛行自動控制。在這種應用中,計算機要對測量系統所測得的數據及時處理并及時輸出,以便對被控目標進行及時控制或向控制人員顯示結果。類似地,把計算機用于工業控制,如用計算機控制煉鋼,這時計算機要對傳感器定時送來的“爐溫”數據進行及時處理,然后控制相應的機構使得爐溫按照一定的規律變化或恒定不變。這類應用被稱為“實時控制”。這類系統必須確保及時,又稱強實時系統。現在諸多在各類控制系統的計算機上運行的“嵌入式操作系統”都屬于實時控制類實時系統。
(2)實時事務處理
這類應用是把計算機用于飛機訂票系統、銀行管理系統等。在這種應用中,計算機系統能對用戶的服務請求及時做出回答,并能及時修改、處理系統中的數據。這類應用被稱為“實時事務處理”。
所謂“實時”(Real Time),可以理解為立即、及時的意思,是指計算機的運算和處理時間與被控過程或事務處理所需的真實時間相適應。我們把面向這類實時應用的計算機系統稱為實時系統。雖然實時系統大都具有專用性,而且其種類、規模及對實時性的要求程度各不相同,但對于大、中型實時系統來說,絕大部分都以多道程序設計技術為基礎,所以在資源管理、并發控制等方面與其他類型的系統具有相同的基本特性。實時系統與其他類型系統的本質差別在于“及時性”,即實時系統應能及時地響應外部事件的請求并在嚴格規定的時間內完成對該事件的處理,控制實時設備和實時任務協調一致地運行。“高可靠性”也是實時系統的主要設計目標之一。為了提高實時系統的及時性和可靠性,軟、硬件都必須采用相應的措施加以保證。
實時系統的主要特征和功能如下:
① 時鐘分辨度高。有更高的時鐘中斷頻度,可實現更精確計時,可以更加頻繁地進入操作系統“處理機調度程序”運行,保證實時任務及時占用處理機,以此保證實時任務的快速響應。
② 支持可剝奪任務調度。保證實時任務無條件剝奪非實時任務運行,不會讓非實時任務耽誤實時任務。
③ 多級中斷機制。保證實時任務對應的事件中斷為高級,例如,在計算機控制的煉鋼系統中,能對傳感器“爐溫”數據采集設備對應的中斷進行及時處理,允許它的中斷打斷其他諸如鍵盤中斷等低級中斷的處理程序。
20世紀60年代是操作系統不斷成熟、蓬勃發展的重要時期,不僅先后出現了多道批處理系統、分時系統和實時系統,而且操作系統的基本理論、原理、基本技術和設計方法也已日趨成熟。從本節的介紹中讀者不難看出,各種不同類型的系統均基于多道程序設計系統。故本書并未專辟章節具體介紹各類系統,而是以多道程序設計系統為核心介紹操作系統的基本理論、原理和設計方法。同時在具體討論各種資源管理的策略和方法時,對其所適用的環境也加以研究和分析。
1.2.3 多種方式操作系統
20世紀60年代中期,隨著計算機集成電路和操作系統的飛速發展,用戶對計算機和操作系統的要求不斷提高,一旦一個新的具有更高性能的機器問世,用戶便紛紛聚集在新機器的周圍。新機種的不斷出現,一方面滿足了用戶的需要,另一方面也給用戶帶來了某些不便,這是因為用戶使用新機器勢必舍棄在老機器上已通過的程序。而隨著應用廣度與深度的不斷擴展,原有軟件已成為一筆巨大的財富。對此,IBM公司首先推出了系列機概念。
所謂系列機就是同一系列的機器中新型號的機器能與老型號的機器兼容,這樣用戶既可以立即使用更高級的機器,又能在新機器上繼續使用原有的程序,兩全其美。為了滿足用戶的需要,計算機也被設計成容量大,功能全,幾乎提供用戶需要的所有功能的通用計算機。與這種形勢相適應,第三代操作系統被設計成多種方式操作系統,即一個操作系統既能處理批量作業,也能處理分時、實時等作業。這類系統的典型代表是UNIX、VMS(DEC VAX機器上的操作系統)操作系統。
多種方式操作系統不僅給用戶提供了很大方便,而且對計算機資源的利用也更為合理。在單方式系統中,可供運行的作業類型受到限制,而多種方式系統能處理任何類型的作業,可將各種類型的作業合理搭配,系統更容易達到飽和狀態,從而更加有利于提高資源的利用率。
1.2.4 PC操作系統、并行與分布式操作系統及發展
20世紀80年代初,計算機已十分普及,特別是個人計算機已開始進入千家萬戶,人們對計算機的使用要求更高了。這時,人們不僅僅滿足于在計算中心使用計算機,并且要求在辦公室、家中也能方便地使用計算機并能夠交換信息。這促進了計算機網絡的發展,人們把許多計算機連成網絡,在網絡中的計算機可以相互通信,共享軟、硬件資源,從而可以讓用戶通過多種多樣的終端或工作站訪問遍布各地的計算機網絡。網絡的出現給計算機的發展和應用帶來了動力,同時也給操作系統提出了新的問題。
為了能控制計算機網絡,人們提出了“分布式操作系統”(Distributed Operating System)的理想境界。在為分布式操作系統理想而奮斗的實踐中,網絡操作系統派生出來。1983年誕生的4.2BSD UNIX包含了對TCP/IP通信協議的支持,它是網絡操作系統的代表。分布式操作系統與傳統的操作系統有很多共同之處,但是它面臨著傳統操作系統所沒有遇到過的網絡中機間通信的問題。分布式操作系統在傳統操作系統的基礎上增加了許多機器定位、機間通信等方面的內容。
20世紀90年代以來,隨著共享主存的對稱多處理機系統的廣泛應用,“多機操作系統”也已經成熟。多機操作系統不同于單機操作系統,它支持多個處理機真正地并行運行多個程序。多機操作系統以支持并行多任務為其主要特征,充分發揮計算機中多處理機并行處理的優勢,在科學計算及高端事務處理服務器領域占有重要地位。
1985年,微軟公司受蘋果公司的Macintosh窗口式人機界面的影響,發布了基于DOS的Windows系統。以微軟公司的“Windows系列操作系統”為代表,以其特有的圖形化人機界面,為計算機被普通用戶所接受起到了決定性作用。這種操作系統以圖形顯示設備、鼠標、鍵盤等I/O外設為基礎,配備有相應圖形顯示驅動程序及窗口管理模塊,操作系統各種實用程序不再用文本行的I/O接口界面,取而代之的是圖形化的窗口界面,這使計算機更加接近大眾,更加快速地得到普及。
操作系統自形成以來,經過幾十年的發展,其基本原理和設計方法已趨于成熟。出現了許多得到廣泛公認的流行系統,如UNIX,Windows系統等。20世紀80年代后,隨著通用微處理器芯片的高速發展,個人計算機和工作站系統得到了迅猛的發展,強烈沖擊著傳統小型機和中大型機市場。相應地,微機及工作站上的操作系統獲得了快速的發展和應用(如Windows,Solaris,IRIX等)。從操作系統的發展歷史看,推動其發展的動力主要來自計算機系統的不斷創新和計算機應用的不斷深入。
當前操作系統還在不斷發展過程中,以下4個方面是發展的研究重點:
① 嵌入式操作系統的研究。主要伴隨著個人數字助理(PAD)、掌上電腦、電視機頂盒、智能家電、智能卡等設備的發展,對操作系統在功能和所占儲存空間大小權衡上、對實時響應和手持設備的交互界面都提出了新的要求。
② 強實時操作系統的研究。對操作系統的實時響應要求從來沒有停止過,要求計算機的最大響應時間越來越短,對任務調度時機、算法的要求越來越高。特別是針對通用操作系統的實時性研究還在不斷發展當中。
③ 并行操作系統的研究。隨著高性能通用微處理器的發展,人們已經成功地提出了用它們構造“多處理機并行”的體系結構,如基于共享主存的對稱多處理機系統(SMP)、多核系統。用成千上萬個微處理器實現基于分布式存儲的大規模并行處理機系統(MPP),這類被稱為巨型機的并行系統有著良好的發展前景。建立在這類并行機上的操作系統與傳統操作有明顯的區別,其突出特征是提供各類并行機制,如并行文件系統、并行I/O控制、多處理機分配和調度、處理機間的通信和同步、用戶任務的并行控制等。
④ 網絡操作系統和分布式操作系統的研究。計算機網絡系統和分布式系統已經深入人心。就目前情形而言,網絡系統也還在不斷完善當中,基于Client/Server模型的分布式系統也已不斷走向應用,完全分布式的系統還未成形,仍將是研究的熱點問題。另外,集群計算結構及網格結構的發展、新型網絡存儲的發展,給操作系統及其文件系統研究帶來了新的挑戰。