www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]上個世紀(jì),研發(fā)人員投入了大量精力提高Linux實(shí)時性能和行為,最著名的是PREEMPT_RT Linux實(shí)時擴(kuò)展。最近,研發(fā)人員致力于研究適用于多核設(shè)備的Linux用戶空間解決方案,該解

上個世紀(jì),研發(fā)人員投入了大量精力提高Linux實(shí)時性能和行為,最著名的是PREEMPT_RT Linux實(shí)時擴(kuò)展。最近,研發(fā)人員致力于研究適用于多核設(shè)備的Linux用戶空間解決方案,該解決方案允許從用戶空間中直接訪問基礎(chǔ)硬件,從而可避免因?qū)inux內(nèi)核引入用戶空間應(yīng)用而帶來的額外系統(tǒng)開銷。這些用戶空間擴(kuò)展(有多個)已首先由電信/網(wǎng)絡(luò)高性能 IP 數(shù)據(jù)包處理系統(tǒng)進(jìn)行驅(qū)動,以實(shí)現(xiàn)所謂的"裸金屬"實(shí)施,其中,多核設(shè)備中的Linux用戶空間應(yīng)用可以模擬"無操作系統(tǒng)"解決方案的執(zhí)行過程,即在每個內(nèi)核上進(jìn)行簡單"運(yùn)行到完成"、輪詢循環(huán),以便進(jìn)行數(shù)據(jù)包處理。在從根本上實(shí)現(xiàn)該目標(biāo)的同時,該解決方案仍可用于非常特殊的用例。還有其他需要提高性能的用例無法通過以上解決方案完全解決嗎?如果有的話,請列舉出來,是否可應(yīng)用更完善的Linux實(shí)時改進(jìn)?答案是肯定的,采用Linux用戶空間輕型線程 (light-weight threading, LWT) 即可。我們來研究一下實(shí)時 Linux,以及輕型線程如何能成為適用于某些應(yīng)用的解決方案。研究的重點(diǎn)受電信、網(wǎng)絡(luò)或常用通信應(yīng)用的影響,Enea側(cè)重于這些應(yīng)用中采用的技術(shù)。但總體上來說,對輕型線程的重點(diǎn)應(yīng)用會使多方受益。

實(shí)時Linux及其解決的問題

在過去的10 年中,Linux 已在實(shí)時性能和行為方面取得了顯著的進(jìn)步,滿足了大量應(yīng)用的需求。具體歸納如下:

PREEMPT_RT

PREEMPT_RT也許是Linux實(shí)時擴(kuò)展取得的最顯著的成就,PREEMPT_RT數(shù)據(jù)包解決了多核設(shè)備Linux中存在的特別棘手的問題,即"中斷延遲"問題。將事件/數(shù)據(jù)傳送到真實(shí)用戶空間應(yīng)用之前,處理Linux內(nèi)核中的中斷占用的系統(tǒng)開銷非常高 - 該系統(tǒng)開銷往往會延遲其他中斷,從而增大發(fā)生中斷時測得的中斷信息接收方進(jìn)行處理的總體延遲。同樣,Linux內(nèi)核中還有許多所謂的"重要部分",可在其中通過自旋鎖禁用中斷。標(biāo)準(zhǔn)Linux內(nèi)核的總體中斷延遲與許多實(shí)時應(yīng)用的最重要的中斷延遲要求不符,特別是無線接入網(wǎng)(移動)和移動核心基礎(chǔ)設(shè)施,這兩者要求最差情況下的中斷延遲應(yīng)在20-30微秒范圍內(nèi)。這一點(diǎn)也適用于許多其他市場應(yīng)用。在快速"nutshell"PREEMPT_RT中,這一問題是通過以下方式解決的:

將全部設(shè)備驅(qū)動器中斷句柄傳遞到可調(diào)度線程中,這樣可最大程度地減少Linux內(nèi)核對中斷的處理工作,因此,無需等待前一中斷處理完成便可處理新中斷。之后,中斷處理會變?yōu)槭軆?yōu)先級驅(qū)動,根據(jù)用戶需求,會先完成優(yōu)先級最高的中斷處理。

將Linux內(nèi)核中的所有死空間自旋鎖傳遞到互斥量中,從而允許其他內(nèi)核線程代替內(nèi)核空間自旋鎖運(yùn)行。

基本上,PREEMPT_RT已根據(jù)非常高性能的實(shí)時標(biāo)準(zhǔn)將總體中斷延遲成功縮短,這樣對大量Linux應(yīng)用都非常有幫助。要了解具體應(yīng)用?請繼續(xù)往下讀。

用戶空間Linux調(diào)整

如上文所述,近年來,研發(fā)人員對Linux用戶空間應(yīng)用投入了大量精力。目的是避免用戶空間應(yīng)用(Linux 用戶對其附加價值投入了大量精力)占用Linux內(nèi)核本身的系統(tǒng)開銷來處理某些特定的設(shè)備/中斷交互。Linux采用的模型可極大程度地防止用戶空間應(yīng)用受到內(nèi)核的影響,在該模型中,所有用戶空間操作(包括線程)始終會映射到Linux內(nèi)核,以便處理其I/O請求。這樣便Linux具有強(qiáng)大的行為和特性。但是,對于數(shù)據(jù)處理性能非常高的應(yīng)用來說,即使采用PREEMPT_RT,Linux也會有短時故障,這是因?yàn)?,總是需要進(jìn)行Linux內(nèi)核上下文切換才能直接訪問硬件。用戶空間Linux實(shí)施允許應(yīng)用在不涉及Linux內(nèi)核的情況下直接訪問硬件和中斷,并可極大程度地提高性能。但這種性能提升只能在 I/O密度極高的環(huán)境中實(shí)現(xiàn)。大部分Linux用戶空間調(diào)整都側(cè)重于單線程應(yīng)用(如高性能數(shù)據(jù)包處理),其中,Linux下只有一個線程用于模擬多核設(shè)備中的"無操作系統(tǒng)"性能。

多線程問題

實(shí)時Linux解決方案調(diào)查中缺少的是認(rèn)真檢查多線程在實(shí)時嵌入式應(yīng)用中的有效性。實(shí)際上,早在20世紀(jì)80年代Linux出現(xiàn)之前,人們就提出了需要采用嵌入式實(shí)時操作系統(tǒng)(RTOS) 來實(shí)現(xiàn)低延遲、高吞吐量、極具實(shí)時特點(diǎn)的應(yīng)用。操作系統(tǒng)的結(jié)構(gòu)發(fā)生了變化,但對這方面的需求卻沒有改變。此類RTOS解決方案所具有的各種性能、行為和特性是過去十多年中Linux一直嘗試達(dá)到的。這并不意味著傾向于恢復(fù)使用RTOS,而是要達(dá)到RTOS所具有的功能。就便攜性、應(yīng)用的廣闊生態(tài)系統(tǒng)以及設(shè)備支持和常規(guī)支持來講,Linux在實(shí)時嵌入式解決方案中的總體價值是任何RTOS都無法比擬的。存在兩個實(shí)際問題:

多線程為何重要?

如果多線程很重要,那么我們應(yīng)如何將RTOS多線程性能、行為和特性添加到Linux中,以便取得更大的成功?關(guān)鍵問題是了解Linux多線程實(shí)施與RTOS,然后考慮可以進(jìn)行哪些改進(jìn)。

多線程為何重要?

30多年前,當(dāng)計(jì)算機(jī)解決方案軟件設(shè)計(jì)人員碰到單線程解決方案無法解決的復(fù)雜問題時,便已提出了對多線程實(shí)時性方面的需求。所需解決方案要求單個應(yīng)用具有多個任務(wù),也許一些是計(jì)算任務(wù),一些是受I/O驅(qū)動的任務(wù),但是,就任務(wù)的總體執(zhí)行而言,所有任務(wù)均密切相關(guān)。但多個任務(wù)密切相關(guān)意味著這些任務(wù)應(yīng)共享一部分CPU時間才能達(dá)到CPU的有效總體利用率。在很多此類應(yīng)用中,必須禁止執(zhí)行某些操作、等待某些I/O事件或另一應(yīng)用發(fā)出的其他通信。因此出現(xiàn)了簡單的可執(zhí)行程序,這些可執(zhí)行程序可以處理多個線程,同時可禁用線程,并可在各線程之間進(jìn)行低延遲通信。

并非所有實(shí)時應(yīng)用都需要支持重要的多線程處理功能。本文并未對相關(guān)應(yīng)用進(jìn)行分類。但很顯然,需要使用多線程處理功能的應(yīng)用是那些需要在協(xié)議中設(shè)定" 等待狀態(tài)"的任何類型的復(fù)雜協(xié)議,即等待允許應(yīng)用繼續(xù)進(jìn)行的響應(yīng)或事件。之后,應(yīng)用

也許上述教程對于許多人來說很簡單。請注意,很多移動基礎(chǔ)設(shè)施和核心網(wǎng)絡(luò)設(shè)備供應(yīng)商得出的結(jié)論是,雖然Linux是當(dāng)前或未來系統(tǒng)的首選,但目前構(gòu)建的Linux還不足以滿足業(yè)界的全部要求。原因是什么?

采用PTHREADS的Linux多線程

Pthreads是由IEEE規(guī)劃的可移植操作系統(tǒng)接口(POSIX)創(chuàng)建的,目的是為了解決Unix中存在的高性能、多線程問題,之后被Linux用在最早的版本中,用于為企業(yè)實(shí)施可移植Unix,目前用于嵌入式應(yīng)用中。[!--empirenews.page--]

創(chuàng)建pthreads模型是為了解決原始Unix Fork/Join模型創(chuàng)建Unix"子"進(jìn)程時出現(xiàn)的問題。由于該模型涉及到創(chuàng)建(還可能涉及刪除)整個受內(nèi)存保護(hù)的環(huán)境及執(zhí)行模式,因此Unix進(jìn)程模型非常龐大。需要在Unix下采用適用于多線程的較輕型模型,因此pthreads應(yīng)運(yùn)而生。

但Unix(也包括Linux)模型是專為將內(nèi)核與用戶空間應(yīng)用完全分離而設(shè)計(jì)的,其優(yōu)勢之一在于提供的保護(hù)、安全性和可靠性遠(yuǎn)勝于其他實(shí)施方案(包括過去10幾年間使用的RTOS)。實(shí)質(zhì)上,這意味著Linux用戶空間中的每個pthread都會由Linux內(nèi)核線程表示,因此,全部或大部分 Linux系統(tǒng)調(diào)用(特別是設(shè)備驅(qū)動器)均可通過用戶空間進(jìn)行訪問。但是,由于OEM制造的產(chǎn)品并不具備GPL,因此用戶空間中實(shí)際存儲了所有嵌入式 Linux實(shí)時應(yīng)用。因此,在每種情況下,使用pthreads都涉及到調(diào)用Linux內(nèi)核,從而為本可以在本地實(shí)施的應(yīng)用帶來了額外的系統(tǒng)開銷。

但請您稍稍考慮一下。采用上文提到的Linux實(shí)時擴(kuò)展怎么樣?是的,PREEMPT_RT可以解決Linux內(nèi)核中存在的許多關(guān)于響應(yīng)性的問題,但不能真正解決多線程問題。實(shí)施用戶空間 Linux可解決設(shè)備驅(qū)動器/中斷性能問題,但并不能真正解決多線程問題。Linux實(shí)時容器可解決部分問題,但實(shí)時容器只是一種基于標(biāo)準(zhǔn)Linux的用戶空間Linux可視化技術(shù),并不能真正解決根本的多線程問題。

輕型線程(LWT)--復(fù)雜Linux應(yīng)用的真正解決方案

之前針對Linux提出了多種輕型線程模型的建議,但沒有一種模型能夠真正解決問題。原因何在?因?yàn)榇蠖鄶?shù)模型的功能都不是很強(qiáng)大。涉及復(fù)雜多線程應(yīng)用的下一代Linux解決方案真正需要的是適用于用戶空間Linux應(yīng)用的全新Linux模型。下文概括介紹了這種名為Linux輕型線程(LWT)的解決方案。將高性能、低系統(tǒng)開銷、多線程調(diào)度器植入Linux用戶空間,來代替單獨(dú)的pthread.原因何在?

Pthread系統(tǒng)開銷

進(jìn)程和pthreads是Linux了解的唯一調(diào)度實(shí)體。

LWT pthread只是一個Linux編碼執(zhí)行背景,可用于永久運(yùn)行pthread.由于用戶空間調(diào)度器始終保持控制,因此pthread絕不會被掛起,省電模式除外。這種情況不在本文的討論范圍。

該用戶空間調(diào)度器的運(yùn)行和操作方式與某些傳統(tǒng)RTOS高性能、低延遲實(shí)施完全相同,但不會涉及到Linux內(nèi)核。

實(shí)施過程利用新用戶空間Linux實(shí)施過程來直接訪問硬件。同樣也不涉及Linux內(nèi)核。

上述LWT解決方案可在任何Linux實(shí)時應(yīng)用中實(shí)現(xiàn)動態(tài)性能的提升。Enea已設(shè)計(jì)出上述LWT的一些原型,事實(shí)證明,與Linux pthreads在調(diào)度器系統(tǒng)開銷、特別是上下文切換和線程間消息發(fā)送/通信延遲方面的性能相比,LWT性能可提高10倍。

但是除了調(diào)度性能和線程間通信功能之外,LWT解決方案還應(yīng)帶來什么?LWT概念除了在性能方面勝過Linux pthreads之外,還有更多優(yōu)勢。解決方案穩(wěn)健性的概念如何?與歷史悠久的RTOS實(shí)時解決方案一樣,LWT也需要具有以下額外Linux特性:

決定性調(diào)度

調(diào)度系統(tǒng)開銷低--上下文切換成本低

線程間信號系統(tǒng)開銷低

線程創(chuàng)建成本低

多核設(shè)備中Linux輕型線程模型的結(jié)構(gòu)圖

LWT實(shí)施方案的結(jié)構(gòu)圖如下。涉及整個共享內(nèi)存空間的Linux進(jìn)程可能跨多核設(shè)備的多個內(nèi)核。為了達(dá)到最高效率,LWT模型需要將Linux進(jìn)程中的單個pthread鎖定至某一個內(nèi)核,但并不特別要求這樣做。LWT鎖定至pthread之后,便可遷移到Linux SMP需要的任何內(nèi)核中。

 


圖1:多核設(shè)備中Linux輕型線程模型的結(jié)構(gòu)圖

結(jié)論

高效輕型線程(LWT)將成為下一個Linux實(shí)時性能和行為問題。需要強(qiáng)調(diào)的是,并非所有實(shí)時應(yīng)用都需要使用功能強(qiáng)大的類似LWT的解決方案。但是一些實(shí)時應(yīng)用,尤其是電信/網(wǎng)絡(luò)中的應(yīng)用以及無線接入網(wǎng)、移動基礎(chǔ)設(shè)施核心/邊緣中的那些需要使用某些復(fù)雜網(wǎng)絡(luò)協(xié)議的應(yīng)用、或任何具有類似實(shí)時需求的其他系統(tǒng)均可受益于Linux輕型線程--下一代 Linux 實(shí)時擴(kuò)展。同時,實(shí)時嵌入式Linux的整個發(fā)展過程證明了Linux的運(yùn)行效果與傳統(tǒng)RTOS解決方案一樣優(yōu)異。Linux已取得了一些進(jìn)展,但是作者認(rèn)為,最重要的電信/網(wǎng)絡(luò)應(yīng)用中使用的Linux尚未達(dá)到預(yù)期的要求。但也許通過Linux輕型線程,我們可以更接近這一目標(biāo)??偟膩碚f,Linux實(shí)時嵌入式行業(yè)的一個側(cè)重點(diǎn)是研發(fā)出可用于要求最高的實(shí)時應(yīng)用的解決方案。下圖中描述了該目標(biāo):

 


圖2:輕型線程和Linux概念--Linux和RTOS最重要的概念

應(yīng)放棄對CPU的控制權(quán),允許運(yùn)行其他類似的線程,來代替該響應(yīng)或事件。

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計(jì)中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計(jì)工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉