浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 控制技術(shù)

RTLinuxPro處理器預(yù)留和中斷控制技術(shù)

發(fā)布時間:2007/8/24 0:00:00 訪問次數(shù):605

    一些Linux實時操作系統(tǒng)制造商把中斷響應(yīng)時間和處理器預(yù)留作為得到實時Linux的主要方法。但其負面結(jié)果是功能環(huán)境縮小、服務(wù)功能簡單,沒有實時性的保證。本文分析了RTLinuxPro是如何簡易地為用戶產(chǎn)生處理器預(yù)留和中斷控制,以及如何提供一個完整的POSIX RTOS環(huán)境來支持它。

    硬實時操作系統(tǒng)一直以來是一個功能單一、非集成化,不受重視的應(yīng)用領(lǐng)域。另一方面,Linux系統(tǒng)則代表了目前計算機技術(shù)當中良好的集成性和普適性。如果把這二者結(jié)合起來,那將得到一個功能完善的硬實時操作系統(tǒng),同時可以把具有web接入的用戶的網(wǎng)絡(luò)功能部分以一種快捷、安全和簡單的方式集成到系統(tǒng)當中。
圖1:RTLinux技術(shù)。

    RTCore就是這樣一種能夠為RTLinuxPro和RTCoreBSD提供硬實時環(huán)境的例子。除了大量的Linux應(yīng)用接口外,RTCore還提供POSIX環(huán)境下硬實時的中斷句柄、線程、信號、互斥體(mutexes)、信號量(semaphores)、進程間通信等。

    同類技術(shù)中,其它方法的重點是放在對中斷響應(yīng)時間的提高方面。其工作本身是有探索價值的,但取得的結(jié)果卻很有限,只是在一個特定LINUX版本和硬件體系結(jié)構(gòu)下使中斷響應(yīng)時間得到了改善,仍然沒有硬實時方面的保證。同時,采用這些方法的操作系統(tǒng)提供給編程者的服務(wù)也十分有限。盡管對于某些基礎(chǔ)應(yīng)用,如頻繁的采樣和對采樣信號的簡單快速響應(yīng)的場合,這些方法是有效的,但多數(shù)情況下,卻反映出現(xiàn)實中的應(yīng)用領(lǐng)域根本就不是那么地簡單。

特定CPU上的線程引導(dǎo)

    先來看一個實時線程如何將自己裝入一個給定的CPU的例子。

----此處放L1----

    這里沒有什么新的東西,一個新的線程產(chǎn)生,就像其他任何的POSIX應(yīng)用一樣。區(qū)別只是這一行——“pthread_attr_setcpu_np(&attr, 0);”。這句告訴RTCore當新的線程創(chuàng)建的時候,應(yīng)該把它放到CPU 0中,而且永遠不會從CPU中被清除掉。原因在于當一個線程/任務(wù)被允許從一個處理器轉(zhuǎn)移到另一個的時候,高速緩存(Cache)的影響會改變實時性能。如果知道了在什么樣的CPU上都有哪些線程,那么就可以把這種轉(zhuǎn)移的影響降低到最小,實時性能也會得到顯著提高,同時RTOS的調(diào)度負荷也降到了最低。

    另外一個比較新的東西是“timespec_add_ns(&next,1000*1000);”,這句給timespec結(jié)構(gòu)體增加了一個毫秒,它是為了方便起見而提供的一個函數(shù)(POSIX并沒有定義這個函數(shù),所以用戶通常要手工規(guī)格化一些數(shù)據(jù))。如果用戶熟悉RTLinux,就不應(yīng)該對這個函數(shù)感到陌生,它已經(jīng)用了好幾年了。RTLinuxPro的用戶應(yīng)該注意到這個函數(shù):rtl_main_wait(),這是一個事件等待句柄,它允許程序暫時掛起直到從用戶或者系統(tǒng)接收到一個退出信號。(類似于GUI應(yīng)用中的事件等待進入函數(shù))。

    上述已經(jīng)在一個特定的CPU上有了一個線程,并且可以保留該CPU不被普通OS所占用。本文中進行的所有測試都把Linux當作一個普通的OS。

預(yù)留處理器

    這個小標題似乎有些模棱兩可。本文的題目隱含了處理器預(yù)留這個難題的重點,似乎需要深入而詳細地討論,但實際上,代碼里只要一行程序就可以了。下面是對前面程序的修改:
...
pthread_attr_setcpu_np(&attr, 0);
pthread_attr_setreserve_np(&attr, 1);
pthread_create(&thread, NULL, thread_code, 0);
...
“pthread_attr_setreserve_np(&attr,
1);”這句設(shè)置了線程的一個布爾屬性。當在特定處理器上產(chǎn)生了一個線程后,只要該線程存在,GPOS就被禁止在這個處理器上運行。

    實際上也是如此的,一旦這條語句被執(zhí)行,GPOS就被禁止在處理器上面運行了,只能為創(chuàng)立的線程保留CPU(包括運行在CPU上的其它實時線程)。在有些情況下,允許所有的實時應(yīng)用程序直接保留在處理器的高速緩存中。由于處理器不用再去RAM中取代碼了,所以處理器的性能相對得到了提高。因為GPOS永遠不會在Cache中運行,從而不會把實時代碼擠出Cache,所以Cache永遠都被實時代碼占據(jù)。(Linux相當龐大,一旦運行起來就會占據(jù)很大的Cache空間)。

中斷控制

    在上面的代碼中,為實時代碼保留CPU會對其上的GPOS中斷產(chǎn)生負面的影響。由于Linux不在其上運行了,不能接受中斷了,所以對于其他設(shè)備,如以太網(wǎng)設(shè)備這樣的硬件就只等通過另外一個CPU為Linux提供信號了。這樣就使得保留的處理器不處理任何除了產(chǎn)生實時線程以外的任何中斷。

    現(xiàn)在處理器完全在實時線程的控制下了,我們再次把重點放在

    一些Linux實時操作系統(tǒng)制造商把中斷響應(yīng)時間和處理器預(yù)留作為得到實時Linux的主要方法。但其負面結(jié)果是功能環(huán)境縮小、服務(wù)功能簡單,沒有實時性的保證。本文分析了RTLinuxPro是如何簡易地為用戶產(chǎn)生處理器預(yù)留和中斷控制,以及如何提供一個完整的POSIX RTOS環(huán)境來支持它。

    硬實時操作系統(tǒng)一直以來是一個功能單一、非集成化,不受重視的應(yīng)用領(lǐng)域。另一方面,Linux系統(tǒng)則代表了目前計算機技術(shù)當中良好的集成性和普適性。如果把這二者結(jié)合起來,那將得到一個功能完善的硬實時操作系統(tǒng),同時可以把具有web接入的用戶的網(wǎng)絡(luò)功能部分以一種快捷、安全和簡單的方式集成到系統(tǒng)當中。
圖1:RTLinux技術(shù)。

    RTCore就是這樣一種能夠為RTLinuxPro和RTCoreBSD提供硬實時環(huán)境的例子。除了大量的Linux應(yīng)用接口外,RTCore還提供POSIX環(huán)境下硬實時的中斷句柄、線程、信號、互斥體(mutexes)、信號量(semaphores)、進程間通信等。

    同類技術(shù)中,其它方法的重點是放在對中斷響應(yīng)時間的提高方面。其工作本身是有探索價值的,但取得的結(jié)果卻很有限,只是在一個特定LINUX版本和硬件體系結(jié)構(gòu)下使中斷響應(yīng)時間得到了改善,仍然沒有硬實時方面的保證。同時,采用這些方法的操作系統(tǒng)提供給編程者的服務(wù)也十分有限。盡管對于某些基礎(chǔ)應(yīng)用,如頻繁的采樣和對采樣信號的簡單快速響應(yīng)的場合,這些方法是有效的,但多數(shù)情況下,卻反映出現(xiàn)實中的應(yīng)用領(lǐng)域根本就不是那么地簡單。

特定CPU上的線程引導(dǎo)

    先來看一個實時線程如何將自己裝入一個給定的CPU的例子。

----此處放L1----

    這里沒有什么新的東西,一個新的線程產(chǎn)生,就像其他任何的POSIX應(yīng)用一樣。區(qū)別只是這一行——“pthread_attr_setcpu_np(&attr, 0);”。這句告訴RTCore當新的線程創(chuàng)建的時候,應(yīng)該把它放到CPU 0中,而且永遠不會從CPU中被清除掉。原因在于當一個線程/任務(wù)被允許從一個處理器轉(zhuǎn)移到另一個的時候,高速緩存(Cache)的影響會改變實時性能。如果知道了在什么樣的CPU上都有哪些線程,那么就可以把這種轉(zhuǎn)移的影響降低到最小,實時性能也會得到顯著提高,同時RTOS的調(diào)度負荷也降到了最低。

    另外一個比較新的東西是“timespec_add_ns(&next,1000*1000);”,這句給timespec結(jié)構(gòu)體增加了一個毫秒,它是為了方便起見而提供的一個函數(shù)(POSIX并沒有定義這個函數(shù),所以用戶通常要手工規(guī)格化一些數(shù)據(jù))。如果用戶熟悉RTLinux,就不應(yīng)該對這個函數(shù)感到陌生,它已經(jīng)用了好幾年了。RTLinuxPro的用戶應(yīng)該注意到這個函數(shù):rtl_main_wait(),這是一個事件等待句柄,它允許程序暫時掛起直到從用戶或者系統(tǒng)接收到一個退出信號。(類似于GUI應(yīng)用中的事件等待進入函數(shù))。

    上述已經(jīng)在一個特定的CPU上有了一個線程,并且可以保留該CPU不被普通OS所占用。本文中進行的所有測試都把Linux當作一個普通的OS。

預(yù)留處理器

    這個小標題似乎有些模棱兩可。本文的題目隱含了處理器預(yù)留這個難題的重點,似乎需要深入而詳細地討論,但實際上,代碼里只要一行程序就可以了。下面是對前面程序的修改:
...
pthread_attr_setcpu_np(&attr, 0);
pthread_attr_setreserve_np(&attr, 1);
pthread_create(&thread, NULL, thread_code, 0);
...
“pthread_attr_setreserve_np(&attr,
1);”這句設(shè)置了線程的一個布爾屬性。當在特定處理器上產(chǎn)生了一個線程后,只要該線程存在,GPOS就被禁止在這個處理器上運行。

    實際上也是如此的,一旦這條語句被執(zhí)行,GPOS就被禁止在處理器上面運行了,只能為創(chuàng)立的線程保留CPU(包括運行在CPU上的其它實時線程)。在有些情況下,允許所有的實時應(yīng)用程序直接保留在處理器的高速緩存中。由于處理器不用再去RAM中取代碼了,所以處理器的性能相對得到了提高。因為GPOS永遠不會在Cache中運行,從而不會把實時代碼擠出Cache,所以Cache永遠都被實時代碼占據(jù)。(Linux相當龐大,一旦運行起來就會占據(jù)很大的Cache空間)。

中斷控制

    在上面的代碼中,為實時代碼保留CPU會對其上的GPOS中斷產(chǎn)生負面的影響。由于Linux不在其上運行了,不能接受中斷了,所以對于其他設(shè)備,如以太網(wǎng)設(shè)備這樣的硬件就只等通過另外一個CPU為Linux提供信號了。這樣就使得保留的處理器不處理任何除了產(chǎn)生實時線程以外的任何中斷。

    現(xiàn)在處理器完全在實時線程的控制下了,我們再次把重點放在

相關(guān)IC型號

熱門點擊

 

推薦技術(shù)資料

自制經(jīng)典的1875功放
    平時我也經(jīng)常逛一些音響DIY論壇,發(fā)現(xiàn)有很多人喜歡LM... [詳細]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!