改善Linux內核實(shí)時(shí)性方法的研究與實(shí)現
#define TYPE_EQUAL(lock, type)
本文引用地址:http://dyxdggzs.com/article/261723.htm__builtin_types_compatible_p(typeof(lock), type *)
函數映射結構PICK_OP是允許兩種鎖共存的機制,PICK_OP在編譯階段將鎖操作轉化為合適的種類(lèi)(mutex或者spinlock):

根據宏處理的結果,如果類(lèi)型為spinlock_t,將運行函數_spin_lock,而如果類(lèi)型為raw_spinlock_t,將運行函數 _raw_spin_lock。對于實(shí)時(shí)rt_mutex獲取,當前任務(wù)由于優(yōu)先級高如果可以搶占該鎖,則把鎖的先前擁有者添加到該鎖的等待隊列中并且在新的鎖擁有者的task_struct中標記等待該鎖的所有任務(wù);而如果不能獲得鎖,則把當前任務(wù)放到鎖的優(yōu)先級等待隊列中,直到鎖的擁有者釋放該鎖,喚醒等待隊列中最高優(yōu)先級的任務(wù)進(jìn)入臨界區。為了防止優(yōu)先級反轉,可以改變鎖的當前擁有者的優(yōu)先級為鎖的等待隊列中任務(wù)的最高優(yōu)先級。
實(shí)時(shí)互斥鎖的應用使得高優(yōu)先級的任務(wù)通過(guò)搶占鎖可以進(jìn)入臨界區,這樣內核的不可搶占區的數量和范圍都大大縮小,內核可搶占性有了很大的提高,充分減小了實(shí)時(shí)高優(yōu)先級任務(wù)的搶占延遲。
3 改進(jìn)后的內核實(shí)時(shí)性能測試
對Linux進(jìn)行了實(shí)時(shí)化改造后,需要對其進(jìn)行測試來(lái)確定系統是否符合實(shí)際應用的需要。實(shí)時(shí)性能測試主要包括測試內核的最大中斷延遲和任務(wù)調度時(shí)間延遲兩個(gè)重要的指標。
中斷延遲反映的是中斷信號發(fā)生到內核對中斷做出響應所需要的時(shí)間,通過(guò)利用并口的7號中斷,短路并口的9-10腳,其中10腳為中斷引腳,9口為并口數據口的高位,往IO口0X378寫(xiě)8就可以引發(fā)中斷,然后在中斷服務(wù)程序里往0x378寫(xiě)0就會(huì )重新拉低中斷引腳電平。用高精度示波器測量這個(gè)脈沖的寬度來(lái)測得中斷延遲時(shí)間。對于賽揚650MHz,內存128M的工控平臺,負載為拷貝CF卡情況下,標準Linux2.6內核最長(cháng)中斷延遲為 240us,而改進(jìn)后的實(shí)時(shí)內核最長(cháng)中斷延遲為16us。
采用開(kāi)源軟件LMbench3.0測試系統調度延遲時(shí)間。測試機器配置為:CPU ,Intel P4 2.8GHz,內存512M,負載情況為拷貝硬盤(pán)、訪(fǎng)問(wèn)網(wǎng)絡(luò )。標準Linux2.6內核調度延遲為1038us,而改進(jìn)后的內核的調度延遲為140us。
可見(jiàn)改進(jìn)后的內核的最長(cháng)中斷延遲和調度延遲比標準內核要短很多,內核的實(shí)時(shí)性能有了很大的提高。
4 結束語(yǔ)
針對標準Linux2.6內核由于中斷關(guān)閉時(shí)間過(guò)長(cháng)、內核臨界不可搶占區過(guò)大而多,明顯存在實(shí)時(shí)性能方面的不足,提出了改進(jìn)其實(shí)時(shí)性的方法,實(shí)現了實(shí)時(shí)Linux內核的中斷線(xiàn)程化以及新的內核同步自旋鎖,使其具有更短的中斷延遲和調度延遲。
本文作者的創(chuàng )新點(diǎn):在標準的Linux2.6可搶占內核上對其中斷處理機制進(jìn)行線(xiàn)程化改造,大大的減小了中斷響應時(shí)間。另外對內核同步機制采用新的自旋鎖使得內核可搶占性能更加優(yōu)異,改進(jìn)后的內核可以適用于對Linux內核實(shí)時(shí)性要求更高的場(chǎng)合。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論