




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第十四章操作系統結構設計14.1操作系統設計概述14.2傳統結構的操作系統14.3面向對象的程序設計14.4微內核OS結構14.5Windows2000的體系結構第十四章操作系統結構設計14.1操作系統設計概述114.1操作系統設計概述第十四章操作系統結構設計14.1操作系統設計概述第十四章操作系統結構設計214.1操作系統設計概述1.操作系統設計面臨的困難
⑴系統龐大:難于理解,無法保證OS是最優化的。
⑵系統存在并發情況:多個進程(含線程)的并發執行,提高了系統的效率,但給OS的設計帶來許多困難。
⑶能在不同的硬件平臺上運行:OS應具有很好的可移植性,但其解決會涉及到因機器的不同而異的硬件情況。
⑷能適應計算機硬件不斷地更新換代:OS必須具有很好的可適應性,以適應新產品和更新換代產品不斷地推出、應用的需求的迅速變化。
⑸防止用戶的不當行為:OS必須能防范懷有敵意用戶的破壞和盜竊系統中的文件和數據,防止他們有意干擾系統中其他用戶的正常運行。
⑹兼容以前的操作系統:為了保證在老版本環境下開發出的軟件,在新OS環境下也能很好地運行,新的OS版本也應當具有很好的對老版本的兼容性。14.1操作系統設計概述1.操作系統設計面臨的困難32.OS的設計目標
⑴完善的功能:OS所具備的功能,取決于其運行的平臺和環境,以及應用的需求。
⑵高效性:OS的高效性:①在OS中引入多道程序運行機制,提高系統中各種資源的利用率;②在運行時間的分配方面,應該是用于運行用戶程序的時間盡可能多,而用于系統管理的時間盡可能地減少。
⑶可靠性:①能保證處理結果的正確性;②OS的運行的可靠性。
⑷安全性:OS的安全性是整個系統的基礎。在設計OS時,應設置多道防線,以確保OS的安全性能達到“可信任計算機系統評價標準(TCSEC)”的C2級或更高。
⑸“可移植性”和“可適應性”:為了使OS能方便的運行在各種硬件平臺上,應使OS具有可移植性。在設計OS時,應使與硬件有關的部分相對獨立,并放在緊靠近硬件的位置。14.1操作系統設計概述2.OS的設計目標14.1操作系統設計概述43.OS結構設計簡介
⑴用工程化的方法對操作系統進行開發★早期OS的規模很小,OS是否是有結構的并不那么重要。★但隨著OS規模的愈來愈大,應采用工程化的開發方法來進行開發。★軟件工程的目標:所開發出的軟件產品應具有良好的軟件質量和合理的費用。★軟件質量的評價指標:功能性、有效性、可靠性、易使用性、可維護性和易移植性等。★軟件開發方法:模塊化、結構化、面向數據結構、面向對象的方法等。★利用不同的開發方法,所開發出的操作系統將具有不同的操作系統結構。14.1操作系統設計概述3.OS結構設計簡介14.1操作系統設計概述5
⑵幾種主要的操作系統結構
★OS結構:系統中各部分程序的存在方式及其相互聯系;
★當前主要存在的操作系統結構:
①無結構:如果OS中各部分,是以最基本的過程形式存在,而且,每個過程都可隨意地調用其它過程;②模塊化:對OS中各部分經過精心的劃分和組合,形成若干個相對獨立的模塊,并為模塊間定義了良好的接口;③分層式:按模塊間的調用順序,對模塊進行分層,在各層之間只存在單向的依賴關系;④微內核:人們集模塊化結構、層次式結構、客戶/服務器模式和面向對象技術之長,推出的一種嶄新的OS結構。該OS結構已成為現代OS的主要結構。14.1操作系統設計概述⑵幾種主要的操作系統結構14.1操作系統設計概述6
⑶結構設計的作用為了實現OS的正確性、可維護性、可適應性、可移植性等設計目標,必須經過功能設計、算法設計和結構設計三個階段。★結構設計具有獨特的不可被替代的作用;★模塊化結構能較好地保證正確性;★具有模塊化結構的OS,有助于提高系統的“可適應性”和“可移植性”;★分層式結構比模塊化結構能更好的保證操作系統設計目標的實現;★微內核OS結構,又比分層式結構能更好,也更容易地保證操作系統設計目標的實現;
返回14.1操作系統設計概述⑶結構設計的作用返回14.1操作系統設計概述714.2傳統結構的操作系統第十四章操作系統結構設計14.2傳統結構的操作系統第十四章操作系統結構設計814.2傳統結構的操作系統★傳統結構的操作系統第一代:早期的無結構操作系統第二代:模塊化結構的操作系統第三代:分層式結構的操作系統★現代結構的OS微內核結構的OS14.2傳統結構的操作系統★傳統結構的操作系統91.無結構操作系統(整體系統結構)
OS并不存在任何結構,只是龐大的一組過程的集合,每個過程可以任意地相互調用其它過程,致使操作系統內部既復雜又混亂。設計者注重實現功能和高效率,缺乏首尾一致的設計思想。程序設計的技巧,表現在如何編制緊湊的程序,以便于有效地利用內存。隨著系統的不斷擴大,由于缺乏清晰的程序結構,一方面會使所編制出的程序錯誤很多,給調試工作帶來很多困難,另一方面也使程序難以閱讀和理解,增加了維護人員的負擔。14.2傳統結構的操作系統1.無結構操作系統(整體系統結構)14.2傳統102.模塊化結構OS
★模塊化程序設計技術的基本概念基于“分解”和“模塊化”原則,對大型軟件的復雜度進行控制。將OS按其功能,精心地劃分為若干個具有一定獨立性和大小的模塊,每個模塊具有某方面的管理功能,并仔細地規定好各模塊間的接口,使各模塊之間能通過該接口實現交互,然后再進一步多次細分各模塊為子模塊,孫模塊,……。這種設計方法稱為模塊-接口法,由此所構成的就是具有模塊化結構的操作系統。14.2傳統結構的操作系統2.模塊化結構OS14.2傳統結構的操作系統112.模塊化結構OS
★模塊獨立性在模塊-接口法設計方法中,關鍵問題在于模塊的劃分和模塊之間接口的規定。模塊內部的復雜性,以及模塊間交互的復雜性,決定了操作系統的復雜性。在劃分模塊時:
◆模塊劃分的過小,雖然可以降低模塊本身的復雜性,但會引起模塊之間的聯系過多,從而造成系統比較混亂;
◆模塊劃分的過大,會增加模塊內部的復雜性,使內部的聯系增加。在劃分模塊時,應在兩者間進行權衡。2.模塊化結構OS★模塊獨立性122.模塊化結構OS衡量模塊的獨立性有以下兩個標準:
①內聚性指模塊內部各部分間聯系的緊密程度。內聚性越高,模塊獨立性越強。根據模塊的內聚性,又可把模塊分為五類:
邏輯內聚模塊:由若干個相關或相似的“處理”聚合成一個模塊,即該模塊實現一組邏輯相關的任務;
時間內聚模塊:由若干個“處理”時間相同的任務,聚合成一個模塊;
過程內聚模塊:由若干個相關,且必須按一定邏輯順序處理的任務,聚合成一個模塊;
數據內聚模塊:由若干個具有基于相同數據結構的“處理”聚合成一個模塊;
功能內聚模塊:為實現特定單一任務而構成的模塊。以按功能內聚所形成模塊的內聚性為最好,數據內聚模塊次之。2.模塊化結構OS衡量模塊的獨立性有以下兩個132.模塊化結構OS②耦合度指模塊間相互聯系和相互影響的程度。耦合可分為以下三種:
數據耦合:模塊間只存在明顯的數據傳送關系,即模塊之間是通過調用關系傳遞被處理的數據;
控制耦合:模塊之間通過調用關系不僅傳遞被處理的數據,而且還傳遞對運行有影響的控制信息;
非法耦合:模塊間彼此直接使用或修改對方的數據。上述中的第一種的耦合度較低,應減少第二種耦合,而不允許出現第三種耦合。2.模塊化結構OS14
★模塊接口法的優缺點
◆模塊-接口法的優點:
①提高OS設計的正確性、可理解性和可維護性。②增強OS的可適應性。③加速OS的開發過程。
◆模塊化結構設計存在的問題:
①接口規定困難。②無序性。14.2傳統結構的操作系統★模塊接口法的優缺點14.2傳統結構的操作系統153.分層式結構OS
為了將模塊-接口法中“決定順序”的無序性變為有序性,引入了有序分層法。分層法的設計任務是,在裸機系統(又稱宿主系統)A0和目標系統An和之間,鋪設若干個層次A1,A2,A3,…,An-1,使An通過A1,A2,A3,...層,最終能在A0上運行。14.2傳統結構的操作系統3.分層式結構OS14.2傳統結構的操作系統163.分層式結構OS鋪設這些中間層的方法有以下兩種:
①自底向上的分層
基本原則:每一步設計都是建立在可靠的基礎上。
基本概念:在用這種方法構成的操作系統時,將一個操作系統分為若干個層次,每層又由若干個模塊組成,各層之間只存在著單向的依賴關系,即高層僅依賴于緊鄰它的低層。例如:◆在調試第一層軟件A1時,由于它使用的是一個完全確定的物理機器(宿主系統)所提供的功能,在對第1層A1軟件經過精心設計和幾乎是窮盡無遺的測試后,可以認為A1是正確的,而且它將與其所有的高層軟件A2,...,An無關;◆在調試第二層軟件A2時,它也只使用了軟件A1和物理機器所提供的功能,而與其高層軟件A3,...,An無關,如此一層一層地自底向上增添軟件層,每一層都實現若干功能,最后總能構成一個能滿足需要的OS。
3.分層式結構OS鋪設這些中間層的方法有以下兩種:173.分層式結構OS
②自頂向下的分層
基本概念:
從頂層的目標系統An(總體功能模塊)出發,向下通過若干層,最后過渡到宿主系統A0。為實現An,對An進行第一次細化,由此形成虛機器An-1;由于An-1只是關于模塊的描述,它無法在物理機器上運行,故需對An_1的功能進一步細化,利用更多的子模塊來實現An_1功能,由此形成虛機器An-2;An-2仍然只是有關子模塊的描述而無法運行,需再對An-2進行細化,如此形成An-3,An-4,...,直至產生能在物理機器上運行的程序,即虛機器A1。自頂向下分層法的實質是,對目標系統的逐步求精。3.分層式結構OS②自頂向下的分層183.分層式結構OS
③層次的設置
一個操作系統應分為幾個層次,每個層次具有什么功能,各層間的順序應如何確定,是層次式結構設計的關鍵問題。下面列出了在對OS做分層結構設計時,應如何進行分層所必須考慮的幾個因素:
◆程序嵌套:OS層次時,首先需要考慮,將在實現OS每個功能時所形成的程序嵌套模塊,排成有序層次;或者按進程間單向發送信息的順序來分層。
◆可移植性:將那些與硬件緊密相關的軟件,放在最低層,使其緊靠著硬件。
◆運行頻率;將那些經常活躍的模塊放在最接近硬件的A1層。
◆公用模塊:把供多種管理程序調用的公用模塊,設置在最低層或次低層。
◆用戶接口:用戶與OS的接口都應設置在操作系統的最高層,直接提供給用戶使用。◆在虛擬存儲器環境下,應將存儲器管理模塊設置在較低的層次中,如A2層。在一般情況下,一個操作系統按照層次結構的原則,從底向上可以被安排為:裸機、與硬件緊密相關的功能、進程和線程的管理、內存管理、設備管理、文件管理、作業管理和命令管理,最上面是用戶。
3.分層式結構OS③層次的設置193.分層式結構OS
④分層結構的優缺點
★易保證系統的正確性。由于把一個大型操作系統,按照一定的原則,分為若干個功能較為單一的模塊,再進一步將這些模塊,按一定的規則,組織成層次結構,并使之具有單向依賴關系,這樣就形成了上一層功能是下一層功能的擴充或延伸,下一層功能為上一層功能提供了支撐和基礎,使整個系統中的接口少而清晰。采取自下而上的設計方式,使所有設計中的決定都是有序的,或者說是建立在較為可靠基礎上的,這樣,就比較容易保證整個系統的正確性。
★易擴充和易維護性。在系統中增加、修改或替換一個層次中的模塊或整個層次,只要不改變相應層次間的接口,就不會影響其他層次,這必將使系統維護和擴充變得更加容易。
★系統效率降低。分層結構也存在某些問題,由于層次結構是分層單向依賴的,必須在每層之間都要建立層次間的通信機制,特別是當系統較大、所設層次較多時,OS每執行一個功能,通常要自上而下地穿越多個層次,這無疑會增加系統的通信開銷,從而導致系統效率的降低。3.分層式結構OS④分層結構的優缺點203.分層式結構OS
⑤層次間的調用方式
在嚴格的層次結構中,只允許高層中的程序調用低層中的程序,其調用方式可有以下三種:
★Ai層次僅能調用Ai-1層中的程序。由Ai-1層提供的功能將形成Ai層的全部基礎。Ai層只能調用Ai-1層中的程序,而不能調用Ai-2,Ai-3,…,A1層中的程序。
★Ai層能調用所有低層中的程序。Ai層能直接調用其下面各層所提供的命令,無須逐層傳送。
★Ai層能調用部分低層中的程序。這是上述兩種方法的一種折衷。例如,除允許Ai層調用Ai-1層中的程序外,還允許它調用A1層中的許多公用程序,這樣,Ai層仍是與Ai-2,…,A2層隔離的。3.分層式結構OS⑤層次間的調用方式2114.3面向對象的程序設計
第十四章操作系統結構設計14.3面向對象的程序設計第十四章操作系統結構設計2214.3面向對象的程序設計
1.面向對象技術的引入
★傳統的設計方式的缺陷
⑴在利用面向過程的程序設計技術設計操作系統時,首先要為系統中各種硬件和軟件資源,設計出相應的數據結構和一組程序。對于系統中的共享資源,會有許多程序訪問用以描述該資源的數據結構。在這些程序中,如果任何一個程序操作出現了錯誤,就可能造成該數據結構出錯,此錯誤將會影響到另一個訪問它的程序,并會在系統中不斷擴大,直至整個系統。⑵采用模塊化結構和層次化結構技術設計操作系統時,雖可使發生錯誤的機會減少,但終難避免。一旦發生錯誤,該錯誤會通過模塊以及層次之間數據的流動,從而進一步影響到其它模塊和層次,同樣可能導致整個系統的破壞。⑶在系統中采用了大量的全局性變量,會很容易被人查看和修改,使系統的安全性受到威脅。
★解決方法引入類和對象的概念。在操作系統中,所謂“類”是指,為一個非共享資源定義一個數據結構,以及作用在該數據結構上的一組操作等,并將它們封裝起來,稱之為“類程”。并規定,在類程中的數據結構,只能被該類程內的一組過程訪問,其它進程要想訪問該類程中的數據,必需通過該類程方能進行。這樣,在類程中的數據,也就能得到很好的保護。14.3面向對象的程序設計1.面向對象技術的引入23
2.面向對象技術的基本概念
⑴對象
在面向對象的技術中,是利用被封裝的數據結構(變量),和一組對它進行操作的過程(方法),來表示系統中的某個對象的。
⑵對象類
對一組大體相似的對象進行定義。一個類,定義了一組變量和針對該變量的一組方法,用它們來描述一組對象的共同屬性和行為。在一般情況下,類中的變量沒有具體的值,而只是一個數據結構框架。類是在對象上的抽象,對象則是類的實例。對象類中所定義的變量在實例中均有具體的值。
⑶繼承
可以根據已有類,定義一個新的類。新類被稱為子類,原來的類被稱為父類。子類自動繼承父類中定義的變量和方法,并允許子類再增加新的內容。一個父類可以定義多個子類,一個子類有兩個父類或多個父類,它可以從多個父類獲得繼承,此時稱為“多重繼承”。
⑷多態性
不同對象在收到同一消息后,可以產生完全不同的結果。多態性是一個非常有用的特性,它允許用戶發送一通用的消息,而消息的實現細節,則由接收對象自己決定。這樣,同一消息就可以調用不同的方法;或者說,多態性可使不同的實現細節,隱藏在不同的接口之下。14.3面向對象的程序設計2.面向對象技術的基本概念14.3面向對象的程序設24
3.面向對象技術的優點
⑴通過“重用”提高產品質量和生產率
通過“重用”的方法,利用以前項目中經過精心測試的對象,或由其他人編寫、測試和維護的對象類,來構建新的系統,這不僅可大大降低開發成本,而且能獲得更好的系統質量。
⑵使系統具有更好的易修改性和易擴展性
通過封裝,可隱蔽對象中的變量和方法,當改變對象中的變量和方法時,不會影響到其它部分,從而可方便地修改老的對象類。通過利用繼承特性,在創建一個新對象類時,可顯著減少開發的時空開銷,使系統具有更好的易擴展性和靈活性。
⑶更易于保證系統的“正確性”和“可靠性”
對象是構成操作系統的基本單元,由于可以獨立地對其進行測試,易于保證每個對象的正確性和可靠性,比較容易保證整個系統的正確性和可靠性。封裝對對象類中的信息進行了隱蔽,這樣又可有效地防止未經授權者的訪問和用戶不正確的使用,有助于構建更為安全的系統。返回14.3面向對象的程序設計3.面向對象技術的優點返回14.3面向對象的程序設2514.4微內核OS結構第十四章操作系統結構設計14.4微內核OS結構第十四章操作系統結構設計2614.4微內核OS結構1.微內核OS的基本概念
⑴足夠小的內核
微內核并非是一個完整的OS,而只是放入操作系統中最基本的部分,是經過精心設計的、能實現現代OS最基本核心功能的小型內核。它與一般的OS(程序)不同,它更小更精煉,不僅運行在核心態,而且開機后常駐內存,它不會因內存緊張而被換出內存。
⑵基于客戶/服務器模式
將操作系統中最基本的部分,放入微內核中,而把操作系統的絕大部分功能,都放在微內核外面的一組服務器(進程)中實現,所有這些服務器,都屬于操作系統的一部分,并作為進程來實現的,但它們都運行在用戶態。14.4微內核OS結構1.微內核OS的基本概念27
⑶應用“機制和策略分離”原理
在現在操作系統的結構設計中,經常利用“機制與策略”分離的原理,來構造OS結構。
機制:是指在實現某一功能時的具體規定或說原則。
策略:是在機制的基礎上,借助于某些參數和算法,用以實現該功能的優化,或達到不同的功能目標。在傳統的OS中,將機制放在OS的內核的較低層,把策略放在內核的較高層次中。在微內操作系統中,通常將機制放在OS的微內核中。正因如此,才有可能將內核做的很小。
⑷采用面向對象技術
操作系統是一個極其復雜的大型軟件系統,我們不僅可以通過結構設計,分解操作系統的復雜度;還可以基于面向對象技術中的“抽象”和“隱蔽”原則,控制系統的復雜性;再進一步利用“對象”、“封裝”和“繼承”等概念,來確保操作系統的“正確性”、“可靠性”、“易修改性”、“易擴展性”等,并提高操作系統的設計速度。14.4微內核OS結構⑶應用“機制和策略分離”原理14.4微內核OS結構282.微內核的基本功能
在不同的微內核OS中,微內核的大小相差甚多,可達數十倍。微內核所具有的功能,也必然會有明顯的差異。至于哪些功能應放在微內核內,一般基于這樣三個原則:①將與硬件密切相關的功能放入微內核中;②根據“機制與策略”分離的原理,將機制部分放入微內核中,將策略部分放入微內核外的多個服務器中;③將使用頻率很高的功能,放入微內核中。由此可知,微內核通常含有如下幾方面的功能:14.4微內核OS結構2.微內核的基本功能14.4微內核OS結構29
⑴進程(線程)管理
在有的操作系統中,將整個進程管理都放在內核中,但大多數的微內核OS,進程管理功能的實現,都是基于“機制與策略”分離的原理,將機制(基本進程功能)放入微內核中。調度功能的機制部分,應將它放入微內核中。用戶(進程)優先級的策略屬于策略問題,應將它們于機制分開,可將它們放入微內核外的進程(線程)管理服務器中。進程(線程)之間的通信功能是微內核OS最基本的功能,被頻繁使用,將進程(線程)之間的通信功能放入微內核中。此外,還將進程的切換、線程的調度,以及多處理機之間的同步等功能,也放入微內核中。14.4微內核OS結構⑴進程(線程)管理30
⑵低級存儲器管理
通常在微內核中,只配置最基本的低級存儲器管理機制。實現虛擬存儲器管理的策略,則放在微內核外的存儲器管理服務器中去實現。
⑶中斷和陷入處理
中斷和陷入事件的類型非常多,處理過程也比較復雜,涉及到許多設備驅動程序和陷入處理程序,因此大多數微內核操作系統,都是將與硬件緊密相關的一小部分,放入微內核中處理。在傳統的操作系統中,進程管理、存儲器管理以及I/O管理,都是在操作系統的內核中實現的。在微內核OS中,則是將這些功能一分為二,把其中屬于機制的、很小一部分放入微內核中,把其余絕大部分,放在微內核外的各種服務器中來實現。事實上,其中大多數服務器,都要比微內核大。這進一步說明了,為什么能在采用客戶/服務器模式后,能把微內核做的很小的原因。14.4微內核OS結構⑵低級存儲器管理14.4微內核OS結構31
3.微內核操作系統的優點
⑴提高了系統可擴展性
微內核OS,幾乎無一例外的都采用了客戶/服務器模式,因此它的許多功能,都是由相對獨立的服務器軟件來實現的。當開發了新的硬件和軟件時,微內核只須在相應的服務器軟件中,增加新的功能,或再增加一個專門的服務器。與提高系統可擴展性的同時,也必然會改善系統的靈活性,不僅可在操作系統中增加新的功能,還可修改原有的功能,以及刪除已過時的老功能,以形成一個更為精干、有效和實用的操作系統。
14.4微內核OS結構3.微內核操作系統的優點14.4微內核OS結構32
⑵增強系統的可靠性
微內核OS能更進一步增強操作系統的可靠性。其原因可歸結為:①由于微內核是出于精心設計和嚴格測試的,容易保證其正確性;②它提供了規范而精簡的應用程序接口(API),為微內核外部的程序,編制高質量的代碼創造了條件;③由于所有服務器都是運行在用戶態,它們不能直接訪問硬件。再加上內核和服務器之間,采用的是消息傳遞通信機制,因此,當某個服務器出現錯誤時,通常是僅僅影響它自身,不會影響內核,也不會影響其它服務器。或者說,微內核結構OS能夠在服務器與內核之間,各服務器之間進行有效的隔離。
14.4微內核OS結構
⑶可移植性
作為一個好的操作系統,必須具備可移植性,使其能較容易地運行在不同的計算機硬件平臺上。由于在微內核結構的操作系統中,所有與特定CPU和I/O設備硬件有關的代碼,均放在內核和內核下面的硬件隱藏層中,而操作系統的其它絕大部分——各種服務器,均與硬件平臺無關。因而,當把操作系統移植到另一個計算機硬件平臺上,僅需做較小的修改。⑵增強系統的可靠性14.4微內核OS結構⑶33
⑷提供了對分布式系統的支持
由于在微內核OS中,客戶和服務器之間,以及服務器和服務器之間的通信,是采用消息傳遞通信機制,因而可使微內核OS能很好的支持分布式系統。事實上,只要在分布式系統中,對于所有的進程和服務器,均賦予唯一的標識符,在微內核中再配置一張系統映射表,在進行客戶與服務器通信時,標上發送進程和接收進程的標識符,微內核便可利用系統映射表,將消息發往目標,而無論目標是駐留在哪臺機器上。
⑸融入了面向對象技術
在設計微內核OS時,采用了面向對象的技術,其中的“封裝”、“繼承”、“對象類”和“多態性”,以及在對象之間采用消息傳遞機制等,都十分有利于提高系統的“正確性”、“可靠性”、“易修改性”、“易擴展性”等,而且還能顯著地減少開發系統所付出的開銷。14.4微內核OS結構⑷提供了對分布式系統的支持⑸融入了面向對象技34
4.微內核OS存在的問題
由于微內核OS的內核非常小,也使微內核OS具有潛在的缺點。其中最主要的是,它較之早期OS而言,其運行效率有所降低。
效率降低最主要的原因:在完成一次客戶對OS提出的服務請求時,需要利用消息實現多次交互,和進行用戶/內核模式和上下文的多次切換。
★在早期的OS中,用戶進程在請求取得OS服務時,一般只需進行兩次上下文的切換:①一次是在執行系統調用后,由用戶態轉向系統態時;②另一次是在系統完成用戶請求的服務后,由系統態返回用戶態時。★在微內核OS中,由于客戶和服務器間、以及服務器和服務器之間的通信,都需通過微內核,致使同樣的服務請求,至少需要進行四次上下文切換:①第一次是發生在客戶發送請求消息給內核,以請求取得某服務器特定的服務時;②第二次是發生在由內核把客戶的請求消息,發往服務器時;③第三次是當服務器完成客戶請求后,把響應消息發送到內核時;④第四次是在內核將響應消息發送給客戶時。實際情況往往還會引起更多的上下文切換。
14.4微內核OS結構4.微內核OS存在的問題14.4微內核OS結構35
例如,當某個服務器自身尚無能力完成客戶請求,而需要其它服務器的幫助時,如圖所示。其中的文件服務器還需要磁盤服務器的幫助,這時就需要進行8次上下文的切換。
為了改善運行效率,可以重新把一些常用的操作系統基本功能,由服務器移入微內核中。這樣,可使客戶對常用操作系統功能的請求,所發生的用戶/內核模式,和上下文的切換的次數,由四次或八次降為兩次。但這又會使微內核的容量有明顯的增大。另外,在小型接口定義和適應性方面的優點也有所下降、也提高了微內核的設計代價。
返回14.4微內核OS結構例如,當某個服務器自身尚無能力完成客戶請求,而需要其3614.5Windows2000的體系結構第十四章操作系統結構設計14.5Windows2000的體系結構第十四章操作系統3714.5.1概述14.5.1概述3814.5.2系統核心態組件
1.硬件抽象層HAL(HardwareAbstractionLayer)
Windows2000的一個重要目標,是能夠讓操作系統跨平臺移植。為此,微軟公司在緊靠硬件的地方,鋪設了一個很小的硬件抽象層HAL,它在通用的硬件命令和響應,與某一特定專用平臺的硬件命令和響應之間,進行映射。將OS中的內核,設備驅動程序以及執行體和硬件隔離開,即隱藏機器中的系統總線、中斷控制機構、直接存取訪問控制器及存儲器中的地址映射機構等與硬件有關操作的實現細節,從HAL以上的各層次來看待這些操作都是相同的。當要把操作系統移植到其它的硬件平臺時,通過HAL提供的服務和間接硬件尋址,驅動程序和內核只需做很少的改動。HAL是一個可加載的核心態模塊HAL.DLL,是運行在計算機硬件平臺上的低級接口。14.5.2系統核心態組件1.硬件抽象層HAL(3914.5.2系統核心態組件由于HAL高度依賴于系統中的硬件,因此它必須與系統中裝入的硬件完全匹配。為此,在Windows2000中提供了多種HAL,供在系統安裝時選擇。在這里以一個較常用的HAL為例,來說明其所具有的功能:
①在HAL中,專門為設計驅動程序的程序員,提供了三對讀/寫寄存器的函數,用于對寄存器進行訪問;②由于在現代計算機中,通常都會有多種總線,如ISA、PIC、SCSI、USB和1394等,因此,需要按某種方式來區別它們;在HAL中,提供了一種服務,即總線獨立的設備尋址,使驅動程序可以無須知道該設備是具體連接在什么總線上;③在中斷處理中,同樣也涉及到上述的總線問題,而HAL提供了允許驅動程序以可移植的方式,將中斷服務例程與中斷聯系起來,而無須了解中斷向量與總線的對應關系;此外,在HAL中還包括對中斷請求級別的管理;14.5.2系統核心態組件由于HAL高度依賴于系統4014.5.2系統核心態組件
④HAL還提供了以設備獨立方式,設置并管理DMA傳輸;⑤以可移植方式,管理時鐘和定時器,時間的最小單位也減小為100ns;⑥為規范多處理機之間的競爭,在HAL中提供了一種簡單的同步機制—自旋鎖(Spinlock),在任一時刻,只有一個線程能獲得自旋鎖,其它試圖獲得自旋鎖的進程,將一直進行嘗試,直到獲得該鎖;在Windows2000中,自旋鎖用于控制CPU等待其它CPU占用資源的釋放;⑦在HAL中,還有與BIOS對話的功能,用于系統初啟時,去查明系統中,包含了哪些總線和I/O設備,以及它們是如何配置的,HAL將這些信息存入注冊表中。圖14-8示出了某種HAL所具有的功能。14.5.2系統核心態組件④HAL還提供了以設備4114.5.2系統核心態組件2.內核
位于HAL之上的一層,包含了內核和設備驅動程序。內核位于HAL之上,它通過HAL訪問硬件,并和HAL一起,構建一個更為完善的抽象硬件層,使內核以上的部分——執行體,用C語言編寫的,完全與硬件無關。內核自身還有小部分與硬件有關,但大部已做到與硬件無關,仍然是采用C語言編寫的。內核的一部分和HAL的大部分,長期駐留在主存,可通過調整優先級,來控制自己是否允許被I/O中斷打斷。在Windows2000內核中,提供了一組經嚴格定義、且可預測的最基本的功能模塊,作為整個OS工作的基礎。在內核中,還有若干個用于控制系統的控制對象,如DPC(DeferredProcedureCall,延遲過程調用)對象,它用于中斷服務過程中,把對時間要求不嚴格的部分,從時間要求嚴格的部分中分離出來,排成一個DPC隊列,以保證對時間要求嚴格的部分能及時處理。此外還有中斷和異常(事件)處理,多處理機的同步等。14.5.2系統核心態組件2.內核4214.5.2系統核心態組件3.設備驅動程序
在Windows2000中,配置的設備驅動程序,是可加載的核心態模塊。由于在Windows2000中配置了HAL,使得在Windows2000/XP中的設備驅動程序,不直接操作硬件,而是調用HAL的某些部分,來控制硬件的接口。設備驅動程序包括以下幾類:
①硬件設備驅動程序,該程序接收面向設備的I/O請求,將用戶的I/O函數調用,轉換為對特定硬件設備的I/O請求,再通過HAL去讀寫物理設備或網絡;
②文件系統驅動程序,接受面向文件的I/O請求,并把它們轉化為對指定設備的I/O請求;
③過濾器驅動程序,它截獲I/O請求,并按照特定的要求進行處理,如將要傳送到磁盤的數據進行壓縮,或將要傳送到網絡的數據進行加密等,并把處理的結果傳送到下一層;
④網絡重定向程序和服務器,一類文件系統驅動程序,傳輸遠程I/O請求。14.5.2系統核心態組件3.設備驅動程序4314.5.2系統核心態組件4.圖形設備接口Windows32GDI(GraphicsDeviceInterface)
該模塊是用于處理有關窗口和用戶界面的圖形接口。在早期的版本中,它運行在用戶態。為了提高性能,從WindowsNT4.0開始,該模塊被放入內核空間。在GDI中所包括的內容非常多,即含有成百上千條對圖形接口的調用,可分成以下幾大類:
①窗口和打印機的圖像管理的調用:其中有創建、撤消、管理和使用窗口的菜單、工具欄、對話框和圖標等調用;②用于處理字體和圖像的調用:包括處理字體的類型和大小、在屏幕上畫幾何圖形,填充顏色,操作調色板等;③對多種設備驅動程序的調用:如對鍵盤、鼠標、音頻輸入/輸出、打印機輸出程序的調用等。14.5.2系統核心態組件4.圖形設備接口Wind4414.5.3執行體
在執行體中提供了許多功能各異的模塊,如下所述:1.I/O管理模塊
用于處理系統中的所有I/O請求,并提供所有類型驅動程序調用的統一接口。執行獨立于設備的輸入/輸出,并為進一步的處理,分配適當的設備驅動程序。該模塊又包括以下幾個子模塊:文件系統驅動程序、網絡驅動程序以及硬件設備驅動程序等。2.虛擬內存管理器
該模塊用于實現內存分配(和回收)和“虛擬內存”功能,把進程地址空間中的虛地址,映射成內存頁框,從而為每個進程,提供了一個大的專用地址空間。同時保護每個進程的地址空間,不被其他進程占用。在Windows2000中,允許頁面大小從4KB到64KB,以適應不同機器的需要。Windows2000的虛存管理器,還可在各種平臺的機器上,運行內存管理器,也為高速緩存管理器提供基本的支持。14.5.3執行體在執行體中提供了許多功能各異的4514.5.3執行體3.對象管理器
它以一致的方法,創建和管理以及刪除所有類型的對象,為對象的保持、命名和安全性設置,實施統一的規則。由它代表應用程序,創建和銷毀對象。當創建一對象后,將向應用程序返回代表該新對象的一個句柄。4.進程/線程管理器
該模塊可用于創建一個新的進程對象及其主線程,使之執行指定操作。同時也指定它繼承其父進程的屬性。能終止一個進程和它所有的線程,使之退出系統。此外,還可對進程和線程對象實施跟蹤,以了解其運行情況。5.安全引用監控器
在Windows2000中,提供了一種統一的訪問控制機制,該機制利用與每個進程相關聯的“訪問令牌”,和與每個對象相關聯的“安全描述符”這兩個訪問控制實體,來保障諸進程之間的訪問,執行運行時對象的保護和監視。該機制適用于諸如進程、線程、文件、I/O設備、窗口和其它許多對象。14.5.3執行體3.對象管理器4614.5.3執行體6.高速緩存管理器
在Windows2000中,有一個單獨的高速緩存,它適應于FAT16,FAT32和NTFS等文件系統。高速緩存管理器在主存中,為所有文件系統和網絡,提供高速緩存服務。其主要任務是,在內存中,記住最近使用過的文件盤塊號,以便加速隨后對該盤塊訪問的速度。
7.即插即用(PlusandPlay)管理器
簡稱PnP管理器,它用于提供對計算機系統中硬件配置的改變進行識別的功能,并兼有去適應硬件配置改變的能力。例如,當發現系統增加一新硬件時,它便為該硬件加載相應的設備驅動程序,以使用戶能正確的使用該硬件。8.電源管理器
在Windows2000中,可根據電源能源的消耗情況,將電源分為六個狀態,即S0,S1,S2,S3,S4及S5狀態。其中S0狀態,相當于耗能最大的正常工作狀態,S1狀態的耗能>S2狀態的耗能,而S5為關機狀態。電源管理器根據系統活動的情況,和控制面板電源開關的設置及系統電源情況等因素,去決定電源應處于哪種狀態。14.5.3執行體6.高速緩存管理器4714.5.3執行體9.本地過程調用LPC(LocalProcedureCall)機制
在網絡和分布式環境下,客戶和服務器之間的通信,廣泛采用遠程過程調用RPC機制,在Windows2000的單機環境下,采用了類似于RPC方式,但經過優化、效率更高的本地過程調用IPC(LocalProcedureCall)方法,來實現同一機器中的應用進程(客戶),與執行系統(服務器)之間的通信。LPC是一個基于連接的通信機制,為不同地址空間內的兩個線程,提供一種高速交換信息的方法,可利用建立的連接,將數據從一個線程的地址空間,傳送到另一線程的地址空間。
14.5.3執行體9.本地過程調用LPC(Loc4814.5.4用戶態進程1.系統支持進程
在Windows2000中,包括了如下多個系統支持進程:
①系統空閑進程Idle,在系統中設有一個Idle進程,對于每個CPU,Idle進程都配置有一個相應的線程,用于統計相應CPU的空閑時間;
②System進程和System線程,是特殊類型的System線程的宿主進程,用于執行加載于系統空間中的代碼;
③會話管理器SMSS,是第一個由核心System線程創建的用戶態進程,用于執行一些關鍵的系統初始化步驟,設置系統環境變量、加載部分系統程序等;
④WIN32子系統CSRSS,它是WIN32API子系統的核心部分,關于WIN32API將在本小節后面介紹;
⑤登錄進程WinLogon,用于處理用戶登錄和注銷;
⑥本地安全身份鑒別服務器進程LSASS,接收來自于WinLogon進程的身份驗證請求,并執行實際驗證。14.5.4用戶態進程1.系統支持進程4914.5.4用戶態進程2.服務進程
服務進程負責啟動、停止和與服務控制器交互,并管理對一系列用戶態進程的服務。例如,注冊、啟動、響應狀態請求、暫停或關閉服務。一些Windows2000組件,是作為服務來實現的,例如事件日志、假脫機、RPC支持等。
14.5.4用戶態進程2.服務進程5014.5.4用戶態進程3.環境子系統
環境子系統的作用,是將基本執行體中的某些服務,提供給應用程序,為它們提供運行環境,這是Windows操作系統實現與其它軟件系統,如DOS、Windows、OS/2、LANManager和符合POSIX規范的UNIX相兼容的重要組成部分。由于在環境子系統的支持下,可以運行在其它操作系統環境下開發的程序,因此環境子系統又稱為虛擬機。Windows2000具有三個環境子系統:WIN32API、POSIX和OS/21.2。其中,Win32子系統一直處于活動狀態,而其它兩個子系統,僅當需要時才被啟動。
14.5.4用戶態進程3.環境子系統513.環境子系統★WIN32API(ApplicationProgrammingInterface)
在Windows2000中,定義了應用程序接口WIN32API,程序員通過WIN32API就能取得操作系統的服務。WIN32API調用的數量非常多,且在不斷增加。其功能覆蓋了操作系統能夠處理的各個方面。WIN32API允許程序運行在幾乎所有的Windows操作系統上,如圖14-9所示,只是其中的Windows3.X需要把一部分32位的API映射到16位的操作系統上。3.環境子系統★WIN32API(Applicat523.環境子系統★POSIX標準
由于在不同的操作系統所提供的系統調用間,存在很大的差異,使應用軟件難于跨平臺應用,而POSIX正是用于解決該問題的一個標準。它為不同平臺下的應用程序,提供了相同的API。事實上,一個應用程序只要符合POSIX標準,就能在UNIX和Windows這兩個操作系統上運行。POSIX大約有100個過程調用,可分為四類:進程管理、文件管理、目錄管理和其它類。★OS/21.2
1984年Intel公司推出了80286處理器芯片,IBM和微軟公司為它開發了OS/2操作系統,后來又為80386開發了OS/22.2操作系統。環境子系統OS/2,也為OS/2的應用程序提供了支持。
3.環境子系統★POSIX標準534.用戶應用程序
用戶應用程序可以是WIN32、Windows3.1、MS-DOS、POSIX或OS/2五種類型之一。在Windows2000中,用戶應用程序(服務進程也是這樣)不能直接調用本地Windows2000操作系統服務,但它們能通過一個或多個“子系統動態鏈接庫”調用。子系統動態鏈接庫的作用,是將公開的調用接口,轉換為適當的系統內部形式的Windows2000系統服務調用。14.5.4用戶態進程返回4.用戶應用程序14.5.4用戶態進程返回54TheEndTheEnd55第十四章操作系統結構設計14.1操作系統設計概述14.2傳統結構的操作系統14.3面向對象的程序設計14.4微內核OS結構14.5Windows2000的體系結構第十四章操作系統結構設計14.1操作系統設計概述5614.1操作系統設計概述第十四章操作系統結構設計14.1操作系統設計概述第十四章操作系統結構設計5714.1操作系統設計概述1.操作系統設計面臨的困難
⑴系統龐大:難于理解,無法保證OS是最優化的。
⑵系統存在并發情況:多個進程(含線程)的并發執行,提高了系統的效率,但給OS的設計帶來許多困難。
⑶能在不同的硬件平臺上運行:OS應具有很好的可移植性,但其解決會涉及到因機器的不同而異的硬件情況。
⑷能適應計算機硬件不斷地更新換代:OS必須具有很好的可適應性,以適應新產品和更新換代產品不斷地推出、應用的需求的迅速變化。
⑸防止用戶的不當行為:OS必須能防范懷有敵意用戶的破壞和盜竊系統中的文件和數據,防止他們有意干擾系統中其他用戶的正常運行。
⑹兼容以前的操作系統:為了保證在老版本環境下開發出的軟件,在新OS環境下也能很好地運行,新的OS版本也應當具有很好的對老版本的兼容性。14.1操作系統設計概述1.操作系統設計面臨的困難582.OS的設計目標
⑴完善的功能:OS所具備的功能,取決于其運行的平臺和環境,以及應用的需求。
⑵高效性:OS的高效性:①在OS中引入多道程序運行機制,提高系統中各種資源的利用率;②在運行時間的分配方面,應該是用于運行用戶程序的時間盡可能多,而用于系統管理的時間盡可能地減少。
⑶可靠性:①能保證處理結果的正確性;②OS的運行的可靠性。
⑷安全性:OS的安全性是整個系統的基礎。在設計OS時,應設置多道防線,以確保OS的安全性能達到“可信任計算機系統評價標準(TCSEC)”的C2級或更高。
⑸“可移植性”和“可適應性”:為了使OS能方便的運行在各種硬件平臺上,應使OS具有可移植性。在設計OS時,應使與硬件有關的部分相對獨立,并放在緊靠近硬件的位置。14.1操作系統設計概述2.OS的設計目標14.1操作系統設計概述593.OS結構設計簡介
⑴用工程化的方法對操作系統進行開發★早期OS的規模很小,OS是否是有結構的并不那么重要。★但隨著OS規模的愈來愈大,應采用工程化的開發方法來進行開發。★軟件工程的目標:所開發出的軟件產品應具有良好的軟件質量和合理的費用。★軟件質量的評價指標:功能性、有效性、可靠性、易使用性、可維護性和易移植性等。★軟件開發方法:模塊化、結構化、面向數據結構、面向對象的方法等。★利用不同的開發方法,所開發出的操作系統將具有不同的操作系統結構。14.1操作系統設計概述3.OS結構設計簡介14.1操作系統設計概述60
⑵幾種主要的操作系統結構
★OS結構:系統中各部分程序的存在方式及其相互聯系;
★當前主要存在的操作系統結構:
①無結構:如果OS中各部分,是以最基本的過程形式存在,而且,每個過程都可隨意地調用其它過程;②模塊化:對OS中各部分經過精心的劃分和組合,形成若干個相對獨立的模塊,并為模塊間定義了良好的接口;③分層式:按模塊間的調用順序,對模塊進行分層,在各層之間只存在單向的依賴關系;④微內核:人們集模塊化結構、層次式結構、客戶/服務器模式和面向對象技術之長,推出的一種嶄新的OS結構。該OS結構已成為現代OS的主要結構。14.1操作系統設計概述⑵幾種主要的操作系統結構14.1操作系統設計概述61
⑶結構設計的作用為了實現OS的正確性、可維護性、可適應性、可移植性等設計目標,必須經過功能設計、算法設計和結構設計三個階段。★結構設計具有獨特的不可被替代的作用;★模塊化結構能較好地保證正確性;★具有模塊化結構的OS,有助于提高系統的“可適應性”和“可移植性”;★分層式結構比模塊化結構能更好的保證操作系統設計目標的實現;★微內核OS結構,又比分層式結構能更好,也更容易地保證操作系統設計目標的實現;
返回14.1操作系統設計概述⑶結構設計的作用返回14.1操作系統設計概述6214.2傳統結構的操作系統第十四章操作系統結構設計14.2傳統結構的操作系統第十四章操作系統結構設計6314.2傳統結構的操作系統★傳統結構的操作系統第一代:早期的無結構操作系統第二代:模塊化結構的操作系統第三代:分層式結構的操作系統★現代結構的OS微內核結構的OS14.2傳統結構的操作系統★傳統結構的操作系統641.無結構操作系統(整體系統結構)
OS并不存在任何結構,只是龐大的一組過程的集合,每個過程可以任意地相互調用其它過程,致使操作系統內部既復雜又混亂。設計者注重實現功能和高效率,缺乏首尾一致的設計思想。程序設計的技巧,表現在如何編制緊湊的程序,以便于有效地利用內存。隨著系統的不斷擴大,由于缺乏清晰的程序結構,一方面會使所編制出的程序錯誤很多,給調試工作帶來很多困難,另一方面也使程序難以閱讀和理解,增加了維護人員的負擔。14.2傳統結構的操作系統1.無結構操作系統(整體系統結構)14.2傳統652.模塊化結構OS
★模塊化程序設計技術的基本概念基于“分解”和“模塊化”原則,對大型軟件的復雜度進行控制。將OS按其功能,精心地劃分為若干個具有一定獨立性和大小的模塊,每個模塊具有某方面的管理功能,并仔細地規定好各模塊間的接口,使各模塊之間能通過該接口實現交互,然后再進一步多次細分各模塊為子模塊,孫模塊,……。這種設計方法稱為模塊-接口法,由此所構成的就是具有模塊化結構的操作系統。14.2傳統結構的操作系統2.模塊化結構OS14.2傳統結構的操作系統662.模塊化結構OS
★模塊獨立性在模塊-接口法設計方法中,關鍵問題在于模塊的劃分和模塊之間接口的規定。模塊內部的復雜性,以及模塊間交互的復雜性,決定了操作系統的復雜性。在劃分模塊時:
◆模塊劃分的過小,雖然可以降低模塊本身的復雜性,但會引起模塊之間的聯系過多,從而造成系統比較混亂;
◆模塊劃分的過大,會增加模塊內部的復雜性,使內部的聯系增加。在劃分模塊時,應在兩者間進行權衡。2.模塊化結構OS★模塊獨立性672.模塊化結構OS衡量模塊的獨立性有以下兩個標準:
①內聚性指模塊內部各部分間聯系的緊密程度。內聚性越高,模塊獨立性越強。根據模塊的內聚性,又可把模塊分為五類:
邏輯內聚模塊:由若干個相關或相似的“處理”聚合成一個模塊,即該模塊實現一組邏輯相關的任務;
時間內聚模塊:由若干個“處理”時間相同的任務,聚合成一個模塊;
過程內聚模塊:由若干個相關,且必須按一定邏輯順序處理的任務,聚合成一個模塊;
數據內聚模塊:由若干個具有基于相同數據結構的“處理”聚合成一個模塊;
功能內聚模塊:為實現特定單一任務而構成的模塊。以按功能內聚所形成模塊的內聚性為最好,數據內聚模塊次之。2.模塊化結構OS衡量模塊的獨立性有以下兩個682.模塊化結構OS②耦合度指模塊間相互聯系和相互影響的程度。耦合可分為以下三種:
數據耦合:模塊間只存在明顯的數據傳送關系,即模塊之間是通過調用關系傳遞被處理的數據;
控制耦合:模塊之間通過調用關系不僅傳遞被處理的數據,而且還傳遞對運行有影響的控制信息;
非法耦合:模塊間彼此直接使用或修改對方的數據。上述中的第一種的耦合度較低,應減少第二種耦合,而不允許出現第三種耦合。2.模塊化結構OS69
★模塊接口法的優缺點
◆模塊-接口法的優點:
①提高OS設計的正確性、可理解性和可維護性。②增強OS的可適應性。③加速OS的開發過程。
◆模塊化結構設計存在的問題:
①接口規定困難。②無序性。14.2傳統結構的操作系統★模塊接口法的優缺點14.2傳統結構的操作系統703.分層式結構OS
為了將模塊-接口法中“決定順序”的無序性變為有序性,引入了有序分層法。分層法的設計任務是,在裸機系統(又稱宿主系統)A0和目標系統An和之間,鋪設若干個層次A1,A2,A3,…,An-1,使An通過A1,A2,A3,...層,最終能在A0上運行。14.2傳統結構的操作系統3.分層式結構OS14.2傳統結構的操作系統713.分層式結構OS鋪設這些中間層的方法有以下兩種:
①自底向上的分層
基本原則:每一步設計都是建立在可靠的基礎上。
基本概念:在用這種方法構成的操作系統時,將一個操作系統分為若干個層次,每層又由若干個模塊組成,各層之間只存在著單向的依賴關系,即高層僅依賴于緊鄰它的低層。例如:◆在調試第一層軟件A1時,由于它使用的是一個完全確定的物理機器(宿主系統)所提供的功能,在對第1層A1軟件經過精心設計和幾乎是窮盡無遺的測試后,可以認為A1是正確的,而且它將與其所有的高層軟件A2,...,An無關;◆在調試第二層軟件A2時,它也只使用了軟件A1和物理機器所提供的功能,而與其高層軟件A3,...,An無關,如此一層一層地自底向上增添軟件層,每一層都實現若干功能,最后總能構成一個能滿足需要的OS。
3.分層式結構OS鋪設這些中間層的方法有以下兩種:723.分層式結構OS
②自頂向下的分層
基本概念:
從頂層的目標系統An(總體功能模塊)出發,向下通過若干層,最后過渡到宿主系統A0。為實現An,對An進行第一次細化,由此形成虛機器An-1;由于An-1只是關于模塊的描述,它無法在物理機器上運行,故需對An_1的功能進一步細化,利用更多的子模塊來實現An_1功能,由此形成虛機器An-2;An-2仍然只是有關子模塊的描述而無法運行,需再對An-2進行細化,如此形成An-3,An-4,...,直至產生能在物理機器上運行的程序,即虛機器A1。自頂向下分層法的實質是,對目標系統的逐步求精。3.分層式結構OS②自頂向下的分層733.分層式結構OS
③層次的設置
一個操作系統應分為幾個層次,每個層次具有什么功能,各層間的順序應如何確定,是層次式結構設計的關鍵問題。下面列出了在對OS做分層結構設計時,應如何進行分層所必須考慮的幾個因素:
◆程序嵌套:OS層次時,首先需要考慮,將在實現OS每個功能時所形成的程序嵌套模塊,排成有序層次;或者按進程間單向發送信息的順序來分層。
◆可移植性:將那些與硬件緊密相關的軟件,放在最低層,使其緊靠著硬件。
◆運行頻率;將那些經常活躍的模塊放在最接近硬件的A1層。
◆公用模塊:把供多種管理程序調用的公用模塊,設置在最低層或次低層。
◆用戶接口:用戶與OS的接口都應設置在操作系統的最高層,直接提供給用戶使用。◆在虛擬存儲器環境下,應將存儲器管理模塊設置在較低的層次中,如A2層。在一般情況下,一個操作系統按照層次結構的原則,從底向上可以被安排為:裸機、與硬件緊密相關的功能、進程和線程的管理、內存管理、設備管理、文件管理、作業管理和命令管理,最上面是用戶。
3.分層式結構OS③層次的設置743.分層式結構OS
④分層結構的優缺點
★易保證系統的正確性。由于把一個大型操作系統,按照一定的原則,分為若干個功能較為單一的模塊,再進一步將這些模塊,按一定的規則,組織成層次結構,并使之具有單向依賴關系,這樣就形成了上一層功能是下一層功能的擴充或延伸,下一層功能為上一層功能提供了支撐和基礎,使整個系統中的接口少而清晰。采取自下而上的設計方式,使所有設計中的決定都是有序的,或者說是建立在較為可靠基礎上的,這樣,就比較容易保證整個系統的正確性。
★易擴充和易維護性。在系統中增加、修改或替換一個層次中的模塊或整個層次,只要不改變相應層次間的接口,就不會影響其他層次,這必將使系統維護和擴充變得更加容易。
★系統效率降低。分層結構也存在某些問題,由于層次結構是分層單向依賴的,必須在每層之間都要建立層次間的通信機制,特別是當系統較大、所設層次較多時,OS每執行一個功能,通常要自上而下地穿越多個層次,這無疑會增加系統的通信開銷,從而導致系統效率的降低。3.分層式結構OS④分層結構的優缺點753.分層式結構OS
⑤層次間的調用方式
在嚴格的層次結構中,只允許高層中的程序調用低層中的程序,其調用方式可有以下三種:
★Ai層次僅能調用Ai-1層中的程序。由Ai-1層提供的功能將形成Ai層的全部基礎。Ai層只能調用Ai-1層中的程序,而不能調用Ai-2,Ai-3,…,A1層中的程序。
★Ai層能調用所有低層中的程序。Ai層能直接調用其下面各層所提供的命令,無須逐層傳送。
★Ai層能調用部分低層中的程序。這是上述兩種方法的一種折衷。例如,除允許Ai層調用Ai-1層中的程序外,還允許它調用A1層中的許多公用程序,這樣,Ai層仍是與Ai-2,…,A2層隔離的。3.分層式結構OS⑤層次間的調用方式7614.3面向對象的程序設計
第十四章操作系統結構設計14.3面向對象的程序設計第十四章操作系統結構設計7714.3面向對象的程序設計
1.面向對象技術的引入
★傳統的設計方式的缺陷
⑴在利用面向過程的程序設計技術設計操作系統時,首先要為系統中各種硬件和軟件資源,設計出相應的數據結構和一組程序。對于系統中的共享資源,會有許多程序訪問用以描述該資源的數據結構。在這些程序中,如果任何一個程序操作出現了錯誤,就可能造成該數據結構出錯,此錯誤將會影響到另一個訪問它的程序,并會在系統中不斷擴大,直至整個系統。⑵采用模塊化結構和層次化結構技術設計操作系統時,雖可使發生錯誤的機會減少,但終難避免。一旦發生錯誤,該錯誤會通過模塊以及層次之間數據的流動,從而進一步影響到其它模塊和層次,同樣可能導致整個系統的破壞。⑶在系統中采用了大量的全局性變量,會很容易被人查看和修改,使系統的安全性受到威脅。
★解決方法引入類和對象的概念。在操作系統中,所謂“類”是指,為一個非共享資源定義一個數據結構,以及作用在該數據結構上的一組操作等,并將它們封裝起來,稱之為“類程”。并規定,在類程中的數據結構,只能被該類程內的一組過程訪問,其它進程要想訪問該類程中的數據,必需通過該類程方能進行。這樣,在類程中的數據,也就能得到很好的保護。14.3面向對象的程序設計1.面向對象技術的引入78
2.面向對象技術的基本概念
⑴對象
在面向對象的技術中,是利用被封裝的數據結構(變量),和一組對它進行操作的過程(方法),來表示系統中的某個對象的。
⑵對象類
對一組大體相似的對象進行定義。一個類,定義了一組變量和針對該變量的一組方法,用它們來描述一組對象的共同屬性和行為。在一般情況下,類中的變量沒有具體的值,而只是一個數據結構框架。類是在對象上的抽象,對象則是類的實例。對象類中所定義的變量在實例中均有具體的值。
⑶繼承
可以根據已有類,定義一個新的類。新類被稱為子類,原來的類被稱為父類。子類自動繼承父類中定義的變量和方法,并允許子類再增加新的內容。一個父類可以定義多個子類,一個子類有兩個父類或多個父類,它可以從多個父類獲得繼承,此時稱為“多重繼承”。
⑷多態性
不同對象在收到同一消息后,可以產生完全不同的結果。多態性是一個非常有用的特性,它允許用戶發送一通用的消息,而消息的實現細節,則由接收對象自己決定。這樣,同一消息就可以調用不同的方法;或者說,多態性可使不同的實現細節,隱藏在不同的接口之下。14.3面向對象的程序設計2.面向對象技術的基本概念14.3面向對象的程序設79
3.面向對象技術的優點
⑴通過“重用”提高產品質量和生產率
通過“重用”的方法,利用以前項目中經過精心測試的對象,或由其他人編寫、測試和維護的對象類,來構建新的系統,這不僅可大大降低開發成本,而且能獲得更好的系統質量。
⑵使系統具有更好的易修改性和易擴展性
通過封裝,可隱蔽對象中的變量和方法,當改變對象中的變量和方法時,不會影響到其它部分,從而可方便地修改老的對象類。通過利用繼承特性,在創建一個新對象類時,可顯著減少開發的時空開銷,使系統具有更好的易擴展性和靈活性。
⑶更易于保證系統的“正確性”和“可靠性”
對象是構成操作系統的基本單元,由于可以獨立地對其進行測試,易于保證每個對象的正確性和可靠性,比較容易保證整個系統的正確性和可靠性。封裝對對象類中的信息進行了隱蔽,這樣又可有效地防止未經授權者的訪問和用戶不正確的使用,有助于構建更為安全的系統。返回14.3面向對象的程序設計3.面向對象技術的優點返回14.3面向對象的程序設8014.4微內核OS結構第十四章操作系統結構設計14.4微內核OS結構第十四章操作系統結構設計8114.4微內核OS結構1.微內核OS的基本概念
⑴足夠小的內核
微內核并非是一個完整的OS,而只是放入操作系統中最基本的部分,是經過精心設計的、能實現現代OS最基本核心功能的小型內核。它與一般的OS(程序)不同,它更小更精煉,不僅運行在核心態,而且開機后常駐內存,它不會因內存緊張而被換出內存。
⑵基于客戶/服務器模式
將操作系統中最基本的部分,放入微內核中,而把操作系統的絕大部分功能,都放在微內核外面的一組服務器(進程)中實現,所有這些服務器,都屬于操作系統的一部分,并作為進程來實現的,但它們都運行在用戶態。14.4微內核OS結構1.微內核OS的基本概念82
⑶應用“機制和策略分離”原理
在現在操作系統的結構設計中,經常利用“機制與策略”分離的原理,來構造OS結構。
機制:是指在實現某一功能時的具體規定或說原則。
策略:是在機制的基礎上,借助于某些參數和算法,用以實現該功能的優化,或達到不同的功能目標。在傳統的OS中,將機制放在OS的內核的較低層,把策略放在內核的較高層次中。在微內操作系統中,通常將機制放在OS的微內核中。正因如此,才有可能將內核做的很小。
⑷采用面向對象技術
操作系統是一個極其復雜的大型軟件系統,我們不僅可以通過結構設計,分解操作系統的復雜度;還可以基于面向對象技術中的“抽象”和“隱蔽”原則,控制系統的復雜性;再進一步利用“對象”、“封裝”和“繼承”等概念,來確保操作系統的“正確性”、“可靠性”、“易修改性”、“易擴展性”等,并提高操作系統的設計速度。14.4微內核OS結構⑶應用“機制和策略分離”原理14.4微內核OS結構832.微內核的基本功能
在不同的微內核OS中,微內核的大小相差甚多,可達數十倍。微內核所具有的功能,也必然會有明顯的差異。至于哪些功能應放在微內核內,一般基于這樣三個原則:①將與硬件密切相關的功能放入微內核中;②根據“機制與策略”分離的原理,將機制部分放入微內核中,將策略部分放入微內核外的多個服務器中;③將使用頻率很高的功能,放入微內核中。由此可知,微內核通常含有如下幾方面的功能:14.4微內核OS結構2.微內核的基本功能14.4微內核OS結構84
⑴進程(線程)管理
在有的操作系統中,將整個進程管理都放在內核中,但大多數的微內核OS,進程管理功能的實現,都是基于“機制與策略”分離的原理,將機制(基本進程功能)放入微內核中。調度功能的機制部分,應將它放入微內核中。用戶(進程)優先級的策略屬于策略問題,應
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南鶴壁市浚縣招聘事業單位人員筆試真題2024
- 運動鞋帽AI應用企業制定與實施新質生產力戰略研究報告
- 藝術教育師資派遣企業制定與實施新質生產力戰略研究報告
- 2025園林綠化工程合同 標準版模板全
- 教師培訓與隨班就讀教學策略計劃
- 2025年幼兒園特色營養活動計劃
- 2025年中國服裝膠袋市場調查研究報告
- 2025年中國抽框架合件市場調查研究報告
- 藝術展覽參觀者服務保障措施
- 2025年中國帶柄線輪市場調查研究報告
- 公文寫作第六章請示、批復
- 動物疫病監測與預警
- DB34T 3676-2020 雙主梁鋼板組合梁橋設計與施工指南
- 三級人工智能訓練師(高級)職業技能等級認定考試題及答案
- 【飛行實踐綜合報告:人的因素對飛行安全的影響(論文)6600字】
- DB34T 3589-2020 水工鑄鐵閘門制造、安裝及驗收規程
- 心理健康學習通超星期末考試答案章節答案2024年
- 肺癌并胸腔積液的護理
- 2024工業機器人考試題庫(含答案)
- 物業法律法規指導培訓
- 中華護理學學術壁報課件模板
評論
0/150
提交評論