日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]隨著 Linux 內核的發(fā)展和成熟,更多的用戶期待著 Linux 可以運行非常大的系統(tǒng)來處理科學分析應用程序或者甚至海量數(shù)據(jù)庫。這些企業(yè)級的應用程序通常需要大量的內存才能好好運行。2.4 Linux 內核有識別相當大數(shù)量的內存的功能,但是 2.5 內核發(fā)生了很多改變,使其有能力以更有效的方式處理更大量的內存。

隨著 Linux 內核的發(fā)展和成熟,更多的用戶期待著 Linux 可以運行非常大的系統(tǒng)來處理科學分析應用程序或者甚至海量數(shù)據(jù)庫。這些企業(yè)級的應用程序通常需要大量的內存才能好好運行。2.4 Linux 內核有識別相當大數(shù)量的內存的功能,但是 2.5 內核發(fā)生了很多改變,使其有能力以更有效的方式處理更大量的內存。

反向映射

在 Linux 內存管理器中,頁表保持對進程使用的內存物理頁的追蹤,它們將虛擬頁映射到物理頁。這些頁中有一些可能不是長時間使用,它們應該被交換出去。不過,在它們可以被交換出去之前,必須找到映射那個頁的每一個進程,這樣那些進程中相應頁的頁表條目才可以被更新。在 Linux 2.4 內核中,這是一項令人生畏的任務,因為為了確定某個頁是否被某個進程映射,必須遍歷每個進程的頁表。隨著在系統(tǒng)中運行的進程數(shù)量的增加,將這些頁交換出去的工作量也會增加。

反向映射,或者說是 RMAP,就是為解決此問題而在 2.5 內核中實現(xiàn)的。反向映射提供了一個發(fā)現(xiàn)哪些進程正在使用給定的內存物理頁的機制。不再是遍歷每個進程的頁表,內存管理器現(xiàn)在為每一個物理頁建立了一個鏈表,包含了指向當前映射那個頁的每一個進程的頁表條目(page-table entries, PTE)的指針。這個鏈表叫做 PTE 鏈。PTE 鏈極大地提高了找到那些映射某個頁的進程的速度,如圖 1 所示。

圖 1. 2.6 中的反向映射

 

 

當然,沒有什么是免費的:用反向映射獲得性能提高也要付出代價。反向映射最重要、明顯的代價是,它帶來了一些內存開銷。不得不用一些內存來保持對所有那些反向映射的追蹤。PTE 鏈的每一個條目使用 4 個字節(jié)來存儲指向頁表條目的指針,用另外 4 個字節(jié)來存儲指向鏈的下一個條目的指針。這些內存必須使用低端內存,而這在 32 位硬件上有點不夠用。有時這可以優(yōu)化到只使用一個條目而不使用鏈表。這種方法叫做 p頁直接方法(page-direct approach)。如果只有一個到這個頁的映射,那么可以用一個叫做“direct”的指針來代替鏈表。只有在某個頁只是由一個惟一的進程映射時才可以進行這種優(yōu)化。如果稍后這個頁被另一個進程所映射,它將不得不再去使用 PTE 鏈。一個標記設置用來告訴內存管理器什么時候這種優(yōu)化對一個給定的頁有效。

反向映射還帶來了一些其他的復雜性。當頁被一個進程映射時,必須為所有那些頁建立反向映射。同樣,當一個進程釋放對頁的映射時,相應的映射也必須都刪除掉。這在退出時尤其常見。所有這些操作都必須在鎖定情況下進行。對那些執(zhí)行很多派生和退出的應用程序來說,這可能會非常浪費并且增加很多開銷。

盡管有一些折衷,但可以證明反向映射是對 Linux 內存管理器的一個頗有價值的修改。通過這一途徑,查找定位映射某個頁的進程這一嚴重瓶頸被最小化為只需要一個簡單的操作。當大型應用程序向內核請求大量內存和多個進程共享內存時,反向映射幫助系統(tǒng)繼續(xù)有效地運行和擴展。當前還有更多對反向映射的改進正在研究中,可能會出現(xiàn)在未來的 Linux 內核版本中。

大內存頁

典型地,內存管理器在 x86 系統(tǒng)上處理的內存頁為 4 KB。實際的頁大小是與體系結構相關的。對大部分用途來說,內存管理器以這樣大小的頁來管理內存是最有效的。不過,有一些應用程序要使用特別多的內存。大型數(shù)據(jù)庫就是其中一個常見的例子。由于每個頁都要由每個進程映射,必須創(chuàng)建頁表條目來將虛擬地址映射到物理地址。如果您的一個進程要使用 4KB 的頁來映射 1 GB 內存,這將用到 262,144 個頁表條目來保持對那些頁的追蹤。如果每個頁表條目消耗 8 個字節(jié),那些每映射 1 GB 內存需要 2 MB 的開銷。這本身就已經(jīng)是非常可觀的開銷了,不過,如果有多個進程共享那些內存時,問題會變得更嚴重。在這種情況下,每個映射到同一塊 1 GB 內存的進程將為頁表條目付出自己 2 MB 的代價。如果有足夠多的進程,內存在開銷上的浪費可能會超過應用程序請求使用的內存數(shù)量。

解決這一問題的一個方法是使用更大的頁。大部分新的處理器都支持至少一個小的和一個大的內存頁大小。在 x86 上,大內存頁的大小是 4 MB,或者,在物理地址擴展(PAE)打開的系統(tǒng)上是 2 MB。假定在前面的中使用頁大小為 4 MB 的大內存頁,同樣 1 GB 內存只用 256 個頁表條目就可以映射,而不需要 262,144 個。這樣開銷從 2 MB 變?yōu)?2,048 個字節(jié)。

大內存頁的使用還可以通過減少 變換索引緩沖(translation lookaside buffer, TLB)的失敗次數(shù)來提高性能。TLB 是一種頁表的高速緩存,讓那些在表中列出的頁可以更快地進行虛擬地址到物理地址的轉換。大內存頁可以用更少的實際頁來提供更多的內存,相當于較小的頁大小,使用的大內存頁越多,就有越多的內存可以通過 TLB 引用。

在高端內存中存儲頁表條目

在 32 位機器上頁表通常只可以存儲在低端內存中。低端內存只限于物理內存的前 896 MB,同時還要滿足內核其余的大部分要求。在應用程序使用了大量進程并映射了大量內存的情況下,低端內存可能很快就不夠用了。

現(xiàn)在,在 2.6 內核中有一個配置選項叫做 Highmem PTE,讓頁表條目可以存放在高端內存中,釋放出更多的低端內存區(qū)域給那些必須放在這里的其他內核數(shù)據(jù)結構。作為代價,使用這些頁表條目的進程會稍微慢一些。不過,對于那些在大量進程在運行的系統(tǒng)來說,將頁表存儲到高端內存中可以在低端內存區(qū)域擠出更多的內存。

圖 2. 內存區(qū)域

 

 

穩(wěn)定性

更好的穩(wěn)定性是 2.6 內存管理器的另一個重要改進。當 2.4 內核發(fā)布時,用戶幾乎馬上就開始遇到內存管理相關的穩(wěn)定性問題。從內存管理對整個系統(tǒng)的影響來看,穩(wěn)定性是至關重要的。問題大部分已經(jīng)解決,但是解決方案必須從根本上推翻原來的內存管理器并重寫一個簡單的多的管理器來取代它。這為 Linux 的發(fā)行者改進自己特定發(fā)行版本的 Linux 的內存管理器留下了很大的空間。不過,那些改進的另一方面是,在 2.4 中的內存管理部件由于使用的發(fā)行版本不同而很不相同。為避免再發(fā)生這樣的事情,內存管理成為 2.6 中內核開發(fā)的最細致的一部分。從很低端的桌面系統(tǒng)到大型的、企業(yè)級的、多處理器的系統(tǒng),新的內存管理代碼已經(jīng)在它們上面都已經(jīng)進行了測試和優(yōu)化。

結束語

Linux 2.6 內核中內存管理的改進遠遠不只本文中提到的這些特性。很多變化是細微的,卻相當重要。這些變化一起促生了 2.6 內核中的內存管理器,它的設計目標是更高的性能、效率和穩(wěn)定性。有一些變化,比如 Highmem PTE 和大內存頁,目的是減少內存管理帶來的開銷。其他變化,比如反向映射,提高了某些關鍵領域的性能。之所以選擇這些特別的例子,是因為它們舉例說明了 Linux 2.6 內核得到了怎樣的調整和增強,以便更好地處理企業(yè)級的硬件和應用程序。

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

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

關鍵字: 驅動電源

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

關鍵字: 工業(yè)電機 驅動電源

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

關鍵字: 驅動電源 照明系統(tǒng) 散熱

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

關鍵字: LED 設計 驅動電源

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

關鍵字: 電動汽車 新能源 驅動電源

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

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

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

關鍵字: LED 驅動電源 功率因數(shù)校正

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

關鍵字: LED照明技術 電磁干擾 驅動電源

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

關鍵字: LED 驅動電源 開關電源

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

關鍵字: LED 隧道燈 驅動電源
關閉