第一章:操作系統(tǒng)引論
計算機系統(tǒng)是由硬件和軟件兩部分組成。操作系統(tǒng)是配置在計算機硬件上的第一層軟件,是對硬件系統(tǒng)的首次擴充。
操作系統(tǒng)是一組控制和管理計算機的硬件和軟件資源,合理的對各類作業(yè)進行調(diào)度,以方便用戶使用的程序的集合。
1.1操作系統(tǒng)的目標和作用
1.1.1 操作系統(tǒng)的目標:
1)有效性:提高系統(tǒng)資源利用率;提高系統(tǒng)的吞吐量。
2)方便性:
3)可擴充性:
4)開放性:開放性是指操作系統(tǒng)能遵循世界標準規(guī)范,特別是遵循開放系統(tǒng)互聯(lián)(OSI) 國際標準。凡遵循國際標準所開放的硬件和軟件,均能彼此兼容,可方便的實現(xiàn)互連。
1.1.2 操作系統(tǒng)的作用:
1)OS 作為用戶與計算機硬件系統(tǒng)之間的接口:OS 處于用戶與計算機硬件系統(tǒng)之間,用戶通過 OS 來使用計算機系統(tǒng)。
①命令方式:這是指由OS 提供了一組聯(lián)機命令接口,以允許用戶通過鍵盤輸入有關(guān)命令來取得操作系統(tǒng)的服務(wù),并控制用戶程序的運行。
②系統(tǒng)調(diào)用方式:OS 提供了一組系統(tǒng)調(diào)用,用戶可在自己的應(yīng)用程序中通過相應(yīng)的系統(tǒng)調(diào)用,來實現(xiàn)與操作系統(tǒng)的通信,并取得它的服務(wù)。
③圖形、窗口方式:這是當前使用最為方便、最為廣泛的接口,它允許用戶通過屏幕上的窗口和圖標來實現(xiàn)與操作系統(tǒng)的通信,并取得它的服務(wù)。
2)OS 作為計算機系統(tǒng)資源的管理者
系統(tǒng)資源分為四類:處理器、存儲器、I/O設(shè)備、信息(數(shù)據(jù)和程序)。OS 的主要功能也正是針對這四類資源進行有效的管理,即:處理機管理,用于分配和控制處理機;存儲器管理,主要負責(zé)內(nèi)存的分配與回收;I/O 設(shè)備管理,負責(zé) I/O設(shè)備的分配與操縱;文件管理,負責(zé)文件的存取、共享和保護。
當一個計算機系統(tǒng)同時供多個用戶使用時,用戶對系統(tǒng)中共享資源的需求(包括數(shù)量和時間)可能發(fā)生沖突,為了更好的管理好這些共享資源(包括硬件和信息)的使用,操作系統(tǒng)必須記錄下各種資源的使用情況,對使用資源的請求進行授權(quán),協(xié)調(diào)諸用戶對共享資源的使用,避免發(fā)生沖突,并計算使用資源的費用等。
3)OS 實現(xiàn)了對計算機資源的抽象
對于一個完全無軟件的計算機系統(tǒng)(即裸機),它向用戶提供的是實際硬件接口(物理接口),用戶必須對物理接口的實現(xiàn)細節(jié)有充分的了解,并利用機器指令進行編程,因此該物理機器必定是難以使用的。
在裸機上鋪設(shè)的 I/O軟件隱藏了對 I/O 設(shè)備操作的具體細節(jié),向上提供了一組抽象的 I/O 設(shè)備。
OS 是鋪設(shè)在計算機硬件上的多層系統(tǒng)軟件,它們不僅增強了系統(tǒng)的功能,而且還隱藏了對硬件操作的細節(jié),由它們實現(xiàn)了對計算機硬件操作的多個層次的抽象。
1.1.3 推動操作系統(tǒng)發(fā)展的主要動力
1、不斷提高計算機資源的利用率
在計算機發(fā)展的初期,計算機系統(tǒng)特別昂貴,人們必須千方百計地提高計算機系統(tǒng)中各種資源的利用率,這就是 OS 最初發(fā)展的推動力。由此形成了能自動地對一批作業(yè)進行處理的多道批處理系統(tǒng)。
2、方便用戶
為了解決用戶在上機、調(diào)試程序時的不方便等問題,便形成了允許進行人機交互的分時系統(tǒng),或稱為多用戶系統(tǒng)。極大地方便了用戶使用計算機。
3、器件的不斷更新?lián)Q代
4、計算機體系結(jié)構(gòu)的不斷發(fā)展
單處理機系統(tǒng)發(fā)展為多處理機系統(tǒng),相應(yīng)的,操作系統(tǒng)也就由單處理機 OS 發(fā)展為多處理 OS。
當出現(xiàn)了計算機網(wǎng)絡(luò)后,配置在計算機網(wǎng)絡(luò)上的網(wǎng)絡(luò)操作系統(tǒng)應(yīng)運而生,它不僅能有效地管理好網(wǎng)絡(luò)中的共享資源,而且還向用戶提供了許多網(wǎng)絡(luò)服務(wù)。
1.2 操作系統(tǒng)的發(fā)展過程
1.2.1 無操作系統(tǒng)的計算機系統(tǒng)
1、人工操作方式
由程序員將事先已穿孔(對應(yīng)于程序和數(shù)據(jù))的紙帶(或卡片)裝入紙帶輸入機(或卡片輸入機),再啟動它們將程序和數(shù)據(jù)輸入計算機,然后啟動計
算機運行。當程序運行完畢并取走計算結(jié)果之后,才讓下一個用戶上機。
缺點:1)用戶獨占全機。2)CPU 等待人工操作。
人工操作方式嚴重降低了計算機資源的利用率,此即所謂的人機矛盾。為了緩和此矛盾,曾先后出現(xiàn)了通道技術(shù),緩沖技術(shù),但都未能很好地解決上述矛盾,直至后來引入了脫機輸入/輸出技術(shù),才獲得了較為令人滿意的結(jié)果。
2、脫機輸入/輸出方式
該技術(shù)是事先將裝有用戶程序和數(shù)據(jù)的紙帶(或卡片)裝入紙帶輸入機(或卡片機),在一臺外圍機的控制下,把紙帶(卡片)上的數(shù)據(jù)(程序)輸入到磁帶上。當CPU需要這些程序和數(shù)據(jù)時,再從磁帶上將其高速地調(diào)入內(nèi)存。
類似地,當CPU需要輸出時,可由CPU直接高速地把數(shù)據(jù)從內(nèi)存送到磁帶上,然后再在另一臺外圍機的控制下,將磁帶上的結(jié)果通過相應(yīng)的輸出設(shè)備輸出。圖1-3示出了脫機輸入/輸出過程。由于程序和數(shù)據(jù)的輸入和輸出都是在外圍機的控制下完成的,或者說,它們是在脫離主機的情況下進行的,故稱為脫機輸入/輸出方式;反之,在主機的直接控制下進行輸入/輸出的方式稱為聯(lián)機輸入/輸出(On-Line I/O)方式。
優(yōu)點:
1)減少了 CPU 的空閑時間。裝帶卸帶以及將數(shù)據(jù)從低速 I/O設(shè)備送到高速磁帶上,都是在脫機情況下進行的,并不占用主機時間,從而有效地減少了 CPU 的空閑時間,緩和了人機矛盾。
2)提高了 I/O 速度。當 CPU 在運行中需要數(shù)據(jù)時,是直接從高速的磁帶上將數(shù)據(jù)調(diào)入內(nèi)存的,不再是低速 I/O 設(shè)備上輸入,極大地提高了 I/O 速度,從而緩和了 CPU 和 I/O 設(shè)備速度不匹配的矛盾,進一步減少了 CPU 的空閑時間。
1.2.2 單批道處理系統(tǒng)
1.單批道處理系統(tǒng)的處理過程
把一批作業(yè)以脫機方式輸入到磁帶上,并在系統(tǒng)中配上監(jiān)督程序(Monitor),在它的控制下使這批作業(yè)能一個接一個地連續(xù)處理。
單道批處理系統(tǒng)是在解決人機矛盾以及 CPU 與 I/O 設(shè)備速度不匹配問題的過程中形成的。批處理系統(tǒng)旨在提高系統(tǒng)資源的利用率和系統(tǒng)吞吐量。
2、單道批處理系統(tǒng)的特征
1)自動性。在順利情況下,在磁帶上的一批作業(yè)能自動地逐個地依次運行,而無需人工干預(yù)。
2)順序性。在磁帶上的各道作業(yè)是順序地進入內(nèi)存,各道作業(yè)的完成順序與它們進入內(nèi)存的順序,在正常情況下完全相同,亦即先調(diào)入內(nèi)存的作業(yè)先完成。
3)單道性。內(nèi)存中僅有一道程序運行,即監(jiān)督程序每次從磁帶上只調(diào)入一道程序進入內(nèi)存運行,當該程序完成或發(fā)生異常情況時,才換入其后繼程序進入內(nèi)存運行。
1.2.3 多道批處理系統(tǒng)
1、多道批處理系統(tǒng)的基本概念
在該系統(tǒng)中,用戶所提交的作業(yè)都先存放在外村上并排成一個隊列,稱為“后備隊列”;然后,由作業(yè)調(diào)度程序按一定的算法從后備隊列中選擇若干個作業(yè)調(diào)入內(nèi)存,使它們共享 CPU 和系統(tǒng)中的各種資源。
在 OS 中引入多道批處理系統(tǒng)有以下好處:
1)提高 CPU 的利用率。2)可提高內(nèi)存和 I/O 設(shè)備利用率。3)增加系統(tǒng)吞吐量。
2、多道批處理系統(tǒng)的優(yōu)缺點
1)資源利用率高。由于在內(nèi)存中駐留了多道程序,它們共享資源,可保持資源處于忙碌狀態(tài),從而使各種資源得以充分利用。
2)系統(tǒng)吞吐量大。系統(tǒng)吞吐量是指系統(tǒng)在單位時間內(nèi)所完成的總工作量。能提高系統(tǒng)吞吐量的主要原因可歸結(jié)為:第一,CPU和其它資源保持“忙碌”狀態(tài);第二,僅當作業(yè)完成時或運行不下去時才進行切換,系統(tǒng)開銷小。
3)平均周轉(zhuǎn)時間長。作業(yè)的周轉(zhuǎn)時間是指從作業(yè)進入系統(tǒng)開始,直至其完成并退出系統(tǒng)為止所經(jīng)歷的時間。在批處理系統(tǒng)中,由于作業(yè)要排隊,依次進行處理,因而作業(yè)的周轉(zhuǎn)時間較長,通常需幾個小時,甚至幾天。
4)無交互能力。用戶一旦把作業(yè)提交給系統(tǒng)后,直至作業(yè)完成,用戶都不能與自己的作業(yè)進行交互,這對修改和調(diào)試程序是極不方便的。
3、多道批處理系統(tǒng)需要解決的問題。
1)處理機管理問題
2)內(nèi)存管理問題
3)I/O 設(shè)備管理問題
4)文件管理問題
5)作業(yè)管理問題
1.2.4 分時系統(tǒng)
1.分時系統(tǒng)的產(chǎn)生
1)便于人-機交互。 2)可以共享主機。 3)便于用戶上機。?
定義:分時系統(tǒng)是指 在一臺主機上連接了多個帶有顯示器和鍵盤的終端,同事允許多個用戶通過自己的終端,以交互方式使用計算機,共享主機中的資源。
2、分時系統(tǒng)實現(xiàn)中的關(guān)鍵問題
1)及時接收。要及時接收用戶鍵入的命令,只需在系統(tǒng)中配置一個多路卡。多路卡的作用是是主機能同事接收各用戶從終端上輸入的數(shù)據(jù)。
2)及時處理。人機交互的關(guān)鍵,是使用戶鍵入命令后能及時地控制自己作業(yè)的運行,或修改自己的作業(yè)。
3、分時系統(tǒng)的特征
1)多路性。允許在一臺主機上同時連接多臺聯(lián)機終端,系統(tǒng)按分時原則為每個用戶服務(wù)。多路性即同時性,它提高了資源利用率,降低了使用費用,從而促進了計算機更廣泛的使用。
2)獨立性。每個用戶各占一個終端,彼此獨立操作,互不干擾。
3)及時性。用戶的請求能在很短的時間內(nèi)獲得響應(yīng)。
4)交互性。用戶可通過終端與系統(tǒng)進行廣泛的人機對話。其廣泛性表現(xiàn)在:用戶可以請求系統(tǒng)提供多方面的服務(wù),如:文件編輯,數(shù)據(jù)處理和資源共享等。
1.2.5 實時系統(tǒng)
實時系統(tǒng)是指系統(tǒng)能及時響應(yīng)外部事件的請求,在規(guī)定的事件內(nèi)完成對該事件的處理,并控制所有實時任務(wù)協(xié)調(diào)一致的運行。
1、應(yīng)用需求
1)實時控制。2)實時信息處理。
2、實時任務(wù)
1)按任務(wù)執(zhí)行時是否呈現(xiàn)周期性來劃分
①周期性實時任務(wù)。外部設(shè)備周期性地發(fā)出激勵信號給計算機,要求它按指定周期循環(huán)執(zhí)行,以便周期性地控制某外部設(shè)備。
②非周期性實時任務(wù)。外部設(shè)備發(fā)出的激勵信號并無明顯周期,但都聯(lián)系著一個截止時間。它又可分為開始截止時間(某任務(wù)在某時間以前必須開始執(zhí)行)和完成截止時間(某任務(wù)在某時間以前必須完成)兩部分。
2)根據(jù)對截止時間的要求來劃分
①硬實時任務(wù)。系統(tǒng)必須滿足對截止時間的要求,否則可能出現(xiàn)難以預(yù)測的結(jié)果。
②軟實時任務(wù)。它也聯(lián)系著一個截止時間,但并不嚴格,若偶爾錯過了任務(wù)的截止時間,對系統(tǒng)產(chǎn)生的影響也不會很大。
3、實時系統(tǒng)與分時系統(tǒng)特征的比較
1)多路性。實時控制系統(tǒng)的多路性主要表現(xiàn)在系統(tǒng)周期性地對多路現(xiàn)場信息進行采集,以及對多個對象或多個執(zhí)行機構(gòu)進行控制。而分時系統(tǒng)中的多路性則與用戶情況有關(guān),時多時少。
2)獨立性。實時信息處理系統(tǒng)中的每個終端用戶在向shishixitong 提出服務(wù)請求時,是彼此獨立地操作,互不干擾;而實時控制系統(tǒng)中,對信息的采集和對對象的控制也都是彼此互不干擾。
3)及時性。實時信息處理系統(tǒng)對實時性的要求與分時系統(tǒng)類似,都是以人所能接受的等待時間來確定的;而實時控制系統(tǒng)的及時性,則是以控制對象所要求的開始截止時間或完成截止時間來確定的,一般為秒級到毫秒級,甚至有的要低于100微秒。
4)交互性。實時信息處理系統(tǒng)雖然也具有交互性,但這里人與系統(tǒng)的交互僅限于訪問系統(tǒng)中某些特定的專用服務(wù)程序。它不像分時系統(tǒng)那樣能向終端用戶提供數(shù)據(jù)處理和資源共享等服務(wù)。
5)可靠性。分時系統(tǒng)雖然也要求系統(tǒng)可靠,但相比之下,實時系統(tǒng)則要求系統(tǒng)具有高度的可靠性。因為任何差錯都可能帶來巨大的經(jīng)濟損失,甚至是無法預(yù)料的災(zāi)難性后果,所以在實時系統(tǒng)中,往往都采取了多級容錯措施來保障系統(tǒng)的安全性及數(shù)據(jù)的安全性。
1.2.6 微機操作系統(tǒng)的發(fā)展
1、單用戶單任務(wù)操作系統(tǒng)
2、單用戶多任務(wù)操作系統(tǒng)
3、多用戶多任務(wù)操作系統(tǒng)
1.3 操作系統(tǒng)的基本特性
并發(fā)、共享、虛擬、異步。
并發(fā)特征是操作系統(tǒng)最重要的特征,其他三個特征都是以并發(fā)特征為前提的。
1.3.1 并發(fā)性
1、并行與并發(fā)
并行性是指兩個或多個事件在同一時刻發(fā)生;并發(fā)性是指兩個或多個事件在同一時間間隔內(nèi)發(fā)生。
2、引入進程
進程是指在系統(tǒng)中能獨立運行并作為資源分配的基本單位,它是由一組機器指令、數(shù)據(jù)和堆棧等組成的。是一個能獨立運行的活動實體。
通常的程序是靜態(tài)實體,在多道程序系統(tǒng)中,它們是不能獨立運行的,更不能和其它程序并發(fā)執(zhí)行。在操作系統(tǒng)中引入進程的目的,就是為了使多個程序能并發(fā)執(zhí)行。
引入進程事實上可以在內(nèi)存中存放多個用戶程序,分別為它們建立進程后,這些程序可以并發(fā)執(zhí)行,亦即實現(xiàn)多道程序運行。這樣能極大提高系統(tǒng)資源的利用率,增加系統(tǒng)的吞吐量。
3、引入線程
通常在一個進程中可以包含若干個線程,它們可以利用進程所擁有的資源。在引入線程的 OS 中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調(diào)度的基本單位。
1.3.2 共享性
在操作系統(tǒng)環(huán)境下,共享 是指系統(tǒng)中的資源可供內(nèi)存中多個并發(fā)的進程功能使用,相應(yīng)地,把這種資源共同使用成為資源共享,或成為資源復(fù)用。
目前主要實現(xiàn)資源復(fù)用的方式有:
1)互斥共享方式
2)同時訪問方式
1.3.3 虛擬技術(shù)
操作系統(tǒng)中的所謂“虛擬”,是指通過某種技術(shù)把一個物理實體變?yōu)槿舾蓚€邏輯上的對應(yīng)物。物理實體是實的,即實際存在的,而后者是虛的,近視用戶感受上的東西。相應(yīng)的,用于實現(xiàn)虛擬的技術(shù)成為虛擬技術(shù)。在操作系統(tǒng)中利用了兩種方式實現(xiàn)虛擬技術(shù),即時分復(fù)用技術(shù)和空分復(fù)用技術(shù)。
1、時分復(fù)用技術(shù)
時分復(fù)用,亦即分時使用方式
1)虛擬處理機技術(shù)
2)虛擬設(shè)備技術(shù)
2、空分復(fù)用技術(shù)
1)虛擬磁盤技術(shù)
2)虛擬存儲器技術(shù)
1.3.4 異步性
進程是以人們不可預(yù)知的速度向前推進,此即進程的異步性。但只要在操作系統(tǒng)中配置有完善的進程同步機制,且運行環(huán)境相同,作業(yè)經(jīng)多次運行都會獲得完全相同的結(jié)果。因此,異步運行方式是允許的,而且是操作系統(tǒng)的一個重要特征。
1.4 操作系統(tǒng)的主要功能
操作系統(tǒng)的主要任務(wù),是為多道程序的運行提供良好的運行環(huán)境,以保證多道程序能有條不紊的、高效的運行,并能最大限度的提高系統(tǒng)中各種資源的利用率和方便用戶的使用。為實現(xiàn)上述任務(wù),操作系統(tǒng)應(yīng)具有以下功能:處理機管理,存儲器管理,設(shè)備管理和文件管理。
1.4.1 處理機管理功能
處理機管理的主要功能是創(chuàng)建和撤銷進程,對諸進程的運行進行協(xié)調(diào),實現(xiàn)進程之間的信息交換,以及按照一定的算法把處理及分配給進程。
1、進程控制
進程控制的主要功能是為作業(yè)創(chuàng)建進程,撤銷已結(jié)束的進程,以及控制進程在運行過程中的狀態(tài)轉(zhuǎn)換。
2、進程同步
進程同步的主要任務(wù)是為多個進程的運行進行協(xié)調(diào)。有兩種協(xié)調(diào)方式:
1)進程互斥方式:這是指諸進程在對臨界資源進行訪問時,應(yīng)采用互斥方式;
2)進程同步方式:這是指在相互合作去完成功能任務(wù)的諸進程間,由同步機構(gòu)對他們的執(zhí)行次序加以協(xié)調(diào)。
3、進程通信
在多道程序環(huán)境下,為了加速應(yīng)用程序的運行,應(yīng)在系統(tǒng)中建立多個進程,并且再為一個進程建立若干個線程,由這些進程(線程)相互合作去完成一個共同的任務(wù)。
4、調(diào)度
1)作業(yè)調(diào)度
作業(yè)調(diào)度的基本任務(wù)是從后備隊列中按照一定的算法,選擇出若干個作業(yè),為他們分配運行所需的資源。在將他們調(diào)入內(nèi)存后,便分別為他們建立進程,使他們都成為可能獲得處理機的就緒進程,并按照一定的算法將他們插入就緒隊列。
2)進程調(diào)度
進程調(diào)度的任務(wù)是從進程的就緒隊列中,按照一定的算法選出一個進程,把處理機分配給它,并為它設(shè)置運行現(xiàn)場,使進程投入執(zhí)行。值得提出的是,在多線程OS中,通常是把線程作為獨立運行和分配處理機的基本單位,為此,須把就緒線程排成一個隊列,每次調(diào)度時,是從就緒線程隊列中選出一個線程,把處理機分配給它。
1.4.2 存儲器管理功能
存儲器的主要任務(wù)是為多道程序的運行提供良好的環(huán)境,方便用戶使用存儲器,提高存儲器的利用率以及能從邏輯上擴充內(nèi)存。
1、內(nèi)存分配
內(nèi)存分配的主要任務(wù)是為每道程序分配內(nèi)存空間,使它們“各得其所”;提高存儲器的利用率,以減少不可用的內(nèi)存空間;允許正在運行的程序申請附加的內(nèi)存空間,以適應(yīng)程序和數(shù)據(jù)動態(tài)增長的需要。
為了實現(xiàn)內(nèi)存分配,在內(nèi)存分配的機制中應(yīng)具有這樣的結(jié)構(gòu)功能:
1)內(nèi)存分配數(shù)據(jù)結(jié)構(gòu)。該結(jié)構(gòu)用于記錄內(nèi)存空間的使用情況,作為內(nèi)存分配的依據(jù)。
2)內(nèi)存分配功能。系統(tǒng)按照一定的內(nèi)存分配算法為用戶程序分配內(nèi)存空間。
3)內(nèi)存回收功能。系統(tǒng)對用用戶不再需要的內(nèi)存,通過用戶的釋放請求去完成系統(tǒng)的回收功能。
2、內(nèi)存保護
內(nèi)存保護的主要任務(wù)是確保每道用戶程序都只在自己的內(nèi)存空間內(nèi)運行,彼此互不干擾;決不允許用戶程序訪問操作系統(tǒng)的程序和數(shù)據(jù);也決不允許用戶程序轉(zhuǎn)移到非共享的其他用戶程序中去執(zhí)行。
3、地址映射
4、內(nèi)存擴充
為了能在邏輯上擴充內(nèi)存,系統(tǒng)必須具有內(nèi)存擴充機制,用于實現(xiàn)下述各功能:
1)請求調(diào)入功能。
允許在裝入一部分用戶程序和數(shù)據(jù)的情況下,便能啟動該程序運行。在程序運行過程中,若發(fā)現(xiàn)要繼續(xù)運行時所需的程序和數(shù)據(jù)尚未裝入內(nèi)存,可向OS發(fā)出請求,由OS從磁盤中將所需部分調(diào)入內(nèi)存,以便繼續(xù)運行。
2)置換功能。
若發(fā)現(xiàn)在內(nèi)存中已無足夠的空間來裝入需要調(diào)入的程序和數(shù)據(jù)時,系統(tǒng)應(yīng)能將內(nèi)存中的一部分暫時不用的程序和數(shù)據(jù)調(diào)至盤上,以騰出內(nèi)存空間,然后再將所需調(diào)入的部分裝入內(nèi)存。
1.4.3 設(shè)備管理功能
完成用戶進程提出的 I/O 請求;為用戶進程分配所需的 I/O 設(shè)備;提高 I/O 設(shè)備和 CPU 的利用率;提高 I/O 速度;方便用戶使用 I/O 設(shè)備。
設(shè)備管理應(yīng)具有:緩沖管理,設(shè)備分配,設(shè)備處理以及虛擬設(shè)備等功能。
1、緩沖管理:
2、設(shè)備分配:
設(shè)備分配的基本任務(wù)是根據(jù)用戶進程的 I/O 請求、系統(tǒng)的現(xiàn)有資源情況以及按某種設(shè)備的分配策略,為之分配其所需的設(shè)備。
3、設(shè)備處理:
設(shè)備處理的基本任務(wù)是用于實現(xiàn) CPU 和設(shè)備控制之間的通信。
4、虛擬設(shè)備:
1.4.4 文件管理功能
文件管理的主要任務(wù)是對用戶文件和系統(tǒng)文件進行管理,以方便用戶使用,并保證文件的安全性。
為此,文件管理應(yīng)具有對文件存儲空間的管理、目錄管理、文件的讀/寫管理,以及文件的共享與保護等功能。
1、文件存儲空間的管理
為每個文件分配必要的外存空間,提高外存利用率,并能有助于提高文件系統(tǒng)的存、取速度。
2、目錄管理
為每個文件建立其目錄項,并對眾多的目錄項加以有效的組織,以實現(xiàn)方便的按名存取,即用戶只需提供文件名便可對該文件進行存取。
3、文件的讀/寫管理和保護
1)文件的讀、寫管理
根據(jù)用戶的請求,從外存中讀取數(shù)據(jù),或?qū)?shù)據(jù)寫入外存。
2)文件保護
①防止未經(jīng)核準的用戶存取文件
②防止冒名頂替存取文件
③防止以不正確的方式使用文件
1.4.5 操作系統(tǒng)與用戶之間的接口
用戶與操作系統(tǒng)的接口:
1、用戶接口
它是提供給用戶使用的接口,用戶可通過該接口取得操作系統(tǒng)的服務(wù)。
1)聯(lián)機用戶接口
為聯(lián)機用戶提供,它由一組鍵盤操作命令及命令解釋程序所組成。
2)脫機用戶接口
為批處理作業(yè)的用戶提供的,故也稱批處理用戶接口。該接口由一組作業(yè)控制語言(JCL)組成。批處理作業(yè)的用戶不能直接與自己的作業(yè)交互作用,只能委托系統(tǒng)代替用戶對作業(yè)進行干預(yù)和控制。這里的作業(yè)控制語言 JCL 便是把需要對作業(yè)進行的控制和干預(yù)事先寫在作業(yè)說明書上,然后將作業(yè)和作業(yè)說明書一起提供給系統(tǒng)。
3)圖形用戶接口
圖形用戶接口采用了圖形化的操作界面,用非常容易識別的各種圖標將系統(tǒng)的各項功能、各種應(yīng)用程序和文件,直觀、逼真的表示出來。
2、程序接口
是為用戶程序在執(zhí)行中訪問系統(tǒng)資源而設(shè)置的,是用戶程序取得操作系統(tǒng)服務(wù)的唯一途徑。
1.5 OS 結(jié)構(gòu)設(shè)計
1.5.1 傳統(tǒng)的操作系統(tǒng)結(jié)構(gòu)
1、無結(jié)構(gòu)操作系統(tǒng)
早起開發(fā)系統(tǒng)時,設(shè)計者只是把注意力放在功能的實現(xiàn)和獲得高的效率上,缺乏首尾一致的設(shè)計思想,此時的 OS 是為數(shù)眾多的一組過程的集合,每個過程可以任意的相互調(diào)用其他過程,致使操作系統(tǒng)內(nèi)部既復(fù)雜又混亂,因此,這種 OS 是無結(jié)構(gòu)的,也有人把它稱為整體系統(tǒng)結(jié)構(gòu)。
2、模塊化結(jié)構(gòu) OS
1)基本概念:該技術(shù)是基于“分解”和“模塊化”原則來控制大型軟件的復(fù)雜度。為使 OS 具有較清晰的結(jié)構(gòu),按其功能劃分為若干個具有一定獨立性和大小的模塊;每個模塊具有某方面的功能,并仔細規(guī)定好各模塊間的接口。若子模塊過大,可以再進一步進行細分。這種設(shè)計方法稱為模塊-接口法,由此構(gòu)成的操作系統(tǒng)就是具有模塊化結(jié)構(gòu)的操作系統(tǒng)。如圖1-6:
2)模塊的獨立性:如果再劃分模塊時,將模塊劃分的太小,雖然可以降低模塊本身的復(fù)雜性,但會引起模塊之間的聯(lián)系過多,而會造成系統(tǒng)混亂;如果模塊劃分的過大,又會增加模塊內(nèi)部的復(fù)雜性,使內(nèi)部的聯(lián)系增加。因此在劃分模塊時,應(yīng)在兩者間進行權(quán)衡:
①內(nèi)聚性:指模塊內(nèi)部各部分之間的緊密程度,內(nèi)聚性越高,模塊的獨立性越強。
②耦合度:指模塊間相互聯(lián)系和相互影響的程度,耦合度越低、模塊化的獨立性越好。
3)模塊接口法的優(yōu)缺點:
①提高 OS 設(shè)計的正確性、可理解性和可維護性。
②增強 OS 的適應(yīng)性。
③加速 OS 的開發(fā)過程。
模塊化結(jié)構(gòu)存在的問題:
①在OS 設(shè)計時,對各模塊間的接口規(guī)定很難滿足在模塊完成后對接口的實際需求。
②在模塊化結(jié)構(gòu)設(shè)計中,各模塊的設(shè)計齊頭并進,無法尋找到一個可靠的決定順序,造成各種無法決定的“無序性”,使設(shè)計人員很難做到“設(shè)計中的每一步?jīng)Q定都是建立在可靠地基礎(chǔ)上”,故模塊-接口法又被稱為“無序模塊法”。
3、分層式結(jié)構(gòu) OS
1)基本概念:為了將模塊―接口法中“決定順序”的無序性變?yōu)橛行蛐裕肓擞行蚍謱臃ā7謱臃ǖ脑O(shè)計任務(wù)是,在目標系統(tǒng)An和裸機系統(tǒng)(又稱宿主系統(tǒng))A0之間,鋪設(shè)若干個層次的軟件A1、A2、A3、...、An-1,使An通過An-1、An-2、...、A2、A1層,最終能在A0上運行。在操作系統(tǒng)中,常采用自底向上法來鋪設(shè)這些中間層。
自底向上的分層設(shè)計的基本原則是:每一步設(shè)計都是建立在可靠的基礎(chǔ)上。為此規(guī)定,每一層僅能使用其底層所提供的功能和服務(wù)。
2)分層結(jié)構(gòu)的主要優(yōu)點:
①易保證系統(tǒng)的正確性。自上而下的設(shè)計方式,是所有的設(shè)計中的決定都是有序的,或者說是建立在較為可靠的基礎(chǔ)上,這樣比較容易保證整個系統(tǒng)的正確性。
②易擴充和易維護性。在系統(tǒng)中增加、修改或替換一個層次中的模塊或整個層次,只要不改變相應(yīng)層次間的接口,就不會影響其它層次,這必將使系統(tǒng)維護和擴充變得更加容易。
分層結(jié)構(gòu)的主要缺點:系統(tǒng)效率降低了。由于層次結(jié)構(gòu)是分層單向依賴的,因此必須在相鄰層之間都要建立層次間的通信機制,OS 每執(zhí)行一個功能,通常要自上而下地穿越多個層次,這無疑會增加系統(tǒng)的通信開銷,從而導(dǎo)致系統(tǒng)效率的降低。
1.5.2 客戶/服務(wù)器模式
客戶/服務(wù)器(Client/Server)模式可簡稱為 C/S 模式,在20世紀90年代已風(fēng)靡全球,不論是LAN,還是企業(yè)網(wǎng),以及Internet所提供的多種服務(wù),都廣泛采用了客戶/服務(wù)器模式。
1、客戶/服務(wù)器模式的組成
客戶/服務(wù)器系統(tǒng)主要由客戶機、服務(wù)器和網(wǎng)絡(luò)系統(tǒng)三個部分組成。
1)客戶機:通常在一個LAN網(wǎng)絡(luò)上連接有多臺網(wǎng)絡(luò)工作站(簡稱客戶機),每臺客戶機都是一個自主計算機,具有一定的處理能力,客戶進程在其上運行,平時它處理一些本地業(yè)務(wù),也可發(fā)送一個消息給服務(wù)器,以請求某項服務(wù)。
2)服務(wù)器:通常是一臺規(guī)模較大的機器,在其上駐留有網(wǎng)絡(luò)文件系統(tǒng)或數(shù)據(jù)庫系統(tǒng)等,它應(yīng)能為網(wǎng)上所有的用戶提供一種或多種服務(wù)。
3)網(wǎng)絡(luò)系統(tǒng):用于連接所有客戶機和服務(wù)器,實現(xiàn)它們之間通信和網(wǎng)絡(luò)資源共享的系統(tǒng)。
2、客戶/服務(wù)器之間的交互
1)客戶發(fā)送請求消息
2)服務(wù)器接收消息
3)服務(wù)器回送消息
4)客戶機接收消息
3、客戶/服務(wù)器模式的優(yōu)點
1)數(shù)據(jù)的分布處理和存儲
2)便于集中管理
3)靈活性和可擴充性
4)易于改編的應(yīng)用軟件
1.5.3 面向?qū)ο蟮某绦蛟O(shè)計
1、面向?qū)ο蠹夹g(shù)的基本概念
所謂對象,是指在現(xiàn)實世界中具有相同屬性、服從相同規(guī)則的一系列事物的抽象,而把其中的具體事物稱為對象的實例。
1)對象
在面向?qū)ο蟮募夹g(shù)中,是利用被封裝的數(shù)據(jù)結(jié)構(gòu)(變量)和一組對它進行操作的過程(方法),來表示系統(tǒng)中的某個對象的。面向?qū)ο笾械姆椒ㄊ怯糜趫?zhí)行某種功能的過程,它可以改變對象的狀態(tài),更新對象中的某些數(shù)據(jù)值或作用于對象所要訪問的外部資源。
對象中的變量(數(shù)據(jù))對外是隱蔽的,因而外界不能對它直接進行訪問,必須通過該對象中的一組方法(操作函數(shù))對它進行訪問。同樣對象中的一組方法實現(xiàn)細節(jié)也是隱蔽的,所以對象中的變量可以得到很好的保護,而不會允許未經(jīng)授權(quán)者使用和不正確的操作。
2)對象類
定義了一組變量和針對該變量的一組方法,用它們來描述一組對象的功能屬性和行為。類是在對象上的抽象,對象則是類的實例。對象類中所定義的變量在實例中均有具體的值。
3)繼承 在面向?qū)ο蟮募夹g(shù)中,可以根據(jù)已有的類來定義一個新的類,新的類被稱為子類(B),原來的類被稱為父類(A)。如圖1-9:
繼承是父類和子類之間共享變量和方法的機制,該機制規(guī)定,子類自動繼承父類中定義的變量和方法,并允許子類在增加新的內(nèi)容。一個父類可以定義多個子類,它們分別是父類的某種特例,父類描述了子類的公共變量和方法,這些子類又可以定義自己的子類,通過此途徑可以生成一個繼承的層次。另外,也允許一個子類有兩個父類或者多個父類,它可以從多個父類獲得繼承,此時成為“多重繼承”。
2、面向?qū)ο蠹夹g(shù)的優(yōu)點
1)通過“重用”提高產(chǎn)品質(zhì)量和生產(chǎn)率
2)使系統(tǒng)具有更好的易修改性和易擴展性
通過封裝,可隱蔽對象中的變量和方法,因而當改變對象中的變量和方法時,不會影響到其他部分,從而可方便地修改老的對象類。另外,繼承是面向?qū)ο蠹夹g(shù)的重要特性,在創(chuàng)建一個新對象類時,通過利用繼承特性,可顯著地減少開發(fā)的時空開銷,使系統(tǒng)具有更好的易擴展性和靈活性。
3)更易于保證系統(tǒng)的“正確性”和“可靠性”
對象是構(gòu)成操作系統(tǒng)的基本單元,由于可以獨立的對它進行測試,易于保證每個對象的正確性和可靠性,因此也就別叫容易保證整個系統(tǒng)的正確性和可靠性。此外,封裝對對象類中的信息進行了隱蔽,可以有效地防止對未經(jīng)授權(quán)者的訪問和用戶不正確的使用,有助于構(gòu)建更為安全的系統(tǒng)。
1.5.4 微內(nèi)核 OS 結(jié)構(gòu)
1、微內(nèi)核操作系統(tǒng)的基本概念
1)足夠小的內(nèi)核
在微內(nèi)核操作系統(tǒng)中,內(nèi)核是精心設(shè)計的、能實現(xiàn)現(xiàn)代 OS 最基本的核心功能部分。微內(nèi)核并非是一個完整的 OS,而只是操作系統(tǒng)中最基本的部分,它通常用于:①實現(xiàn)與硬件緊密相關(guān)的處理;②實現(xiàn)一些較基本的功能;③負責(zé)客戶和服務(wù)器之間的通信。
2)基于客戶/服務(wù)器模式
?將操作系統(tǒng)中最基本的部件放入內(nèi)核中,而把操作系統(tǒng)的絕大部分功能都放在微內(nèi)核外面的一組服務(wù)器(進程)中實現(xiàn)。例如用于提供對進程(線程)進行管理的進程(線程)服務(wù)器,提供虛擬存儲器管理功能的虛擬存儲器服務(wù)器,提供 I/O 設(shè)備管理的 I/O 設(shè)備管理服務(wù)器等。運行在用戶態(tài),客戶與服務(wù)器之間是借助微內(nèi)核提供的消息傳遞機制來實現(xiàn)信息交互的。如圖1-10:在單機環(huán)境下的客戶/服務(wù)器模式
3)應(yīng)用“機制與策略分離”原理
所謂機制,是指實現(xiàn)某一功能的具體執(zhí)行機構(gòu)。而策略,則是在機制的基礎(chǔ)上,借助于某些參數(shù)和算法來實現(xiàn)該功能的優(yōu)化,或達到不同的功能目標。
4)采用面向?qū)ο蠹夹g(shù)
操作系統(tǒng)是一個及其復(fù)雜的大型軟件系統(tǒng),可以基于面向?qū)ο蠹夹g(shù)中的“抽象”和“隱蔽”原則控制系統(tǒng)的復(fù)雜性,再進一步利用“對象”、“封裝”和“繼承”等概念來確保操作系統(tǒng)的“正確性”、“可靠性”、“易修改性”、“易擴展性”等,并提高操作系統(tǒng)的設(shè)計速度。
2、微內(nèi)核的基本功能
1)進程(線程)管理
如何確定每類用戶(進程)的優(yōu)先級,以及應(yīng)如何修改它們的優(yōu)先級等,都屬于策略問題,可將它們放入微內(nèi)核外的進程(線程)管理服務(wù)器中。
2)低級存儲器管理
通常在微內(nèi)核中,只配置最基本的低級存儲器管理機制。而實現(xiàn)虛擬存儲器管理的策略,則包含采取何種頁面置換算法,采用何種內(nèi)存分配與回收策略等,應(yīng)將這部分放在微內(nèi)核外的存儲器管理服務(wù)器中去實現(xiàn)。
3)中斷和陷入處理
大多數(shù)微內(nèi)核操作系統(tǒng)都是將與硬件緊密相關(guān)的一小部分放入微內(nèi)核中處理。此時微內(nèi)核的主要功能,是捕獲所發(fā)生的中斷和陷入事件,并進行相應(yīng)的前期處理。如進行中斷現(xiàn)場保護,識別中斷和陷入類型,然后將有關(guān)事件的信息轉(zhuǎn)換為消息后,發(fā)給相應(yīng)的服務(wù)器。由服務(wù)器根據(jù)中斷或陷入的類型,調(diào)用相應(yīng)的處理程序來進行后期處理。
在微內(nèi)核 OS 中是將進程管理,存期管理以及 I/O 管理這些功能一分為二,屬于極致的很小一部分放在微內(nèi)核中,另外絕大部分放在微內(nèi)核外的各種服務(wù)器中來實現(xiàn)。
3、微內(nèi)核操作系統(tǒng)的優(yōu)點
1)提高了系統(tǒng)的可擴展性
由于微內(nèi)核 OS 的許多功能是由相對獨立的服務(wù)器軟件來實現(xiàn)的,當開發(fā)了新的硬件和軟件時,微內(nèi)核 OS 只需在相應(yīng)的服務(wù)器中增加新的功能,或再增加一個專門的服務(wù)器。
2)增強了系統(tǒng)的可靠性
由于微內(nèi)核是出于精心設(shè)計和嚴格測試的,容易保證其正確性;另一方面是它提供了規(guī)范而精簡的應(yīng)用程序接口(API),為微內(nèi)核外部的程序編制高質(zhì)量的代碼創(chuàng)造了條件。此外,由于所有服務(wù)器都是運行在用戶態(tài),服務(wù)器與服務(wù)器之間采用的是消息傳遞通信機制,因此,當某個服務(wù)器出現(xiàn)錯誤時,不會影響內(nèi)核,也不會影響其他服務(wù)器。
3)可移植性
在微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)中,所有與特定 CPU 和 I/O 設(shè)備硬件有關(guān)的代碼,均放在內(nèi)核和內(nèi)核下面的硬件隱藏層中,而操作系統(tǒng)其它絕大部分(即各種服務(wù)器)均與硬件平臺無關(guān),因而,把操作系統(tǒng)移植到另一個計算機硬件平臺上所需的修改是比較小的。
4)提供了對分布式系統(tǒng)的支持
由于在微內(nèi)核 OS 中,客戶和服務(wù)器之間以及服務(wù)器和服務(wù)器之間的通信,是采用消息傳遞通信機制進行的,致使微內(nèi)核 OS 能很好地支持分布式系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)。
事實上,只要在分布式系統(tǒng)中賦予所有進程和服務(wù)器唯一的標識符,在微內(nèi)核中再配置一張系統(tǒng)映射表(即進程和服務(wù)器的標識符與它們所駐留的機器之間的對應(yīng)表),在進行客戶和服務(wù)器通信時,只需在所發(fā)送的消息中表上所發(fā)送進程和接收進程的標識符,微內(nèi)核便可利用系統(tǒng)映射表,將消息發(fā)往目標,而無論目標是駐留在哪臺機器上。
5)融入了面向?qū)ο蠹夹g(shù)
在設(shè)計微內(nèi)核 OS 時,采用了面向?qū)ο蟮募夹g(shù),其中的“封裝”、“繼承”、“對象類”和“多態(tài)性”,以及在對象之間采用消息傳遞機制等,都十分有利于提高系統(tǒng)的的“正確性”、“可靠性”、“易修改性”、“易擴展性”等,而且還能顯著地減少開發(fā)系統(tǒng)所付出的開銷。
4、微內(nèi)核系統(tǒng)存在的問題
在微內(nèi)核 OS 中,由于客戶和服務(wù)器及服務(wù)器和服務(wù)器之間的通信,都需通過微內(nèi)核,只是同樣的服務(wù)請求至少需要四次上下文切換。第一次是發(fā)生在客戶發(fā)送請求消息給內(nèi)核,以請求取得某服務(wù)器特定的服務(wù)時;第二次是發(fā)生在由內(nèi)核把客戶的請求消息發(fā)往服務(wù)器時,第三次是當服務(wù)器完成客戶的請求后,把響應(yīng)消息發(fā)送到內(nèi)核時;第四次是在內(nèi)核將響應(yīng)消息發(fā)送給客戶時。
實際情況是,當某個服務(wù)器自身尚無能力完成客戶請求,而需要其他服務(wù)器幫助時,如圖1-11所示,其中的文件服務(wù)器還需要磁盤服務(wù)器的幫助,這時就需要進行八次上下文的切換。
為了改善運行效率,可以重新把一些常用的操作系統(tǒng)的基本功能,由服務(wù)器移入微內(nèi)核中,這樣可使客戶對常用操作系統(tǒng)的功能的請求所發(fā)生的用戶/內(nèi)核模式和上下文切換的次數(shù)。但是這又會使微內(nèi)核的容量明顯的增大,在小型接口定義和適應(yīng)性方面的有點也有所下降,同時也提高了微內(nèi)核的設(shè)計代價。