版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、組件機制與操作系統(tǒng)的實現(xiàn)摘要本文介紹了一個操作系統(tǒng)開發(fā)平臺-OSKit,它提供了一套用于架構(gòu)操作系統(tǒng)內(nèi)核的庫函數(shù)和一些組件。它的設(shè)計目標(biāo)是降低進(jìn)入操作系統(tǒng)研究與開發(fā)領(lǐng)域的門坎。OSKit在設(shè)計時借用了COM的思想,把操作系統(tǒng)的各個部份設(shè)計成盡可能獨立的組件,使開發(fā)者能夠很方便地利用或替換這些組件來構(gòu)造自己的操作系統(tǒng)。關(guān)鍵字組件重用操作系統(tǒng)OSKit1引言當(dāng)前,操作系統(tǒng)的功能不斷擴展,操作系統(tǒng)的類型呈現(xiàn)出多樣化的趨勢。一個小規(guī)模的開發(fā)小組已經(jīng)不可能完全從頭開始實現(xiàn)一個有效的操作系統(tǒng),而一樣情形下,研究人員只對操作系統(tǒng)的一些特定領(lǐng)域感愛好,而關(guān)于另外一些元素,如啟動加載代碼、核心啟動代碼、設(shè)備驅(qū)動
2、程序和內(nèi)存分派代碼等往往不感愛好,可是一個可運行的原型系統(tǒng)又必需包括這些內(nèi)容。編寫這些基礎(chǔ)結(jié)構(gòu)延緩了操作系統(tǒng)研究項目的進(jìn)度,同時也增加了進(jìn)行操作系統(tǒng)研究的代價。為了解決這一問題,猶他大學(xué)的FLUX研究小組開發(fā)了OSKit,它提供了一個框架和一組模塊化的、具有簡單接口的庫和一組清楚的、可重用的OS組件。OSKit能夠用來構(gòu)建操作系統(tǒng)內(nèi)核、外層效勞和其他核心OS功能模塊。OSKit提供了各類功能模塊,諸如簡單自舉,一個可用于內(nèi)核的最小化POSIX環(huán)境、與物理內(nèi)存和其約束一致的內(nèi)存治理、普遍的調(diào)試支持,和高層子系統(tǒng)如協(xié)議棧和文件系統(tǒng)。開發(fā)者能夠依照自己的研究愛好或所要考慮的性能來利用這些模塊,或用他
3、們自己的模塊來替代標(biāo)準(zhǔn)的OSKit模塊。OSKit公布了它內(nèi)部的實現(xiàn)細(xì)節(jié),許諾用戶從成熟的操作系統(tǒng)中不加修改地提取代碼,然后通過一小部份通過認(rèn)真設(shè)計的粘接代碼將它們歸并到一路,隔離它們的依托性,并輸出良好概念的接口。OSKit利用這一技術(shù)整合了許多穩(wěn)固而成熟的源代碼,包括設(shè)備驅(qū)動、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議等等。實踐說明,利用組件軟件架構(gòu)和重用技術(shù)會給操作系統(tǒng)實現(xiàn)領(lǐng)域帶來大的阻礙。2組件技術(shù)簡介組件技術(shù)是一種較新的軟件開發(fā)技術(shù)。到目前為止,還難以確信組件技術(shù)的明肯概念。比如,對組件技術(shù)的常見說法有以下這些:“二進(jìn)制軟件單元”、“任意場合可部署的軟件”、“專門適合第三方開發(fā)”和“標(biāo)準(zhǔn)概念的接口”等等。大
4、致上能夠如此明白得:所謂組件,其實確實是一種可部署軟件的代碼包,其中包括某些可執(zhí)行模塊。組件單獨開發(fā)并作為軟件單元利用,它具有明確的接口,軟件確實是通過這些接口挪用組件所能提供的效勞,多種組件能夠聯(lián)合起來組成更大型的組件乃至直接成立整個系統(tǒng)。組件的實現(xiàn)必需支持一種或多種其用戶所希望取得的接口。實現(xiàn)組件并非必然需要采納面向?qū)ο笳Z言。為了構(gòu)造新應(yīng)用程序,軟件開發(fā)人員找出適當(dāng)?shù)慕M件,將這些組件加入到正在開發(fā)中的應(yīng)用程序,同時對應(yīng)用程序進(jìn)行測試并保證應(yīng)用程序的組裝工作依照預(yù)定的計劃正常進(jìn)行。采納組件技術(shù)能降低開發(fā)、測試和保護(hù)本錢,提高靠得住性和穩(wěn)固性。3Oskit組件綜述OSKIT的組件庫提供了一樣情
5、形下更高層的功能,它通常只對外開放一些相關(guān)的公用挪用接口。目標(biāo)系統(tǒng)通過OSKit的面向?qū)ο蟮腃OM接口來與這些組件進(jìn)行交互。以下幾節(jié)概述了OSKit所提供的組件。3. 1引導(dǎo)程序大多數(shù)操作系統(tǒng)多有自身的啟動加載機制,彼此互不兼容。這種加載機制的多樣性并非是由于每一個OS所要求的自舉效勞不同而引發(fā),而是由于構(gòu)建啟動加載器的特定方式造成的。因為從操作系統(tǒng)研究的立場來看,啟動加載器是一個令人不敢愛好的領(lǐng)域,因此OS開發(fā)者通常進(jìn)行一個最小化、快捷的設(shè)計。由于設(shè)計理念和要求的輕微不同,每一個啟動加載器都不適用于下一個OS。為了解決那個問題,OSKit直接支持多啟動標(biāo)準(zhǔn),這一標(biāo)準(zhǔn)是由幾個OS項目的成員一起
6、設(shè)計的,它的目的是提供一個簡單而通用的啟動加載器與OS內(nèi)核間的接口,從而許諾一個啟動加載器加載任何兼容的OSo在進(jìn)行操作系統(tǒng)研究時,多啟動標(biāo)準(zhǔn)超級有效,這其中的要緊緣故是啟動加載器在加載內(nèi)核自身的同時還具有加載附加文件或啟動模塊的能力。那個地址的一個啟動模塊只是一個一般文件,啟動加載器不以任何方式說明它,而僅僅把它隨同內(nèi)核映像一路加載到保留物理內(nèi)存塊中。在啟動內(nèi)核時,啟動加載器提供給內(nèi)核以下內(nèi)容:物理地址的列表、所有已加載的啟動模塊的大小,和與每一個模塊相聯(lián)系的由用戶概念的字符串。這些啟動模塊和與它們相聯(lián)系的用戶概念的字符串由內(nèi)核說明。如此做的目的是為了通過提供內(nèi)核啟動時需要的數(shù)據(jù),諸如初始化
7、程序、設(shè)備驅(qū)動和文件系統(tǒng)效勞器,來減輕內(nèi)核啟動的負(fù)擔(dān)。3.2核心支持庫OSKit核心支持庫的要緊用途是讓客戶OS更易訪問硬件設(shè)施。它包括了一個較大的有效函數(shù)和符號概念的集合,該集合關(guān)于治理模式代碼是超級具體的。與此相對應(yīng),OSKit的大多數(shù)其他庫在用戶模式代碼中通常很有效。和OSKit的其余部份所不同的是,多數(shù)核心支持代碼必需是針對特定系統(tǒng)結(jié)構(gòu)的,而這些特定機械的細(xì)節(jié)對客戶OS也是有效的。例如,在x86機械上,核心支持庫包括一些函數(shù),用來創(chuàng)建和操縱x86頁表和段寄放器。其他OSKit組件通常提供成立在這些低層機制上的與體系結(jié)構(gòu)無關(guān)的設(shè)施,可是為了提供最大的靈活性,與特定結(jié)構(gòu)相關(guān)的接口始終能夠被
8、訪問。OSKit核心支持庫在x86體系結(jié)構(gòu)上尤其重要,因為該體系結(jié)構(gòu)的OS級編程環(huán)境專門復(fù)雜和模糊。核心支持庫認(rèn)真地設(shè)置了一個大體的32位執(zhí)行環(huán)境(為了與MS-DOS兼容,x86處置器通常以16位模式開始),初始化段和頁轉(zhuǎn)換表,安裝一個中斷向量表,并提供缺省的陷阱和中斷處置程序。固然,客戶OS能夠修改或重載這些行為。但是,在缺省情形下,核心支持庫自動地做所有必要的工作,以便使處置器進(jìn)入一個方便的執(zhí)行環(huán)境,現(xiàn)在中斷、陷阱、調(diào)試和其他標(biāo)準(zhǔn)設(shè)施己經(jīng)如預(yù)期的那樣開始工作。該庫在缺省情形下自動地定位所有隨內(nèi)核加載的啟動模塊,并保留它們所在的物理內(nèi)存。接下來,應(yīng)用程序能夠很容易利用它們??蛻鬙S只需以標(biāo)準(zhǔn)
9、C語言風(fēng)格提供一個mainO函數(shù)。一切都設(shè)置好以后,內(nèi)核支持庫將用所有參數(shù)和由啟動加載器傳遞過來的環(huán)境變量來挪用它。3.3內(nèi)存治理庫猶如在一個標(biāo)準(zhǔn)C語言庫中實現(xiàn)的mallocO一樣,內(nèi)存治理代碼典型地用于用戶空間。通常并非適用于內(nèi)核。設(shè)備驅(qū)動常常需要分派特定類型的內(nèi)存,并伴隨具體的調(diào)整屬性。例如,關(guān)于內(nèi)建的DMA操縱器只能訪問最初的16M物理內(nèi)存。為解決這些內(nèi)存治理問題,OSKit包括了兩個簡單而靈活的內(nèi)存治理庫:(1)基于隊列的內(nèi)存治理器(或稱LMM),它提供了功能壯大且高效的原語來進(jìn)行分派治理,并支持在一個池中治理多種類型的內(nèi)存。(2)地址映射治理器(或稱AMM)被設(shè)計用來治理沒必要直接映
10、射到物理內(nèi)存或虛擬內(nèi)存的地址空間,它對OS的其他方面提供了類似的支持,諸如進(jìn)程地址空間、分頁、空閑塊或IPC名字空間的治理。盡管這些庫能夠很容易地應(yīng)用在用戶空間,但事實上它們是被專門設(shè)計用來知足OS內(nèi)核的需求。3.4最小C語言庫成熟的OS內(nèi)核一樣都包括著相當(dāng)數(shù)量的僅僅用來從頭實現(xiàn)大體的C語言庫函數(shù)如printfO和mallocO的代碼。與此形成對照的是,OSKit提供了一個最小化C語言函數(shù)庫,它圍繞著最小化依托性而不是最大化函數(shù)性和性能的原那么來設(shè)計。3.5調(diào)試支持OSKit的一個最有效的益處是:給定一個適當(dāng)?shù)挠布O(shè)置,它立刻就能夠提供給OS開發(fā)者一個完全源代碼級的內(nèi)核調(diào)試環(huán)境。OSKit內(nèi)核
11、支持庫包括一個可用于GNU調(diào)試器(GDB)的串行存根模塊,它在客戶OS環(huán)境中處置陷阱,并利用GDB的標(biāo)準(zhǔn)遠(yuǎn)程調(diào)試協(xié)議通過一個串行程序與運行在另一臺機械上的GDB通信。乃至當(dāng)客戶機OS執(zhí)行自己的陷阱處置時,OSKit的GDB存根模塊也是可用的。若是客戶OS提供適當(dāng)?shù)你^子,它乃至支持多線程調(diào)試。除大體的調(diào)試器支持,OSKit也提供了一個內(nèi)存分派調(diào)試庫,它能夠跟蹤內(nèi)存分派并檢測一樣的錯誤,如緩沖區(qū)溢出和釋放己釋放的內(nèi)存。那個庫提供了與許多一般應(yīng)用程序調(diào)試器相似的功能性,所不同的是它運行在由OSKit提供的最小內(nèi)核環(huán)境中3.6設(shè)備驅(qū)動支持在OS開發(fā)和保護(hù)中最艱巨的一個任務(wù)是支持多種多樣的I/O硬件。這
12、些復(fù)雜的設(shè)備常會含有潛在的錯誤,而新硬件的發(fā)布又常常伴隨著不兼容的軟件接口。由于這些緣故,OSKit采納了為現(xiàn)有內(nèi)核開發(fā)的穩(wěn)固的、通過充分測試的驅(qū)動程序。OSKit利用了一種封裝技術(shù),將現(xiàn)有的驅(qū)動程序代碼大體上未加修改地歸并到OSKit中。這些現(xiàn)有的驅(qū)動程序被一個OSKit粘結(jié)代碼層所包裝,從而使得這些驅(qū)動程序能夠在與開發(fā)它們的環(huán)境完全不同的環(huán)境中工作。目前,來自Linux的大多數(shù)以太網(wǎng)卡、SCSI和IDE磁盤的設(shè)備驅(qū)動程序被包括進(jìn)來,總數(shù)超過了五十種。用一樣的方式,來自FreeBSD的八個字符設(shè)備驅(qū)動程序也被包括了進(jìn)來,它們支持標(biāo)準(zhǔn)PC操縱臺和串口及不同的多串口板。由于OSKit把這些驅(qū)動認(rèn)
13、真地進(jìn)行了包裝,F(xiàn)reeBSD驅(qū)動程序能夠與Linux驅(qū)動程序一路工作。3. 7協(xié)議棧OSKit提供了一個完整的TCP/IP網(wǎng)絡(luò)協(xié)議棧。猶如驅(qū)動程序一樣,有關(guān)網(wǎng)絡(luò)的代碼也能夠通過封裝機制被歸并進(jìn)來。OSKit當(dāng)前能夠從Linux中獲取網(wǎng)絡(luò)設(shè)備驅(qū)動程序,它們是PC平臺可取得的最大的免費資源。OSKit的網(wǎng)絡(luò)組件繼承于,它通常被以為具有更多成熟的網(wǎng)絡(luò)協(xié)議。這顯示了利用封裝機制將現(xiàn)有軟件包裝成靈活的組件的第二個優(yōu)勢:即從不同的資源中獲取最好的組件,并讓它們一路被利用。4. 8文件系統(tǒng)通過利用封裝技術(shù),OSKit吸收了NetBSD的基于磁盤的文件系統(tǒng)代碼。NetBSD之因此被選擇為首要資源庫,是因為在
14、可用的系統(tǒng)中,它的文件系統(tǒng)代碼被最清楚地分離了出來,而FreeBSD和Linux的文件系統(tǒng)與它們的虛擬內(nèi)存系統(tǒng)結(jié)合的更緊密。當(dāng)前,OSKit也把Linux文件系統(tǒng)歸并了進(jìn)來,以便能夠支持多種類型的文件系統(tǒng)格式,如Windows9五、OS/2和SystemV的文件系統(tǒng)格式等等。OSKit文件系統(tǒng)輸出的COM接口類似于許多Unix文件系統(tǒng)所利用的內(nèi)部VFS接口。這些接口具有專門好的粒度,使咱們能夠沒必要接觸OSKit文件系統(tǒng)的內(nèi)部。例如,OSKit接口只同意簡單的途徑名組件,許諾平安封裝的代碼執(zhí)行適當(dāng)?shù)脑L問許可檢查。5. OSKit的現(xiàn)狀自從在1996年6月發(fā)布了OSKit的第一個公布發(fā)行版以來,OSKit已經(jīng)更新了多次,每次更新都增加了一些算法,并修正了一些錯誤。最新的發(fā)行版是2002年3月的版本。由此可見,OSKit一直處于操作系統(tǒng)開發(fā)平臺的前沿,其自身也在不斷完善和進(jìn)展。5結(jié)論作為一個操作系統(tǒng)研究與開發(fā)的平臺,OSKit大大減輕了操作系統(tǒng)研究與開發(fā)者的負(fù)擔(dān)。它能夠讓開發(fā)人員躲開復(fù)雜的底層,而把愛好集中與他們所感愛好的領(lǐng)域。開發(fā)者能夠用自己編寫的組件來取代OSKit中的部份組件,以知足自己特定的需要,從而豐碩了操作系統(tǒng)的應(yīng)用層??傊?,OSKit知足了實際客戶系統(tǒng)的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025幼兒園后勤主任工作計劃
- 人教版八年級歷史與社會上冊說課稿綜合探究二從宗教景觀看文化的多樣性
- 全國浙教版信息技術(shù)高中選修1新授課 第一節(jié) 枚舉算法 說課稿
- 2025年高二英語教學(xué)計劃-高二英語下學(xué)期教學(xué)計劃
- 2025年新學(xué)期幼兒園家長工作計劃
- 園林園藝行業(yè)前臺工作總結(jié)
- 2025年度人力資源工作計劃參考
- 人教版八年級 歷史與社會上冊 1.3.2《羅馬帝國的興衰》 說課稿
- 文化傳媒行業(yè)員工激勵
- 2025教研工作計劃新版
- GB/T 17238-2008鮮、凍分割牛肉
- 神通數(shù)據(jù)庫管理系統(tǒng)v7.0企業(yè)版-2實施方案
- 人體內(nèi)臟器官結(jié)構(gòu)分布圖詳解
- 八年級上冊科學(xué)(浙教版)復(fù)習(xí)提綱
- 商務(wù)溝通第二版第4章書面溝通
- 基金會項目基金捐贈立項表
- OCT青光眼及視野報告
- 人音版小學(xué)音樂四年級下冊課程綱要
- 初中語文人教七年級上冊朝花夕拾學(xué)生導(dǎo)讀單
- 山西鄉(xiāng)寧焦煤集團(tuán)臺頭煤焦公司礦井兼并重組整合項目初步設(shè)計安全專篇
- 弱電工程自檢報告
評論
0/150
提交評論