天天看點

153.作業系統引論

1.1  作業系統的目标和作用

  作業系統的目标與應用環境有關。例如在查詢系統中所用的OS,希望能提供良好的人—機互動性;對于應用于工業控制、武器控制以及多媒體環境下的OS,要求其具有實時性;而對于微機上配置的OS,則更看重的是其使用的友善性。

1.1.1  作業系統的目标  

1. 友善性  2. 有效性   3. 可擴充性  4. 開放性

1.1.2  作業系統的作用           

1.  OS作為使用者與計算機硬體系統之間的接口  

OS作為使用者與計算機硬體系統之間接口的含義是:OS處于使用者與計算機硬體系統之間,使用者通過OS來使用計算機系統。或者說,使用者在OS幫助下能夠友善、快捷、可靠地操縱計算機硬體和運作自己的程式。圖1-1是OS作為接口的示意圖。 

圖1-1 OS作為接口的示意圖

2.  OS作為計算機系統資源的管理者  

在一個計算機系統中,通常都含有多種硬體和軟體資源。歸納起來可将這些資源分為四類:處理機、存儲器、I/O裝置以及檔案(資料和程式)。

相應地,OS的主要功能也正是對這四類資源進行有效的管理。處理機管理是用于配置設定和控制處理機;存儲器管理主要負責記憶體的配置設定與回收;I/O裝置管理是負責I/O裝置的配置設定(回收)與操縱;檔案管理是用于實作對檔案的存取、共享和保護。可見,OS的确是計算機系統資源的管理者。

3.  OS實作了對計算機資源的抽象  

對于一台完全無軟體的計算機系統(即裸機),由于它向使用者提供的僅是硬體接口(實體接口),是以,使用者必須對實體接口的實作細節有充分的了解,這就緻使該實體機器難于廣泛使用。為了友善使用者使用I/O裝置,人們在裸機上覆寫上一層I/O裝置管理軟體,如圖1-2所示,由它來實作對I/O裝置操作的細節,并向上将I/O裝置抽象為一組資料結構以及一組I/O操作指令,如read和write指令,這樣使用者即可利用這些資料結構及操作指令來進行資料輸入或輸出,而無需關心I/O是如何具體實作的。 

圖1-2  I/O軟體隐藏了I/O操作實作的細節

1.1.3  推動作業系統發展的主要動力   

  1.不斷提高計算機資源使用率

  2. 友善使用者

  3. 器件的不斷更新換代

  4. 計算機體系結構的不斷發展

  5. 不斷提出新的應用需求

1.2  作業系統的發展過程

在20世紀50年代中期,出現了第一個簡單的批處理OS;

60年代中期開發出多道程式批處理系統;

不久又推出分時系統,

與此同時,用于工業和武器控制的實時OS也相繼問世。

20世紀70到90年代,是VLSI和計算機體系結構大發展的年代,導緻了微型機、多處理機和計算機網絡的誕生和發展,與此相應地,也相繼開發出了微機OS、多處理機OS和網絡OS,并得到極為迅猛的發展。

 1.2.1  未配置作業系統的計算機系統   

   1. 人工操作方式

  早期的操作方式是由程式員将事先已穿孔的紙帶(或卡片),裝入紙帶輸入機(或卡片輸入機),再啟動它們将紙帶(或卡片)上的程式和資料輸入計算機,然後啟動計算機運作。僅當程式運作完畢并取走計算結果後,才允許下一個使用者上機。這種人工操作方式有以下兩方面的缺點:

  (1)  使用者獨占全機,即一台計算機的全部資源由上機使用者所獨占。

  (2)  CPU等待人工操作。當使用者進行裝帶(卡)、卸帶(卡)等人工操作時,CPU及記憶體等資源是空閑的。

   2. 脫機輸入/輸出(Off-Line I/O)方式

  為了解決人機沖突及CPU和I/O裝置之間速度不比對的沖突,20世紀50年代末出現了脫機I/O技術。該技術是事先将裝有使用者程式和資料的紙帶裝入紙帶輸入機,在一台外圍機的控制下,把紙帶(卡片)上的資料(程式)輸入到錄音帶上。當CPU需要這些程式和資料時,再從錄音帶上高速地調入記憶體。

圖1-3 脫機I/O示意圖

1.2.2  單道批處理系統         

  1. 單道批處理系統(Simple Batch Processing System)的處理過程

  為實作對作業的連續處理,需要先把一批作業以脫機方式輸入到錄音帶上,并在系統中配上監督程式(Monitor),在它的控制下,使這批作業能一個接一個地連續處理。 

圖1-4 單道批處理系統的處理流程

  2. 單道批處理系統的缺點

  單道批處理系統最主要的缺點是,系統中的資源得不到充分的利用。這是因為在記憶體中僅有一道程式,每逢該程式在運作中發出I/O請求後,CPU便處于等待狀态,必須在其I/O完成後才繼續運作。又因I/O裝置的低速性,更使CPU的使用率顯著降低。圖1-5示出了單道程式的運作情況,從圖可以看出:在t2~t3、t6~t7時間間隔内CPU空閑。

圖1-5 單道程式的運作情況

1.2.3  多道批處理系統

(Multiprogrammed Batch Processing System)

1. 多道程式設計的基本概念

  為了進一步提高資源的使用率和系統吞吐量,在20世紀60年代中期引入了多道程式設計技術,由此形成了多道批處理系統。圖1-6示出了四道程式時的運作情況。

圖1-6 多道程式的運作情況

2. 多道批處理系統的優缺點

  多道批處理系統的優缺點如下:

  (1) 資源使用率高。引入多道批處理能使多道程式交替運作,以保持CPU處于忙碌狀态;在記憶體中裝入多道程式可提高記憶體的使用率;此外還可以提高I/O裝置的使用率。

  (2) 系統吞吐量大。能提高系統吞吐量的主要原因可歸結為:① CPU和其它資源保持“忙碌”狀态;② 僅當作業完成時或運作不下去時才進行切換,系統開銷小。

   (3) 平均周轉時間長。由于作業要排隊依次進行處理,因而作業的周轉時間較長,通常需幾個小時,甚至幾天。

  (4) 無互動能力。使用者一旦把作業送出給系統後,直至作業完成,使用者都不能與自己的作業進行互動,修改和調試程式極不友善。

 3. 多道批處理系統需要解決的問題

  多道批處理系統是一種十分有效,但又非常複雜的系統,為使系統中的多道程式間能協調地運作,系統必須解決下述一系列問題:

  (1) 處理機争用問題。既要能滿足各道程式運作的需要,又要能提高處理機的使用率。

  (2) 記憶體配置設定和保護問題。系統應能為每道程式配置設定必要的記憶體空間,使它們“各得其所”,且不會因某道程式出現異常情況而破壞其它程式。

  (3)  I/O裝置配置設定問題。系統應采取适當的政策來配置設定系統中的I/O裝置,以達到既能友善使用者對裝置的使用,又能提高裝置使用率的目的。

          (4) 檔案的組織和管理問題。系統應能有效地組織存放在系統中的大量的程式和資料,使它們既便于使用者使用,又能保證資料的安全性。

  (5) 作業管理問題。系統中存在着各種作業(應用程式),系統應能對系統中所有的作業進行合理的組織,以滿足這些作業使用者的不同要求。

  (6) 使用者與系統的接口問題。為使使用者能友善的使用作業系統,OS還應提供使用者與OS之間的接口。

 1.2.4  分時系統

(Time Sharing System)     

  1. 分時系統的引入

  如果說推動多道批處理系統形成和發展的主要動力是提高資源使用率和系統吞吐量,那麼,推動分時系統形成和發展的主要動力,則是為了滿足使用者對人—機互動的需求,由此形成了一種新型OS。使用者的需求具體表現在以下幾個方面:

  (1) 人—機互動。

  (2) 共享主機。 

   2. 分時系統實作中的關鍵問題

  在多道批處理系統中,使用者無法與自己的作業進行互動的主要原因是:作業都先駐留在外存上,即使以後被調入記憶體,也要經過較長時間的等待後方能運作,使用者無法與自己的作業進行互動。

  1) 及時接收

  2) 及時處理

   3. 分時系統的特征

  分時系統與多道批處理系統相比,具有非常明顯的不同特性,可以歸納成以下四個方面:

  (1) 多路性。

  (2) 獨立性。

  (3) 及時性。

  (4) 互動性。 

 1.2.5  實時系統

(Real Time System)   

  1. 實時系統的類型

  随着計算機應用的普及,實時系統的類型也相應增多,下面列出目前常見的幾種:

  (1) 工業(武器)控制系統。

  (2) 資訊查詢系統。

  (3) 多媒體系統。

  (4) 嵌入式系統。 

   2. 實時任務的類型

  (1) 周期性實時任務和非周期性實時任務。

  (2) 硬實時任務和軟實時任務。 

   3. 實時系統與分時系統特征的比較

  (1) 多路性。

  (2) 獨立性。

  (3) 及時性。

  (4) 互動性。

  (5) 可靠性。 

1. 什麼是實時作業系統?    規定時間,立馬響應

       實時作業系統(RTOS)是指當外界事件或資料産生時,能夠接受并以足夠快的速度予以處理,其處理的結果又能在規定的時間之内來控制生産過程或對處理系統作出快速響應,并控制所有實時任務協調一緻運作的作業系統。其特點是及時響應和高可靠性。實時系統又分為硬實時系統和軟實時系統,硬實時系統要求在規定的時間内必須完成操作,這是在作業系統設計時保證的;軟實時則隻要按照任務的優先級,盡可能快地完成操作即可。

2. 什麼是分時作業系統?     快速切換,好像獨占

       使一台計算機同時為幾個、幾十個甚至幾百個使用者服務的一種作業系統。把計算機與許多終端使用者連接配接起來,分時作業系統将系統處理機時間與記憶體空間按一定的時間間隔,輪流地切換給各終端使用者的程式使用(時間片的概念)。由于時間間隔很短,每個使用者的感覺就像他獨占計算機一樣。

3. 實時作業系統需要滿足哪些特征?

       多任務:由于真實世界的事件的異步性,能夠運作許多并發程序或任務是很重要的。多任務提供了一個較好的對真實世界的比對,因為它允許對應于許多外部事件的多線程執行。系統核心配置設定CPU給這些任務來獲得并發性。

       搶占排程:真實世界的事件具有繼承的優先級,在配置設定CPU的時候要注意到這些優先級。基于優先級的搶占排程,任務都被指定了優先級,在能夠執行的任務(沒有被挂起或正在等待資源)中,優先級最高的任務被配置設定CPU資源。換句話說,當一個高優先級的任務變為可執行态,它會立即搶占目前正在運作的較低優先級的任務。

       任務間的通訊與同步:在一個實時系統中,可能有許多任務作為一個應用的一部分執行。系統必須提供這些任務間的快速且功能強大的通信機制。核心也要提供為了有效地共享不可搶占的資源或臨界區所需的同步機制。

       任務與中斷之間的通信:盡管真實世界的事件通常作為中斷方式到來,但為了提供有效的排隊、優先化和減少中斷延時,我們通常希望在任務級處理相應的工作。是以需要在任務級和中斷級之間存在通信。

4. 分時作業系統需要滿足哪些特征?

       互動性:使用者與系統進行人機對話。 

       多路性:多使用者同時在各自終端上使用同一CPU。 

       獨立性:使用者可彼此獨立操作,互不幹擾,互不混淆。 

       及時性:使用者在短時間内可得到系統的及時回答。 

5. 實時作業系統主要應用領域

       主要應用于過程控制、資料采集、通信、多媒體資訊處理等對時間敏感的場合。例如:機器人的運動控制、無人駕駛等。

6. 分時作業系統主要應用領域

       現在流行的PC,伺服器都是采用這種運作模式,即把CPU的運作分成若幹時間片分别處理不同的運算請求。

 1.2.9  微機作業系統的發展

  1.單使用者單任務作業系統

  1)  CP/M

  2)  MS-DOS

   2. 單使用者多任務作業系統

  單使用者多任務作業系統的含義是,隻允許一個使用者上機,但允許使用者把程式分為若幹個任務,使它們并發執行,進而有效地改善了系統的性能。 

   3. 多使用者多任務作業系統

  多使用者多任務作業系統的含義是,允許多個使用者通過各自的終端,使用同一台機器,共享主機系統中的各種資源,而每個使用者程式又可進一步分為幾個任務,使它們能并發執行,進而可進一步提高資源使用率和系統吞吐量。在大、中和小型機中所配置的大多是多使用者多任務作業系統,而在32位微機上,也有不少配置的是多使用者多任務作業系統,其中最有代表性的是UNIX OS。

1.3  作業系統的基本特性

  前面所介紹的多道批處理系統、分時系統和實時系統這三種基本作業系統都具有各自不同的特征,如批處理系統有着高的資源使用率和系統吞吐量;分時系統能獲得及時響應;實時系統具有實時特征。除此之外,它們還共同具有并發、共享、虛拟和異步四個基本特征。

 1.3.1  并發(Concurrence)

  正是系統中的程式能并發執行這一特征,才使得OS能有效地提高系統中的資源使用率,增加系統的吞吐量。

  1. 并行與并發

  并行性和并發性是既相似又有差別的兩個概念。并行性是指兩個或多個事件在同一時刻發生。而并發性是指兩個或多個事件在同一時間間隔内發生。 

   2. 引入程序

  在一個未引入程序的系統中,在屬于同一個應用程式的計算程式和I/O程式之間隻能是順序執行,即隻有在計算程式執行告一段落後,才允許I/O程式執行;反之,在程式執行I/O操作時,計算程式也不能執行。但在為計算程式和I/O程式分别建立一個程序(Process)後,這兩個程序便可并發執行。若對記憶體中的多個程式都分别建立一個程序,它們就可以并發執行,這樣便能極大地提高系統資源的使用率,增加系統的吞吐量。

 1.3.2  共享(Sharing)           

  一般情況下的共享與作業系統環境下的共享其含義并不完全相同。

  1. 互斥共享方式 

  系統中的某些資源,如列印機、錄音帶機等,雖然可以提供給多個程序(線程)使用,但應規定在一段時間内,隻允許一個程序通路該資源。為此,在系統中應建立一種機制,以保證多個程序對這類資源的互斥通路。

   2. 同時通路方式

  系統中還有另一類資源,允許在一段時間内由多個程序“同時”對它們進行通路。這裡所謂的“同時”,在單處理機環境下是宏觀意義上的,而在微觀上,這些程序對該資源的通路是交替進行的。典型的可供多個程序“同時”通路的資源是磁盤裝置。一些用重入碼編寫的檔案也可以被“同時”共享,即允許若幹個使用者同時通路該檔案。

 1.3.3  虛拟(Virtual)     

  1. 時分複用技術

  (1) 虛拟處理機技術。

  (2) 虛拟裝置技術。 

   2. 空分複用技術

  20世紀初,電信業中就已使用頻分複用技術來提高信道的使用率。它是指将一個頻率範圍比較寬的信道劃分成多個頻率範圍較窄的信道(稱為頻帶),其中的任何一個頻帶都僅供一對使用者通話。早期的頻分複用技術隻能将一條實體信道劃分為幾條到幾十條話路,後來又很快發展到成千上萬條話路,每條話路供一對使用者通話。再後來在計算機中也把空分複用技術用于對存儲空間的管理,用以提高存儲空間的使用率。 

 1.3.4  異步(Asynchronism)       

   在多道程式環境下,系統允許多個程序并發執行。在單處理機環境下,由于系統中隻有一台處理機,因而每次隻允許一個程序執行,其餘程序隻能等待。當正在執行的程序提出某種資源要求時,如列印請求,而此時列印機正在為其它程序列印,由于列印機屬于臨界資源,是以正在執行的程序必須等待,并釋放出處理機,直到列印機空閑,并再次獲得處理機時,該程序方能繼續執行。可見,由于資源等因素的限制,使程序的執行通常都不可能“一氣呵成”,而是以“停停走走”的方式運作。

 1.4  作業系統的主要功能

  引入OS的主要目的是,為多道程式的運作提供良好的運作環境,以保證多道程式能有條不紊地、高效地運作,并能最大程度地提高系統中各種資源的使用率,友善使用者的使用。為此,在傳統的OS中應具有處理機管理、存儲器管理、裝置管理和檔案管理等基本功能。此外,為了友善使用者使用OS,還需向使用者提供友善的使用者接口。

 1.4.1  處理機管理功能       

  1. 程序控制

  2. 程序同步 

  3. 程序通信

  4. 排程

  (1) 作業排程。

  (2) 程序排程。

 1.4.2  存儲器管理功能     

1. 記憶體配置設定

  記憶體配置設定的主要任務是:

  (1) 為每道程式配置設定記憶體空間,使它們“各得其所”。

  (2) 提高存儲器的使用率,盡量減少不可用的記憶體空間(碎片)。

  (3) 允許正在運作的程式申請附加的記憶體空間,以适應程式和資料動态增長的需要。

   OS在實作記憶體配置設定時,可采取靜态和動态兩種方式:

  (1) 靜态配置設定方式。每個作業的記憶體空間是在作業裝入時确定的,在作業裝入後的整個運作期間不允許該作業再申請新的記憶體空間,也不允許作業在記憶體中“移動”。

  (2) 動态配置設定方式。每個作業所要求的基本記憶體空間雖然也是在裝入時确定的,但允許作業在運作過程中繼續申請新的附加記憶體空間,以适應程式和資料的動态增長,也允許作業在記憶體中“移動”。

 2. 記憶體保護

  記憶體保護的主要任務是:

① 確定每道使用者程式都僅在自己的記憶體空間内運作,彼此互不幹擾。

② 絕不允許使用者程式通路作業系統的程式和資料,也不允許使用者程式轉移到非共享的其它使用者程式中去執行。

3. 位址映射

  在多道程式環境下,由于每道程式經編譯和連結後所形成的可裝入程式其位址都是從0開始的,但不可能将它們從“0”位址(實體)開始裝入記憶體,緻使(各程式段的)位址空間内的邏輯位址與其在記憶體空間中的實體位址并不相一緻。為保證程式能正确運作,存儲器管理必須提供位址映射功能,即能夠将位址空間中的邏輯位址轉換為記憶體空間中與之對應的實體位址。該功能應在硬體的支援下完成。

4. 記憶體擴充

  記憶體擴充并非是從實體上去擴大記憶體的容量,而是借助于虛拟存儲技術,從邏輯上擴充記憶體容量,使使用者所感覺到的記憶體容量比實際記憶體容量大得多,以便讓更多的使用者程式能并發運作。這樣既滿足了使用者的需要,又改善了系統的性能。為了能在邏輯上擴充記憶體,系統必須設定記憶體擴充機制(包含少量的硬體),用于實作下述各功能:

  (1) 請求調入功能。

  (2) 置換功能。

 1.4.3  裝置管理功能

  裝置管理的主要任務如下:

  (1) 完成使用者程序提出的I/O請求,為使用者程序配置設定所需的I/O裝置,并完成指定的I/O操作。

  (2) 提高CPU和I/O裝置的使用率,提高I/O速度,友善使用者使用I/O裝置。

  為實作上述任務,裝置管理應具有緩沖管理、裝置配置設定和裝置處理以及虛拟裝置等功能。

  1. 緩沖管理  2. 裝置配置設定  3. 裝置處理

 1.4.4  檔案管理功能   

  1. 檔案存儲空間的管理

  2. 目錄管理

  3. 檔案的讀/寫管理和保護

  (1) 檔案的讀/寫管理。   (2) 檔案保護。

 1.4.5 作業系統與使用者之間的接口   

1. 使用者接口

  (1) 聯機使用者接口。  (2) 脫機使用者接口。  (3) 圖形使用者接口。 

 2. 程式接口

  程式接口是為使用者程式在執行中通路系統資源而設定的,是使用者程式取得作業系統服務的唯一途徑。它是由一組系統調用組成的,每一個系統調用都是一個能完成特定功能的子程式。每當應用程式要求OS提供某種服務(功能)時,便調用具有相應功能的系統調用(子程式)。早期的系統調用都是用彙編語言提供的,隻有在用彙編語言書寫的程式中才能直接使用系統調用。 

1.4.6 現代作業系統的新功能

  現代作業系統是在傳統作業系統基礎上發展起來的,它除了具有傳統作業系統的功能外,還增加了面向安全、面向網絡和面向多媒體等功能。

1. 系統安全

  (1) 認證技術。  (2) 密碼技術。  (3) 通路控制技術。  (4) 反病毒技術。

 2. 網絡的功能和服務

  (1) 網絡通信。  (2) 資源管理。  (3) 應用互操作。 

 3. 支援多媒體

  (1) 接納控制功能。  (2) 實時排程。  (3) 多媒體檔案的存儲。 

 1.5  OS結構設計

  早期OS的規模很小,如隻有幾十KB,完全可以由一個人以手工方式,用幾個月的時間編制出來。此時,編制程式基本上是一種技巧,OS是否是有結構的并不那麼重要,重要的是程式員的程式設計技巧。但随着OS規模的愈來愈大,其所具有的代碼也愈來愈多,往往需要由數十人或數百人甚至更多的人參與,分工合作,共同來完成作業系統的設計。這意味着,應采用工程化的開發方法對大型軟體進行開發。由此産生了“軟體工程學”。

1.5.1  傳統作業系統結構             

1. 無結構作業系統

  在早期開發作業系統時,設計者隻是把他的注意力放在功能的實作和獲得高的效率上,缺乏首尾一緻的設計思想。此時的OS是為數衆多的一組過程的集合,每個過程可以任意地互相調用其它過程,緻使作業系統内部既複雜又混亂,是以,這種OS是無結構的,也有人把它稱為整體系統結構。

2. 子產品化結構OS

1) 子產品化程式設計技術的基本概念

  子產品化程式設計技術是20世紀60年代出現的一種結構化程式設計技術。該技術基于“分解”和“子產品化”的原則來控制大型軟體的複雜度。為使OS具有較清晰的結構,OS不再是由衆多的過程直接構成的,而是按其功能精心地劃分為若幹個具有一定獨立性和大小的子產品。圖1-7示出了由子產品、子子產品等組成的子產品化OS結構。

圖1-7 子產品化結構的作業系統

  2) 子產品獨立性

  在子產品-接口法中,關鍵問題是子產品的劃分和規定好子產品之間的接口。如果我們在劃分子產品時将子產品劃分得太小,雖然可以降低子產品本身的複雜性,但會引起子產品之間的聯系過多,進而會造成系統比較混亂;如果将子產品劃分得過大,又會增加子產品内部的複雜性,使内部的聯系增加,是以在劃分子產品時,應在兩者間進行權衡。

3) 子產品接口法的優缺點

  利用子產品-接口法開發的OS,較之無結構OS具有以下明顯的優點:

  (1) 提高OS設計的正确性、可了解性和可維護性。

  (2) 增強OS的可适應性。

  (3) 加速OS的開發過程。

  子產品化結構設計仍存在下述問題:

  (1) 在OS設計時,對各子產品間的接口規定很難滿足在子產品設計完成後對接口的實際需求。

  (2) 在OS設計階段,設計者必須做出一系列的決定(決策),每一個決定必須建立在上一個決定的基礎上,但子產品化結構設計中,各子產品的設計齊頭并進,無法尋找一個可靠的決定順序,造成各種決定的“無序性”,這将使程式人員很難做到“設計中的每一步決定”都是建立在可靠的基礎上,是以子產品-接口法又被稱為“無序子產品法”。 

3. 分層式結構OS

1) 分層式結構的基本概念

  為了将子產品-接口法中“決定順序”的無序性變為有序性,引入了有序分層法,分層法的設計任務是,在目标系統An和裸機系統(又稱宿主系統)A0之間,鋪設若幹個層次的軟體A1、A2、A3、…、An-1,使An通過An-1、An-2、…、A2、A1層,最終能在A0上運作。在作業系統中,常采用自底向上法來鋪設這些中間層。

2) 分層結構的優缺點

  分層結構的主要優點有:

  (1) 易保證系統的正确性。

  (2) 易擴充和易維護性。

  分層結構的主要缺點是系統效率降低。由于層次結構是分層單向依賴的,必須在每層之間都建立層次間的通信機制,OS每執行一個功能,通常要自上而下地穿越多個層次,這無疑會增加系統的通信開銷,進而導緻系統效率的降低。

1.5.2  客戶/伺服器模式(Client/Server Model) 簡介

1. 客戶/伺服器模式的由來、組成和類型

  客戶/伺服器系統主要由三部分組成。

  (1) 客戶機:

  (2) 伺服器:

  (3) 網絡系統:

2. 客戶/伺服器之間的互動

  (1) 客戶發送請求消息。

  (2) 伺服器接收消息。

  (3) 伺服器回送消息。

  (4) 客戶機接收消息。 

 3. 客戶/伺服器模式的優點

  (1) 資料的分布處理和存儲。

  (2) 便于集中管理。

  (3) 靈活性和可擴充性。

  (4) 易于改編應用軟體。 

 1.5.3  面向對象的程式設計(Object-Orientated Programming)技術簡介

  1. 面向對象技術的基本概念

  面向對象技術是20世紀80年代初提出并很快流行起來的。 

   1) 對象  在面向對象的技術中,是利用被封裝的資料結構(變量)和一組對它進行操作的過程(方法)來表示系統中的某個對象的,如圖1-8所示。對象中的變量(資料)也稱為屬性,它可以是單個标量或一張表。面向對象中的方法是用于執行某種功能的過程,它可以改變對象的狀态,更新對象中的某些資料值或作用于對象所要通路的外部資源。如果把一個檔案作為一個對象(見圖1-9),該對象的變量便是檔案類型、檔案大小、檔案的建立者等。對象中的方法包含對檔案的操作,如建立檔案、打開檔案、讀檔案、寫檔案、關閉檔案等。

圖1-8 一個對象的示意圖

圖1-9 類和對象的關系

  2) 對象類

  在實踐中,有許多對象可能表示的是同一類事物,每個對象具有自己的變量集合,而它們所具有的方法是相同的。如果為每一個相似的對象都定義一組變量和方法,顯然是低效的,由此産生了“對象類”的概念,利用“對象類”來定義一組大體相似的對象。一個類同樣定義了一組變量和針對該變量的一組方法,用它們來描述一組對象的共同屬性和行為。類是在對象上的抽象,對象則是類的執行個體。對象類中所定義的變量在執行個體中均有具體的值。

  3) 繼承

  在面向對象的技術中,可以根據已有類來定義一個新的類,新類被稱為子類(B),原來的類被稱為父類(A),見圖1-10所示。 

圖1-10 類的繼承關系

2. 面向對象技術的優點

  在作業系統設計時,将計算機中的實體作為對象來處理,可帶來如下好處:

  (1) 通過“重用”提高産品品質和生産率。

  (2) 使系統具有更好的易修改性和易擴充性。

  (3) 更易于保證系統的“正确性”和“可靠性”。

1.5.4 微核心OS結構

1. 微核心作業系統的基本概念

  1) 足夠小的核心

  在微核心作業系統中,核心是指精心設計的、能實作現代OS最基本核心功能的小型核心,微核心并非是一個完整的OS,而隻是将作業系統中最基本的部分放入微核心,通常包含有:① 與硬體處理緊密相關的部分;② 一些較基本的功能;③ 客戶和伺服器之間的通信。這些OS最基本的部分隻是為建構通用OS提供一個重要基礎,這樣就可以確定把作業系統核心做得很小。

  2) 基于客戶/伺服器模式

  由于客戶/伺服器模式具有非常多的優點,故在單機微核心作業系統中幾乎無一例外地都采用客戶/伺服器模式,将作業系統中最基本的部分放入核心中,而把作業系統的絕大部分功能都放在微核心外面的一組伺服器(程序)中實作,如用于提供對程序(線程)進行管理的程序(線程)伺服器、提供虛拟存儲器管理功能的虛拟存儲器伺服器、提供I/O裝置管理的I/O裝置管理伺服器等,它們都是被作為程序來實作的,運作在使用者态,客戶與伺服器之間是借助微核心提供的消息傳遞機制來實作資訊互動的。圖1-11示出了在單機環境下的客戶/伺服器模式。

圖1-11 在單機環境下的客戶/伺服器模式

   3) 應用“機制與政策分離”原理

  在現在作業系統的結構設計中,經常利用“機制與政策分離”的原理來構造OS結構。所謂機制,是指實作某一功能的具體執行機構。而政策,則是在機制的基礎上借助于某些參數和算法來實作該功能的優化,或達到不同的功能目标。 

  4) 采用面向對象技術

  作業系統是一個極其複雜的大型軟體系統,我們不僅可以通過結構設計來分解作業系統的複雜度,還可以基于面向對象技術中的“抽象”和“隐蔽”原則控制系統的複雜性,再進一步利用“對象”、“封裝”和“繼承”等概念來確定作業系統的“正确性”、“可靠性”、“易修改性”、“易擴充性”等,并提高作業系統的設計速度。正因為面向對象技術能帶來如此多的好處,故面向對象技術被廣泛應用于現代作業系統的設計中。

2. 微核心的基本功能

  微核心應具有哪些功能,或者說哪些功能應放在微核心内,哪些應放在微核心外,目前尚無明确的規定。現在一般都采用“機制與政策分離”的原理,将機制部分以及與硬體緊密相關的部分放入微核心中。由此可知微核心通常具有如下幾方面的功能:

  1) 程序(線程)管理                             

  2) 低級存儲器管理

  3) 中斷和陷入處理

 3. 微核心作業系統的優點

  由于微核心OS結構是建立在子產品化、階層化結構的基礎上的,并采用了客戶/伺服器模式和面向對象的程式設計技術,是以,微核心結構的作業系統是集各種技術優點之大成,因而使之具有如下優點:

  (1) 提高了系統的可擴充性。

  (2) 增強了系統的可靠性。

  (3) 可移植性強。

  (4) 提供了對分布式系統的支援。

  (5) 融入了面向對象技術。

 4. 微核心作業系統存在的問題

  應當指出,在微核心作業系統中,由于采用了非常小的核心,客戶/伺服器模式和消息傳遞機制雖給微核心作業系統帶來了許多優點,但由此也使微核心OS存在着潛在缺點,其中最主要的是,較之早期的作業系統,微核心作業系統的運作效率有所降低。

  實際情況是往往還會引起更多的上下文切換。例如,當某個伺服器自身尚無能力完成客戶請求而需要其它伺服器的幫助時,如圖1-12所示,其中的檔案伺服器還需要磁盤伺服器的幫助,這時就需要進行8次上下文的切換。

圖1-12 在傳統OS和微核心OS中的上下文切換

習    題   

1. 設計現代OS的主要目标是什麼?

  2.  OS的作用可表現在哪幾個方面?

  3. 為什麼說作業系統實作了對計算機資源的抽象?

  4. 試說明推動多道批處理系統形成和發展的主要動力是什麼。

  5. 何謂脫機I/O和聯機I/O?

  6. 試說明推動分時系統形成和發展的主要動力是什麼。

  7. 實作分時系統的關鍵問題是什麼? 應如何解決? 

8. 為什麼要引入實時作業系統?

  9. 什麼是硬實時任務和軟實時任務? 試舉例說明。

  10. 試從互動性、及時性以及可靠性方面将分時系統與實時系統進行比較。

  11.  OS有哪幾大特征? 其最基本的特征是什麼?

  12. 在多道程式技術的OS環境下的資源共享與一般情況下的資源共享有何不同? 對獨占資源應采取何種共享方式?

  13. 什麼是時分複用技術? 舉例說明它能提高資源使用率的根本原因是什麼。

  14. 是什麼原因使作業系統具有異步性特征?

  15. 處理機管理有哪些主要功能? 其主要任務是什麼?

  16. 記憶體管理有哪些主要功能? 其主要任務是什麼? 

17. 裝置管理有哪些主要功能? 其主要任務是什麼?

  18. 檔案管理有哪些主要功能? 其主要任務是什麼?

  19. 試說明推動傳統OS演變為現代OS的主要因素是什麼?

  20. 什麼是微核心OS?

  21. 微核心作業系統具有哪些優點? 它為何能有這些優點?

  22. 現代作業系統較之傳統作業系統又增加了哪些功能和特征?

  23. 在微核心OS中,為什麼要采用客戶/伺服器模式?

  24. 在基于微核心結構的OS中,應用了哪些新技術?

  25. 何謂微核心技術? 在微核心中通常提供了哪些功能? 

實時分時:https://blog.csdn.net/m0_37765662/article/details/83018523 

下一篇: 外觀模式face