嵌入式系統由于其工作環境、位置分布、與應用系統的結合方式等方面的原因,在系統的升級、修改方面存在著相當的困難,且費用高。目前大多數嵌入式系統內核只能在一定程度上進行靜態擴展,這意味著修改某些內核屬性值后要重新編譯內核,對普通用戶而言難以實現。通信的發展使得嵌入式操作系統的動態擴展成為可能,可以在遠程控制的基礎上增加嵌入式系統的靈活性,延長嵌入式系統的壽命;同時,由于嵌入式Linux的應用日益廣泛,研究嵌入式Linux的動態擴展具有重要意義。
動態擴展是指系統在運行狀態下實現系統的升級和維護。動態擴展技術目前被廣泛應用在軟件系統開發的各個領域。組件、可擴展的數據庫系統、主動網等多種技術都是動態擴展技術在各個領域的具體體現。在嵌入式操作系統領域,動態擴展技術研究的主要目標是實現內核抽象的擴展。實現操作系統內核抽象的動態擴展能夠提高系統的靈活性、適應性,使系統能夠根據應用的需求,提供特定的服務。然而,由于嵌入式系統硬件資源有限,這對研究嵌入式Linux系統核心的動態擴展性是一個極大的挑戰。
本文主要討論嵌入式Linux系統中內核抽象的動態擴展技術。
1、幾種主要的內核動態擴展技術的分析
當前應用于操作系統中的動態擴展技術主要有四種:微內核技術、可擴展內核技術、解釋器技術/JOS技術和內核下載技術/LKM技術[1,2]。這三種技術已經在桌面操作系統的不同環境中得到了充分的應用。嵌入式操作系統及其使用環境具有桌面操作系統所不同的特征,它在性能、地址空間、所需存儲空間和底層訪問頻率等方面的特征,使得我們在擴展技術的選擇上需要加以權衡。
(1) 微內核技術
在微內核操作系統中,內核中包括了一些基本內核功能(如創建和刪除任務、任務調度、內存管理和中斷處理等),部分操作系統抽象和關鍵服務(如文件系統、網絡協議棧等),都是在用戶空間運行的。這大大減小了內核的體積,同時也極大地方便了整個系統的升級、維護和移植。系統通過核心到用戶層向上調用服務的方法來為應用程序提供服務。由于服務存在于用戶層,用戶可通過修改服務來獲得不同的行為,因而也稱為用戶層擴展技術。由于所有的應用程序都要利用操作系統提供的API或系統調用,完成內存管理、進程管理、I/O、設備管理等,因此通過在用戶空間監視并截獲某個進程的系統調用,然后將擴展功能代碼插入系統調用中,就可以擴展Linux操作系統功能。 大功率電感廠家 |大電流電感工廠