元件機制與作業系統的實現

才智咖 人氣:3W

摘要 本文介紹了一個作業系統開發平臺-OSKit,它提供了一套用於架構作業系統核心的庫函式和一些元件。它的設計目標是降低進入作業系統研究與開發領域的門檻。OSKit在設計時借用了COM的思想,把作業系統的各個部分設計成儘量獨立的元件,使開發者可以很方便地使用或替換這些元件來構造自己的作業系統。

元件機制與作業系統的實現

關鍵字 元件 重用 作業系統 OSKit

1 引言
當前,作業系統的功能不斷擴充套件,作業系統的型別呈現出多樣化的趨勢。一個小規模的開發小組已經不可能完全從頭開始實現一個實用的作業系統,而一般情況下,研究人員只對作業系統的一些特定領域感興趣,而對於另外一些元素,如啟動載入程式碼、核心啟動程式碼、裝置驅動程式和記憶體分配程式碼等往往不感興趣,但是一個可執行的原型系統又必須包含這些內容。編寫這些基礎結構延緩了作業系統研究專案的進度,同時也增加了進行作業系統研究的代價。為了解決這一問題,猶他大學的FLUX研究小組開發了OSKit,它提供了一個框架和一組模組化的、具有簡單介面的庫以及一組清晰的、可重用的OS元件。OSKit可以用來構建作業系統核心、外層服務和其他核心OS功能模組。OSKit提供了各種功能模組,諸如簡單自舉,一個可用於核心的最小化POSIX環境、與實體記憶體和其約束一致的記憶體管理、廣泛的除錯支援,以及高層子系統如協議棧和檔案系統。開發者可以根據自己的研究興趣或所要考慮的效能來使用這些模組,或用他們自己的模組來替代標準的OSKit模組。
OSKit公開了它內部的實現細節,允許使用者從成熟的作業系統中不加修改地提取程式碼,然後通過一小部分經過仔細設計的粘接程式碼將它們合併到一起,隔離它們的依賴性,並輸出良好定義的介面。OSKit使用這一技術整合了許多穩定而成熟的原始碼,包括裝置驅動、檔案系統、網路協議等等。實踐表明,使用元件軟體架構和重用技術會給作業系統實現領域帶來大的影響。
2 元件技術簡介
元件技術是一種較新的軟體開發技術。到目前為止,還難以確定元件技術的明確定義。比如,對元件技術的常見說法有以下這些:“二進位制軟體單元”、“任意場合可部署的軟體”、“特別適合第三方開發”和“規範定義的介面”等等。大致上可以這樣理解:所謂元件,其實就是一種可部署軟體的程式碼包,其中包括某些可執行模組。元件單獨開發並作為軟體單元使用,它具有明確的介面,軟體就是通過這些介面呼叫元件所能提供的服務,多種元件可以聯合起來構成更大型的元件乃至直接建立整個系統。元件的實現必須支援一種或者多種其使用者所希望獲得的介面。實現元件並不一定需要採用物件導向語言。為了構造新應用程式,軟體開發人員找出適當的元件,將這些元件加入到正在開發中的應用程式,同時對應用程式進行測試並保證應用程式的組裝工作按照預定的規劃正常進行。採用元件技術能降低開發、測試和維護成本,提高可靠性和穩定性。
3 Oskit元件綜述
OSKIT的元件庫提供了一般情況下更高層的功能,它通常只對外開放一些相關的公用呼叫介面。目標系統通過OSKit的物件導向的COM介面來與這些元件進行互動。以下幾節概述了OSKit所提供的元件。
3. 1 載入程式
大多數作業系統多有自身的啟動載入機制,彼此互不相容。這種載入機制的多樣性並不是由於每個OS所要求的自舉服務不同而引起,而是由於構建啟動載入器的`特定方式造成的。因為從作業系統研究的立場來看,啟動載入器是一個令人不敢興趣的領域,因此OS開發者通常進行一個最小化、快捷的設計。由於設計理念和要求的輕微差別,每個啟動載入器都不適用於下一個OS。為了解決這個問題,OSKit直接支援多啟動標準,這一標準是由幾個OS專案的成員共同設計的,它的目的是提供一個簡單而通用的啟動載入器與OS核心間的介面,從而允許一個啟動載入器載入任何相容的OS。
在進行作業系統研究時,多啟動標準非常有用,這其中的主要原因是啟動載入器在載入核心自身的同時還具有載入附加檔案或者啟動模組的能力。這裡的一個啟動模組只是一個普通檔案,啟動載入器不以任何方式解釋它,而僅僅把它隨同核心映像一起載入到保留實體記憶體塊中。在啟動核心時,啟動載入器提供給核心以下內容:實體地址的列表、所有已載入的啟動模組的大小,以及與每個模組相聯絡的由使用者定義的字串。這些啟動模組和與它們相聯絡的使用者定義的字串由核心解釋。這樣做的目的是為了通過提供核心啟動時需要的資料,諸如初始化程式、裝置驅動和檔案系統伺服器,來減輕核心啟動的負擔。