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

當前位置:首頁 > 技術學院 > 技術前線
[導讀]內存是計算機系統(tǒng)中除了處理器以外最重要的資源,用于存儲當前正在執(zhí)行的程序和數據。內存是相對于CPU來說的,CPU可以直接尋址的存儲空間叫做內存,CPU需要通過驅動才能訪問的叫做外存。

本文主要介紹內存的基本概念以及操作系統(tǒng)的內存管理算法。

1 內存的基本概念

內存是計算機系統(tǒng)中除了處理器以外最重要的資源,用于存儲當前正在執(zhí)行的程序和數據。內存是相對于CPU來說的,CPU可以直接尋址的存儲空間叫做內存,CPU需要通過驅動才能訪問的叫做外存。

2 ROM&RAM&Flash

內存一般采用半導體存儲單元,分為只讀存儲器(ROM,Read Only Memory)、隨機存儲器(RAM,Random Access Memory)ROM一般只能讀取不能寫入,掉電后其中的數據也不會丟失。RAM既可以從中讀取也可以寫入,但是掉電后其中的數據會丟失。內存一般指的就是RAM。

ROM在嵌入式系統(tǒng)中一般用于存儲BootLoader以及操作系統(tǒng)或者程序代碼或者直接當硬盤使用。近年來閃存(Flash)已經全面代替了ROM在嵌入式系統(tǒng)中的地位,它結合了ROM和RAM的長處,不僅具備電子可擦除可編程的特性,而且斷電也不會丟失數據,同時可以快速讀取數據。

3 兩類內存管理方式

內存管理模塊管理系統(tǒng)的內存資源,它是操作系統(tǒng)的核心模塊之一。主要包括內存的初始化、分配以及釋放。

從分配內存是否連續(xù),可以分為兩大類。

連續(xù)內存管理

為進程分配的內存空間是連續(xù)的,但這種分配方式容易形成內存碎片(碎片是難以利用的空閑內存,通常是小內存),降低內存利用率。連續(xù)內存管理主要分為單一連續(xù)內存管理和分區(qū)式內存管理兩種。

非連續(xù)內存管理

將進程分散到多個不連續(xù)的內存空間中,可以減少內存碎片,內存使用率更高。如果分配的基本單位是頁,則稱為分頁內存管理;如果基本單位是段,則稱為分段內存管理。

當前的操作系統(tǒng),普遍采用非連續(xù)內存管理方式。不過因為分配粒度較大,對于內存較小的嵌入式系統(tǒng),一般采用連續(xù)內存管理。本文主要對嵌入式系統(tǒng)中常用的連續(xù)內存管理的分區(qū)式內存管理進行介紹。

4 分區(qū)式內存管理

分區(qū)式內存管理分為固定分區(qū)和動態(tài)分區(qū)。

固定分區(qū)

事先就把內存劃分為若干個固定大小的區(qū)域。分區(qū)大小既可以相等也可以不等。固定分區(qū)易于實現,但是會造成分區(qū)內碎片浪費,而且分區(qū)總數固定,限制了可以并發(fā)執(zhí)行的進程數量。

動態(tài)分區(qū)

根據進程的實際需要,動態(tài)地給進程分配所需內存。

5 動態(tài)分區(qū)內存管理

運作機制

動態(tài)分區(qū)管理一般采用空閑鏈表法,即基于一個雙向鏈表來保存空閑分區(qū)。對于初始狀態(tài),整個內存塊都會被作為一個大的空閑分區(qū)加入到空閑鏈表中。當進程申請內存時,將會從這個空閑鏈表中找到一個大小滿足要求的空閑分區(qū)。如果分區(qū)大于所需內存,則從該分區(qū)中拆分出需求大小的內存交給進程,并將此拆分出的內存從空閑鏈表中移除,剩下的內存仍然是一個掛在空閑鏈表中的空閑分區(qū)。

數據結構

空閑鏈表法有多種數據結構實現,這里介紹一種較為簡單的數據結構。每個空閑分區(qū)的數據結構中包含分區(qū)的大小,以及指向前一個分區(qū)和后一個分區(qū)的指針,這樣就能將各個空閑分區(qū)鏈接成一個雙向鏈表。

內存分配算法

First Fit(首次適應算法)

First Fit要求空閑分區(qū)鏈表以地址從小到大的順序鏈接。分配內存時,從鏈表的第一個空閑分區(qū)開始查找,將最先能夠滿足要求的空閑分區(qū)分配給進程。

Next Fit(循環(huán)首次適應算法)

Next Fit由First Fit算法演變而來。分配內存時,從上一次剛分配過的空閑分區(qū)的下一個開始查找,直至找到能滿足要求的空閑分區(qū)。查找時會采用循環(huán)查找的方式,即如果直到鏈表最后一個空閑分區(qū)都不能滿足要求,則返回到第一個空閑分區(qū)開始查找。

Best Fit(最佳適應算法)

從所有空閑分區(qū)中找出能滿足要求的、且大小最小的空閑分區(qū)。為了加快查找速度,Best Fit算法會把所有空閑分區(qū)按其容量從小到大的順序鏈接起來,這樣第一次找到的滿足大小要求的內存必然是最小的空閑分區(qū)。

Worst Fit(最壞適應算法)

從所有空閑分區(qū)中找出能滿足要求的、且大小最大的空閑分區(qū)。Worst Fit算法按其容量從大到小的順序鏈接所有空閑分區(qū)。

Two LevelSegregated Fit(TLSF)

使用兩層鏈表來管理空閑內存,將空閑分區(qū)大小進行分類,每一類用一個空閑鏈表表示,其中的空閑內存大小都在某個特定值或者某個范圍內。這樣存在多個空閑鏈表,所以又用一個索引鏈表來管理這些空閑鏈表,該表的每一項都對應一種空閑鏈表,并記錄該類空閑鏈表的表頭指針。


詳解嵌入式操作系統(tǒng)的內存管理算法

圖中,第一層鏈表將空閑內存塊的大小根據2的冪進行分類。第二層鏈表是具體的每一類空閑內存塊按照一定的范圍進行線性分段。比如25這一類,以23即8分為4個內存區(qū)間【25,25+8),【25+8,25+16),【25+16,25+24),【25+24,25+32);216這一類,以214分為4個小區(qū)間【216,216+214),【216+214,216+2*214),【216+2*214,216+3*214),【216+3*214,216+4*214)。同時為了快速檢索到空閑塊,每一層鏈表都有一個bitmap用于標記對應的鏈表中是否有空閑塊,比如第一層bitmap后3位010,表示25這一類內存區(qū)間有空閑塊。對應的第二層bitmap為0100表示【25+16,25+24)這個區(qū)間有空閑塊,即下面的52Byte。

Buddysystems(伙伴算法)

Segregated Fit算法的變種,具有更好的內存拆分和回收合并效率?;锇樗惴ㄓ泻芏喾N類,比如BinaryBuddies,Fibonacci Buddies等。Binary Buddies是最簡單也是最流行的一種,將所有空閑分區(qū)根據分區(qū)的大小進行分類,每一類都是具有相同大小的空閑分區(qū)的集合,使用一個空閑雙向鏈表表示。BinaryBuddies中所有的內存分區(qū)都是2的冪次方。

因為無論是已分配的或是空閑的分區(qū),其大小均為 2 的冪次方,即使進程申請的內存小于分配給它的內存塊,多余的內存也不會再拆分出來給其他進程使用,這樣就容易造成內部碎片。

當進程申請一塊大小為n的內存時的分配步驟為:

1、計算一個i值,使得2i-1

2、在空閑分區(qū)大小為2i的空閑鏈表中查找

3、如果找到空閑塊,則分配給進程

4、如果2i的空閑分區(qū)已經耗盡,則在分區(qū)大小為2i+1的空閑鏈表中查找

5、如果存在2i+1的空閑分區(qū),則將此空閑塊分為相等的兩個分區(qū),這兩分區(qū)就是一對伙伴,其中一塊分配給進程,另一塊掛到分區(qū)大小為2i的空閑鏈表中

6、如果2i+1的空閑分區(qū)還是不存在,則繼續(xù)查找大小為2i+2的空閑分區(qū)。如果找到,需要進行兩次拆分。第一次拆分為兩塊大小為2i+1的分區(qū),一塊分區(qū)掛到大小為2i+1的空閑鏈表中,另一塊分區(qū)繼續(xù)拆分為兩塊大小為2i的空閑分區(qū),一塊分配給進程,另一塊掛到大小為2i的空閑鏈表中

7、如果2i+2的空閑分區(qū)也找不到,則繼續(xù)查找2i+3,以此類推

在內存回收時,如果待回收的內存塊與空閑鏈表中的一塊內存互為伙伴,則將它們合并為一塊更大的內存塊,如果合并后的內存塊在空閑鏈表中還有伙伴,則繼續(xù)合并到不能合并為止,并將合并后的內存塊掛到對應的空閑鏈表中。


詳解嵌入式操作系統(tǒng)的內存管理算法

內存管理的挑戰(zhàn)與趨勢

內存限制:嵌入式系統(tǒng)的內存資源通常有限,因此需要高效地利用內存資源。

多任務環(huán)境:在多任務環(huán)境下,任務的切換和中斷處理都需要快速響應,因此內存管理的實時性要求較高。

安全性:內存管理的錯誤可能導致系統(tǒng)崩潰或數據泄漏,因此需要采取各種安全機制來確保系統(tǒng)的穩(wěn)定性。

未來,嵌入式操作系統(tǒng)的內存管理將朝著更高效、更安全、更智能的方向發(fā)展,以滿足不斷增長的應用需求。

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

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

關鍵字: 驅動電源

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

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

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

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

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

關鍵字: LED 設計 驅動電源

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

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

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

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

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

關鍵字: LED 驅動電源 功率因數校正

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

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

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

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

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

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