国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

靜、動態內存的優劣比較

RTThread物聯網操作系統 ? 來源:YXQ ? 2019-08-06 18:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關于靜態內存與動態內存

1.1、靜態和動態內存的特點在探討這個問題之前我們先來對比下靜態內存和動態內存的特點:1. 創建的時間不同: 創建的時間不同:靜態分配發生在程序編譯和連接的時候。動態分配則發生在程序調入和執行的時候。

編譯鏈接過程中已經分配好的

代碼運行過程中使用rt_malloc分配

2. 創建的空間不同:堆都是動態分配的,沒有靜態分配的堆。棧有2種分配方式:靜態分配和動態分配。靜態分配是編譯器完成的,比如局部變量的分配。動態分配由函數malloc進行分配。不過棧的動態分配和堆不同,他的動態分配是由編譯器進行釋放,無需我們手工實現。

1.2、靜態和動態內存的優缺點

在了解了靜態內存和動態內存不同的特點后可以分析出它們在不同的方面具有不同的優缺點:1.靜態內存編譯階段就分配好了,不會存在分配失敗的情況,除非系統內存被分配完了,但是在編譯階段就可以查出。動態內存在運行中分配,在正常運行的情況下可能夠正常分配,在某種環境下可能分配失敗 ,這樣就對開發者的代碼水平要求更高,要求開發者需要對代碼的健壯性有要求。

2.靜態內存由于是編譯階段分配好的,而動態內存是由運行中分配,這樣動態內存可以被高效復用,當某段程序使用完畢后,可以將內存交換給內存池中等待下次程序的分配,由于這種機制,開發者可以利用更小的內存開發更大型的程序。

3. 動態內存由于是動態分配,所以涉及到分配和釋放的問題,假設X程序在分配了ABC3塊內存,程序執行完畢后AC區域內存被釋放,但是由于開發者的疏忽導致B區域的內存被遺留。而X程序又是會被反復調用的,這樣我們的內存區域由于有沒有釋放的區域導致每次調用就會占用一段區域,最終系統就沒有內存可以使用。這種情況一般在產品實際體現為最開始的時候設備正常工作,但是運行了幾個小時或者幾天后死機。這種情況一般被稱作內存泄漏(Memory Leak)。4. 在嵌入式RTOS中線程函數中使用靜態內存,也就是在線程中定義局部變量,會加大線程??臻g的開銷。

裸機開發和RTOS開發的特點

1. 代碼規模:裸機開發的項目一般代碼規模度都比較小,對于一般開發者都難于駕馭使用裸機開發超大規模項目,人力成本和時間成本都太高。反而由于RTOS的模塊化特性,更容易開發出代碼規模大的項目。2. 系統穩定性:在機電,航空,汽車等行業都是需要高實時性、高穩定性和高安全性的。對于RTOS來說,系統任務的劃分調度都是系統管理,當開發者對其機制了解不清楚的情況下反而帶來了部分風險。除此之外RTOS上的內存管理也是很大影響系統的,對于RTOS上一般不會存在MMU內存管理單元,也就代表大部分運行RTOS的芯片上都沒有虛擬地址映射,那么就無法利用物理地址和虛擬地址的特性進行內存整理,避免內存泄漏。所以說在RTOS動態內存這塊內存有風險。

嵌入式中是否應該使用動態內存

明白不同內存的優缺點和裸機RTOS的特點之后,我們在回頭來分析 “嵌入式中是否應該使用動態內存?” 這個問題。在實時嵌入式系統中,由于系統軟件并不像PC上復雜,一般都是很簡單的內存使用,所以一般也不使用動態內存管理,但是隨著RTOS面臨的任務越來越重,尤其是IoTAIoT的到來,讓許多消費級產品運行的RTOS的負擔越來越重。在這種情況下繼續使用靜態內存開發會極大的限制開發進度,整個開發的靈活性非常低。同時靜態的內存無法復用使用同一片內存區域,相比與動態內存在大型項目中一般會使用更多的內存,在內存大小不容樂觀的嵌入式系統是很難接受的。但是針對一些高穩定性和高安全性的項目來說,使用動態內存就需要好好斟酌下,由于RTOS上基本沒有MMU的硬件支持或者是系統軟件支持,所以不可避免的系統中會出現內存碎片,從而有可能導致系統異常。

最終說了這么多總結成以下幾點:

1. 沒有使用RTOS的項目:不建議使用動態內存,這種項目一般很簡單,不必使用動態內存增大系統開銷和復雜度。

2. 使用RTOS的消費級項目:建議使用動態內存,一般這種項目代碼復雜度比裸機高,合理使用動態內存會有效降低內存的開銷。同時很多Github項目的linux程序都是會使用內存管理,有這套機制能更加方便的移植代碼。

3. 使用RTOS的軍工、航天、醫療等高穩定性和高安全性項目:建議盡量降低對動態內存的使用與依賴以確保系統的穩定性。當然也不代表動態內存就無法在這些項目上使用,只是要求系統開發者對系統內存的把控要求更高。

RT-Thread的內存管理

RT-Thread 操作系統在內存管理上,根據上層應用及系統資源的不同,有針對性地提供了不同的內存分配管理算法??傮w上可分為兩類:內存堆管理與內存池管理,而內存堆管理又根據具體內存設備劃分為三種情況:

第一種是針對小內存塊的分配管理(小內存管理算法);第二種是針對大內存塊的分配管理(slab 管理算法);第三種是針對多內存堆的分配情況(memheap 管理算法)。

小內存管理算法是一個簡單的內存分配算法。初始時,它是一塊大的內存。當需要分配內存塊時,將從這個大的內存塊上分割出相匹配的內存塊,然后把分割出來的空閑內存塊還回給堆管理系統中。每個內存塊都包含一個管理用的數據頭,通過這個頭把使用塊與空閑塊用雙向鏈表的方式鏈接起來。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 動態內存
    +關注

    關注

    1

    文章

    25

    瀏覽量

    8241
  • 靜態內存
    +關注

    關注

    0

    文章

    6

    瀏覽量

    1541

原文標題:嵌入式中是否應該使用動態內存?

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    微型導軌的額定載荷與動載荷的關聯

    在精密制造領域,微型導軌的額定載荷與動載荷是衡量其性能的核心指標。
    的頭像 發表于 03-05 17:58 ?192次閱讀
    微型導軌的額定<b class='flag-5'>靜</b>載荷與動載荷的關聯

    DRAM動態隨機存取存儲器DDR2 SDRAM內存解決方案

    在半導體存儲領域,DRAM動態隨機存取存儲器始終是電子設備性能的核心支撐。作為存儲解決方案的重要組成部分,DDR2 SDRAM內存解決方案憑借其高效的數據處理能力和穩定的運行表現,廣泛應用于通信設備、工業控制及嵌入式系統等領域。
    的頭像 發表于 02-28 16:31 ?495次閱讀

    降壓轉換器與LDO的優劣對比

    本文將繼續介紹降壓轉換器的自發熱效應考量、降壓轉換器與LDO的優劣對比等。
    的頭像 發表于 02-25 15:37 ?309次閱讀
    降壓轉換器與LDO的<b class='flag-5'>優劣</b>對比

    keil中c語言的動態分配內存

    于處理器的指令集中,效率很高,但是分配的內存容量有限。另外,當函數運行結束時,棧區的空間會被自動釋放。 (3)內存映射段。該部分內存主要用于文件映射、動態庫以及匿名映射。 (4)堆區。
    發表于 01-21 06:04

    LabView 程序內存一直增長,內存溢出問題?

    LabView 程序內存一直增長,求助,有償,比較復雜的程序,需要非常精通的人幫忙,謝謝
    發表于 01-12 09:05

    Perforce QAC 2025.4 的新特性

    Perforce QAC 2025.4 提供了一個新的最小化安裝包,以簡化 CI/CD 環境的部署,并包含分析改進,例如擴展了針對 Windows API 的動態內存分析。Visual Studio
    的頭像 發表于 12-30 13:50 ?506次閱讀
    Perforce QAC 2025.4 的新特性

    嵌入式系統中,動態分配內存可能發生的問題是什么?

    盡管不像非嵌入式計算機那么常見,嵌入式系統還是有從堆(heap)中動態分配內存的過程的。 那么嵌入式系統中,動態分配內存可能發生的問題是什么? 這 里,我期望應試者能提到
    發表于 12-22 09:42

    為什么單片機中很少使用malloc,而PC程序頻繁使用呢?

    使用 malloc)變得不太適用,因為動態內存分配可能導致內存碎片,造成內存不足或系統崩潰。 PC:現代PC的內存資源相對豐富,RAM通常在GB級別。在這種環境下,malloc 可以靈
    發表于 11-20 06:55

    400Hz中頻變電源簡單介紹

    400Hz中頻變電源,作為現代電力電子技術的杰出代表,以其卓越的性能和廣泛的應用領域,在航空、航天、軍事通信、精密測試等多個高端科技領域扮演著不可或缺的角色。本文將詳細介紹HJ61/63系列
    的頭像 發表于 08-04 16:57 ?1401次閱讀
    400Hz中頻<b class='flag-5'>靜</b>變電源簡單介紹

    揭秘LuatOS:實時操作系統RTOS核心庫的關鍵技術剖析!

    為滿足實時控制場景的嚴苛需求,LuatOS核心庫采用搶占式調度策略,確保高優先級任務即時響應。通過靜態內存分配和零拷貝通信機制,系統不僅避免了動態內存碎片問題,還大幅提升了任務間數據交換效率,適用于
    的頭像 發表于 05-21 16:02 ?662次閱讀
    揭秘LuatOS:實時操作系統RTOS核心庫的關鍵技術剖析!

    IEC61508系統中的動態內存使用

    IEC 61508標準強烈推薦使用靜態內存管理方式。在安全應用設計中,我們都在遵循這個建議。
    的頭像 發表于 04-11 15:17 ?1393次閱讀
    IEC61508系統中的<b class='flag-5'>動態內存</b>使用

    如何使用LAX_CODEGEN啟用動態內存分配?

    我目前正在探索NXP_MBDToolbox_LAX。lax_codegen 生成的代碼基于靜態分配。我想管理大型向量,如何使用 LAX_CODEGEN 啟用動態內存分配?
    發表于 04-10 08:09

    反激的PSR與SSR控制技術解析及優劣

    方面,SSR控制由于PSR控制,每種控制技術都有各自的優劣。根據CV控制策略,PSR控制可分為四代,即:Gen1為單一的PFM模式;Gen2為分段PFM模式;Gen3為PFM+PWM混合模式,在動態
    發表于 03-27 13:51

    快速搞懂C語言程序內存分區!

    動態分配的數據等內容。(內存分區圖示)理解這些內存分區的結構和特性,不僅有助于編寫更高效的代碼,還能幫助排查和解決如段錯誤、內存泄漏、棧溢出等常見問題。以下是常見的六
    的頭像 發表于 03-14 17:37 ?1567次閱讀
    快速搞懂C語言程序<b class='flag-5'>內存</b>分區!

    stm32F407平臺上使用freertos,使用pvPortMalloc申請內存,發現內存中的數據總被修改,怎么解決?

    如題,我現在在stm32F407平臺上打開FREERTOS,然后使用pvPortMalloc動態申請內存的時候,發現這塊內存中的數據總是變化,后面改為malloc申請,內存中的數據就符
    發表于 03-07 09:03