代安明
摘 要:OSKit提供了各種功能模塊。開(kāi)發(fā)者可以根據(jù)自己的探究喜好或所要考慮的性能來(lái)使用這些模塊,或用他們自己的模塊來(lái)替代標(biāo)準(zhǔn)的OSKit模塊。
關(guān)鍵詞:組件機(jī)制;操作系統(tǒng)
組件技術(shù)是一種較新的軟件開(kāi)發(fā)技術(shù)。所謂組件,其實(shí)就是一種可部署軟件的代碼包,其中包括某些可執(zhí)行模塊。組件單獨(dú)開(kāi)發(fā)并作為軟件單元使用,它具有明確的接口,軟件就是通過(guò)這些接口調(diào)用組件所能提供的服務(wù),多種組件可以聯(lián)合起來(lái)構(gòu)成更大型的組件乃至直接建立整個(gè)系統(tǒng)。
一、Oskit組件綜述
Oskit的組件庫(kù)提供了一般情況下更高層的功能,它通常只對(duì)外開(kāi)放一些相關(guān)的公用調(diào)用接口。目標(biāo)系統(tǒng)通過(guò)OSKit的面向?qū)ο蟮腃OM接口來(lái)和這些組件進(jìn)行交互。OSKit所提供的組件包括:
(一)引導(dǎo)程序
大多數(shù)操作系統(tǒng)多有自身的啟動(dòng)加載機(jī)制,彼此互不兼容。這種加載機(jī)制的多樣性并不是由于每個(gè)OS所要求的自舉服務(wù)不同而引起,而是由于構(gòu)建啟動(dòng)加載器的特定方式造成的。為了解決這個(gè)新問(wèn)題,OSKit直接支持多啟動(dòng)標(biāo)準(zhǔn),它的目的是提供一個(gè)簡(jiǎn)單而通用的啟動(dòng)加載器和OS內(nèi)核間的接口,從而答應(yīng)一個(gè)啟動(dòng)加載器加載任何兼容的OS。
在進(jìn)行操作系統(tǒng)探究時(shí),多啟動(dòng)標(biāo)準(zhǔn)非常有用,這其中的主要原因是啟動(dòng)加載器在加載內(nèi)核自身的同時(shí)還具有加載附加文件或者啟動(dòng)模塊的能力。在啟動(dòng)內(nèi)核時(shí),啟動(dòng)加載器提供給內(nèi)核以下內(nèi)容摘要:物理地址的列表、所有已加載的啟動(dòng)模塊的大小,以及和每個(gè)模塊相聯(lián)系的由用戶定義的字符串。這些啟動(dòng)模塊和它們相聯(lián)系的用戶定義的字符串由內(nèi)核解釋。這樣做的目的是為了通過(guò)提供內(nèi)核啟動(dòng)時(shí)需要的數(shù)據(jù),諸如初始化程序、設(shè)備驅(qū)動(dòng)和文件系統(tǒng)服務(wù)器,來(lái)減輕內(nèi)核啟動(dòng)的負(fù)擔(dān)。
(二)核心支持庫(kù)
OSKit核心支持庫(kù)的主要用途是讓客戶OS更輕易訪問(wèn)硬件設(shè)施。它包含了一個(gè)較大的實(shí)用函數(shù)和符號(hào)定義的集合,該集合對(duì)于管理模式代碼是非常具體的。在缺省情況下,核心支持庫(kù)自動(dòng)地做所有必要的工作,以便使處理器進(jìn)入一個(gè)方便的執(zhí)行環(huán)境,此時(shí)中斷、陷阱、調(diào)試以及其他標(biāo)準(zhǔn)設(shè)施已經(jīng)如預(yù)期的那樣開(kāi)始工作。該庫(kù)在缺省情況下自動(dòng)地定位所有隨內(nèi)核加載的啟動(dòng)模塊,并保留它們所在的物理內(nèi)存。接下來(lái),應(yīng)用程序可以很輕易使用它們。客戶OS只需以標(biāo)準(zhǔn)C語(yǔ)言風(fēng)格提供一個(gè)main()函數(shù)。一切都設(shè)置好以后,內(nèi)核支持庫(kù)將用所有參數(shù)和由啟動(dòng)加載器傳遞過(guò)來(lái)的環(huán)境變量來(lái)調(diào)用它。
(三)內(nèi)存管理庫(kù)
如同在一個(gè)標(biāo)準(zhǔn)C語(yǔ)言庫(kù)中實(shí)現(xiàn)的malloc()一樣,內(nèi)存管理代碼典型地用于用戶空間。通常并不適用于內(nèi)核。設(shè)備驅(qū)動(dòng)經(jīng)常需要分配特定類型的內(nèi)存,并伴隨具體的調(diào)整屬性。為解決這些內(nèi)存管理新問(wèn)題,OSKit包含了兩個(gè)簡(jiǎn)單而靈活的內(nèi)存管理庫(kù)。盡管這些庫(kù)可以很輕易地應(yīng)用在用戶空間,但實(shí)際上它們是設(shè)計(jì)用來(lái)滿足OS內(nèi)核的需求。
(四)最小C語(yǔ)言庫(kù)
成熟的OS內(nèi)核一般都包含著相當(dāng)數(shù)量的僅僅用來(lái)重新實(shí)現(xiàn)基本的C語(yǔ)言庫(kù)函數(shù)如printf()和malloc()的代碼。和此形成對(duì)比的是,OSKit提供了一個(gè)最小化C語(yǔ)言函數(shù)庫(kù),它圍繞著最小化依靠性而不是最大化函數(shù)性和性能的原則來(lái)設(shè)計(jì)。
(五)調(diào)試支持
OSKit的一個(gè)最實(shí)用的好處是給定一個(gè)適當(dāng)?shù)挠布O(shè)置,它馬上就能提供給OS開(kāi)發(fā)者一個(gè)完全源代碼級(jí)的內(nèi)核調(diào)試環(huán)境。除了基本的調(diào)試器支持,OSKit也提供了一個(gè)內(nèi)存分配調(diào)試庫(kù),它可以跟蹤內(nèi)存分配并檢測(cè)一般的錯(cuò)誤。這個(gè)庫(kù)提供了和許多普通應(yīng)用程序調(diào)試器相似的功能性,所不同的是它運(yùn)行在由OSKit提供的最小內(nèi)核環(huán)境中
(六)設(shè)備驅(qū)動(dòng)支持
在OS開(kāi)發(fā)和維護(hù)中最艱巨的一個(gè)任務(wù)是支持多種多樣的I/O硬件。這些復(fù)雜的設(shè)備常會(huì)含有潛在的錯(cuò)誤,而新硬件的發(fā)布又經(jīng)常伴隨著不兼容的軟件接口。由于這些原因,OSKit采用了為現(xiàn)有內(nèi)核開(kāi)發(fā)的穩(wěn)定的、經(jīng)過(guò)充分測(cè)試的驅(qū)動(dòng)程序。OSKit使用了一種封裝技術(shù),將現(xiàn)有的驅(qū)動(dòng)程序代碼基本上未加修改地合并到OSKit中。
(七)協(xié)議棧
OSKit提供了一個(gè)完整的TCP/IP網(wǎng)絡(luò)協(xié)議棧。如同驅(qū)動(dòng)程序一樣,有關(guān)網(wǎng)絡(luò)的代碼也可以通過(guò)封裝機(jī)制被合并進(jìn)來(lái)。OSKit當(dāng)前可以從Linux中獲取網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序,它們是PC平臺(tái)可獲得的最大的免費(fèi)資源。OSKit的網(wǎng)絡(luò)組件繼續(xù)于FreeBSD4.4,它通常被認(rèn)為具有更多成熟的網(wǎng)絡(luò)協(xié)議。這顯示了使用封裝機(jī)制將現(xiàn)有軟件包裝成靈活的組件的第二個(gè)優(yōu)點(diǎn)摘要:即從不同的資源中獲取最好的組件,并讓它們一起被使用。
二、 結(jié)論
作為一個(gè)操作系統(tǒng)探究和開(kāi)發(fā)的平臺(tái),OSKit大大減輕了操作系統(tǒng)探究和開(kāi)發(fā)者的負(fù)擔(dān)。它可以讓開(kāi)發(fā)人員避開(kāi)復(fù)雜的底層,而把喜好集中和他們所感喜好的領(lǐng)域。開(kāi)發(fā)者可以用自己編寫的組件來(lái)取代OSKit中的部分組件,以滿足自己特定的需要,從而豐富了操作系統(tǒng)的應(yīng)用層??傊?,OSKit滿足了實(shí)際客戶系統(tǒng)的需求,有助于操作系統(tǒng)的探究和開(kāi)發(fā)。
參考文獻(xiàn):
[1]湯海京.基于面向?qū)ο蟛僮飨到y(tǒng)開(kāi)發(fā)平臺(tái)(OSKit)的分析和程序設(shè)計(jì).
[2]湯海京.OSKit的線程機(jī)制,2000年12月.