嵌入式Linux實(shí)時(shí)化技術(shù)
● 雙內(nèi)核方式
本文引用地址:http://butianyuan.cn/article/106458.htmLinux內(nèi)核實(shí)時(shí)化雙內(nèi)核方式以RTLinux、RTAI和Xenomai等為典型代表。其中RTLinux實(shí)現(xiàn)了一個(gè)微內(nèi)核實(shí)時(shí)操作系統(tǒng)支持底層任務(wù)管理、中斷服務(wù)例程、底層任務(wù)通信隊(duì)列等。普通Linux作為實(shí)時(shí)操作系統(tǒng)的最低優(yōu)先級(jí)任務(wù),Linux下的任務(wù)通過(guò)FIFO命名管道和實(shí)時(shí)任務(wù)進(jìn)行通信,如圖1所示。
當(dāng)Linux要關(guān)閉中斷時(shí),實(shí)時(shí)微內(nèi)核會(huì)截取并記錄這個(gè)請(qǐng)求,通過(guò)軟件來(lái)模擬中斷控制器,而沒有真正關(guān)閉硬件中斷,避免了由于關(guān)中斷所造成的響應(yīng)延遲。RT-Linux將系統(tǒng)實(shí)時(shí)時(shí)鐘設(shè)置為單次觸發(fā)模式,提供微秒級(jí)的時(shí)鐘精度。RTAI類似RTLinux的實(shí)現(xiàn)方式,不同之處在于它修改了體系結(jié)構(gòu)相關(guān)代碼,形成一個(gè)實(shí)時(shí)硬件抽象層(RTHAL),使其實(shí)時(shí)任務(wù)能在任何時(shí)刻中斷普通Linux任務(wù),兩者之間通過(guò)非阻塞隊(duì)列進(jìn)行通訊。RTAI將直接修改Linux內(nèi)核的代碼減至最少,具有更好的可移植性。Xenomai以RTAI為基礎(chǔ),也稱RTAI /Fusion。采用了Adeos微內(nèi)核替代RTAI的硬件抽象層。其特色還在于模仿了傳統(tǒng)RTOS的API接口,推動(dòng)傳統(tǒng)RTOS應(yīng)用在GNU/Linux下的移植。類似還有基于Fiasco微內(nèi)核的L4Linux等開源項(xiàng)目。
● 內(nèi)核補(bǔ)丁方式
雙內(nèi)核實(shí)時(shí)方案下,實(shí)時(shí)任務(wù)需要按照微內(nèi)核實(shí)時(shí)操作系統(tǒng)提供的另外一套API進(jìn)行設(shè)計(jì)。而內(nèi)核補(bǔ)丁方式則不改變Linux的API,原有應(yīng)用程序可在實(shí)時(shí)化后的操作系統(tǒng)上運(yùn)行,典型的有早期研究性的Kurt-Linux和Red-Linux,商業(yè)版本的MontaVista、TimeSys 和Wind River Linux,以及現(xiàn)階段Ingo Monlnar等人開發(fā)的實(shí)時(shí)搶占補(bǔ)丁內(nèi)核等[3]。
Kurt-Linux是第一個(gè)基于普通Linux的實(shí)時(shí)操作系統(tǒng)。通過(guò)正常態(tài)、實(shí)時(shí)態(tài)和混合態(tài)進(jìn)行實(shí)時(shí)和非實(shí)時(shí)任務(wù)的劃分。RED-Linux通過(guò)任務(wù)多種屬性和調(diào)度程序,可以實(shí)現(xiàn)多種調(diào)度算法。采用軟件模擬中斷管理,并在內(nèi)核插入了許多搶占點(diǎn),提高了系統(tǒng)調(diào)度精度。
MontaVista Linux在低延遲補(bǔ)丁以及可搶占內(nèi)核補(bǔ)丁基礎(chǔ)上[4],通過(guò)開發(fā)內(nèi)核O(1)實(shí)時(shí)調(diào)度程序并對(duì)可搶占內(nèi)核進(jìn)行了改進(jìn)和測(cè)試,Linux 2.4內(nèi)核時(shí)代,MontaVista Linux 作為商業(yè)成熟產(chǎn)品在實(shí)時(shí)性上有較強(qiáng)的優(yōu)勢(shì)。TimeSys Linux通過(guò)內(nèi)核模塊的方式也提供了高精度時(shí)鐘、優(yōu)先級(jí)繼承mutex等支持。
2.6版本的主流內(nèi)核吸收了以上技術(shù),支持CONFIG_PREEMPT_NONE,CONFIG_PREEMPT_VOLUNTARY和CONFIG_PREEMPT等多種配置選項(xiàng)。分別適合于計(jì)算型任務(wù)系統(tǒng),桌面用戶系統(tǒng)和毫秒級(jí)延遲嵌入式系統(tǒng)。2005年,針對(duì)2.6內(nèi)核MontaVista推出了實(shí)時(shí)Linux計(jì)劃,推進(jìn)了Linux內(nèi)核實(shí)時(shí)化進(jìn)程。隨后Ingo Molnar發(fā)布了新的實(shí)時(shí)搶占補(bǔ)丁,并逐漸成為L(zhǎng)inux內(nèi)核實(shí)時(shí)主流技術(shù),也為包括MontaVista Linux,Wind River Linux采用和補(bǔ)充,本文后續(xù)內(nèi)容要涉及實(shí)時(shí)搶占補(bǔ)丁。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論