日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

靜、動(dòng)態(tài)內(nèi)存的優(yōu)劣比較

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來(lái)源:YXQ ? 2019-08-06 18:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)于靜態(tài)內(nèi)存與動(dòng)態(tài)內(nèi)存

1.1、靜態(tài)和動(dòng)態(tài)內(nèi)存的特點(diǎn)在探討這個(gè)問(wèn)題之前我們先來(lái)對(duì)比下靜態(tài)內(nèi)存和動(dòng)態(tài)內(nèi)存的特點(diǎn):1. 創(chuàng)建的時(shí)間不同: 創(chuàng)建的時(shí)間不同:靜態(tài)分配發(fā)生在程序編譯和連接的時(shí)候。動(dòng)態(tài)分配則發(fā)生在程序調(diào)入和執(zhí)行的時(shí)候。

編譯鏈接過(guò)程中已經(jīng)分配好的

代碼運(yùn)行過(guò)程中使用rt_malloc分配

2. 創(chuàng)建的空間不同:堆都是動(dòng)態(tài)分配的,沒(méi)有靜態(tài)分配的堆。棧有2種分配方式:靜態(tài)分配和動(dòng)態(tài)分配。靜態(tài)分配是編譯器完成的,比如局部變量的分配。動(dòng)態(tài)分配由函數(shù)malloc進(jìn)行分配。不過(guò)棧的動(dòng)態(tài)分配和堆不同,他的動(dòng)態(tài)分配是由編譯器進(jìn)行釋放,無(wú)需我們手工實(shí)現(xiàn)。

1.2、靜態(tài)和動(dòng)態(tài)內(nèi)存的優(yōu)缺點(diǎn)

在了解了靜態(tài)內(nèi)存和動(dòng)態(tài)內(nèi)存不同的特點(diǎn)后可以分析出它們?cè)诓煌姆矫婢哂胁煌膬?yōu)缺點(diǎn):1.靜態(tài)內(nèi)存編譯階段就分配好了,不會(huì)存在分配失敗的情況,除非系統(tǒng)內(nèi)存被分配完了,但是在編譯階段就可以查出。動(dòng)態(tài)內(nèi)存在運(yùn)行中分配,在正常運(yùn)行的情況下可能夠正常分配,在某種環(huán)境下可能分配失敗 ,這樣就對(duì)開(kāi)發(fā)者的代碼水平要求更高,要求開(kāi)發(fā)者需要對(duì)代碼的健壯性有要求。

2.靜態(tài)內(nèi)存由于是編譯階段分配好的,而動(dòng)態(tài)內(nèi)存是由運(yùn)行中分配,這樣動(dòng)態(tài)內(nèi)存可以被高效復(fù)用,當(dāng)某段程序使用完畢后,可以將內(nèi)存交換給內(nèi)存池中等待下次程序的分配,由于這種機(jī)制,開(kāi)發(fā)者可以利用更小的內(nèi)存開(kāi)發(fā)更大型的程序。

3. 動(dòng)態(tài)內(nèi)存由于是動(dòng)態(tài)分配,所以涉及到分配和釋放的問(wèn)題,假設(shè)X程序在分配了ABC3塊內(nèi)存,程序執(zhí)行完畢后AC區(qū)域內(nèi)存被釋放,但是由于開(kāi)發(fā)者的疏忽導(dǎo)致B區(qū)域的內(nèi)存被遺留。而X程序又是會(huì)被反復(fù)調(diào)用的,這樣我們的內(nèi)存區(qū)域由于有沒(méi)有釋放的區(qū)域?qū)е旅看握{(diào)用就會(huì)占用一段區(qū)域,最終系統(tǒng)就沒(méi)有內(nèi)存可以使用。這種情況一般在產(chǎn)品實(shí)際體現(xiàn)為最開(kāi)始的時(shí)候設(shè)備正常工作,但是運(yùn)行了幾個(gè)小時(shí)或者幾天后死機(jī)。這種情況一般被稱作內(nèi)存泄漏(Memory Leak)。4. 在嵌入式RTOS中線程函數(shù)中使用靜態(tài)內(nèi)存,也就是在線程中定義局部變量,會(huì)加大線程??臻g的開(kāi)銷。

裸機(jī)開(kāi)發(fā)和RTOS開(kāi)發(fā)的特點(diǎn)

1. 代碼規(guī)模:裸機(jī)開(kāi)發(fā)的項(xiàng)目一般代碼規(guī)模度都比較小,對(duì)于一般開(kāi)發(fā)者都難于駕馭使用裸機(jī)開(kāi)發(fā)超大規(guī)模項(xiàng)目,人力成本和時(shí)間成本都太高。反而由于RTOS的模塊化特性,更容易開(kāi)發(fā)出代碼規(guī)模大的項(xiàng)目。2. 系統(tǒng)穩(wěn)定性:在機(jī)電,航空,汽車等行業(yè)都是需要高實(shí)時(shí)性、高穩(wěn)定性和高安全性的。對(duì)于RTOS來(lái)說(shuō),系統(tǒng)任務(wù)的劃分調(diào)度都是系統(tǒng)管理,當(dāng)開(kāi)發(fā)者對(duì)其機(jī)制了解不清楚的情況下反而帶來(lái)了部分風(fēng)險(xiǎn)。除此之外RTOS上的內(nèi)存管理也是很大影響系統(tǒng)的,對(duì)于RTOS上一般不會(huì)存在MMU內(nèi)存管理單元,也就代表大部分運(yùn)行RTOS的芯片上都沒(méi)有虛擬地址映射,那么就無(wú)法利用物理地址和虛擬地址的特性進(jìn)行內(nèi)存整理,避免內(nèi)存泄漏。所以說(shuō)在RTOS動(dòng)態(tài)內(nèi)存這塊內(nèi)存有風(fēng)險(xiǎn)。

嵌入式中是否應(yīng)該使用動(dòng)態(tài)內(nèi)存

明白不同內(nèi)存的優(yōu)缺點(diǎn)和裸機(jī)RTOS的特點(diǎn)之后,我們?cè)诨仡^來(lái)分析 “嵌入式中是否應(yīng)該使用動(dòng)態(tài)內(nèi)存?” 這個(gè)問(wèn)題。在實(shí)時(shí)嵌入式系統(tǒng)中,由于系統(tǒng)軟件并不像PC上復(fù)雜,一般都是很簡(jiǎn)單的內(nèi)存使用,所以一般也不使用動(dòng)態(tài)內(nèi)存管理,但是隨著RTOS面臨的任務(wù)越來(lái)越重,尤其是IoTAIoT的到來(lái),讓許多消費(fèi)級(jí)產(chǎn)品運(yùn)行的RTOS的負(fù)擔(dān)越來(lái)越重。在這種情況下繼續(xù)使用靜態(tài)內(nèi)存開(kāi)發(fā)會(huì)極大的限制開(kāi)發(fā)進(jìn)度,整個(gè)開(kāi)發(fā)的靈活性非常低。同時(shí)靜態(tài)的內(nèi)存無(wú)法復(fù)用使用同一片內(nèi)存區(qū)域,相比與動(dòng)態(tài)內(nèi)存在大型項(xiàng)目中一般會(huì)使用更多的內(nèi)存,在內(nèi)存大小不容樂(lè)觀的嵌入式系統(tǒng)是很難接受的。但是針對(duì)一些高穩(wěn)定性和高安全性的項(xiàng)目來(lái)說(shuō),使用動(dòng)態(tài)內(nèi)存就需要好好斟酌下,由于RTOS上基本沒(méi)有MMU的硬件支持或者是系統(tǒng)軟件支持,所以不可避免的系統(tǒng)中會(huì)出現(xiàn)內(nèi)存碎片,從而有可能導(dǎo)致系統(tǒng)異常。

最終說(shuō)了這么多總結(jié)成以下幾點(diǎn):

1. 沒(méi)有使用RTOS的項(xiàng)目:不建議使用動(dòng)態(tài)內(nèi)存,這種項(xiàng)目一般很簡(jiǎn)單,不必使用動(dòng)態(tài)內(nèi)存增大系統(tǒng)開(kāi)銷和復(fù)雜度。

2. 使用RTOS的消費(fèi)級(jí)項(xiàng)目:建議使用動(dòng)態(tài)內(nèi)存,一般這種項(xiàng)目代碼復(fù)雜度比裸機(jī)高,合理使用動(dòng)態(tài)內(nèi)存會(huì)有效降低內(nèi)存的開(kāi)銷。同時(shí)很多Github項(xiàng)目的linux程序都是會(huì)使用內(nèi)存管理,有這套機(jī)制能更加方便的移植代碼。

3. 使用RTOS的軍工、航天、醫(yī)療等高穩(wěn)定性和高安全性項(xiàng)目:建議盡量降低對(duì)動(dòng)態(tài)內(nèi)存的使用與依賴以確保系統(tǒng)的穩(wěn)定性。當(dāng)然也不代表動(dòng)態(tài)內(nèi)存就無(wú)法在這些項(xiàng)目上使用,只是要求系統(tǒng)開(kāi)發(fā)者對(duì)系統(tǒng)內(nèi)存的把控要求更高。

RT-Thread的內(nèi)存管理

RT-Thread 操作系統(tǒng)在內(nèi)存管理上,根據(jù)上層應(yīng)用及系統(tǒng)資源的不同,有針對(duì)性地提供了不同的內(nèi)存分配管理算法??傮w上可分為兩類:內(nèi)存堆管理與內(nèi)存池管理,而內(nèi)存堆管理又根據(jù)具體內(nèi)存設(shè)備劃分為三種情況:

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

小內(nèi)存管理算法是一個(gè)簡(jiǎn)單的內(nèi)存分配算法。初始時(shí),它是一塊大的內(nèi)存。當(dāng)需要分配內(nèi)存塊時(shí),將從這個(gè)大的內(nèi)存塊上分割出相匹配的內(nèi)存塊,然后把分割出來(lái)的空閑內(nèi)存塊還回給堆管理系統(tǒng)中。每個(gè)內(nèi)存塊都包含一個(gè)管理用的數(shù)據(jù)頭,通過(guò)這個(gè)頭把使用塊與空閑塊用雙向鏈表的方式鏈接起來(lái)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:嵌入式中是否應(yīng)該使用動(dòng)態(tài)內(nèi)存?

文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DDR5內(nèi)存斷崖式下跌或引發(fā)踩踏式拋貨?

    內(nèi)存
    芯廣場(chǎng)
    發(fā)布于 :2026年03月30日 15:35:23

    MangoTree Halo Ultra「全新PXI」,標(biāo)配自動(dòng)糾錯(cuò)內(nèi)存#

    內(nèi)存
    芒果樹(shù)數(shù)字
    發(fā)布于 :2026年03月06日 15:59:34

    微型導(dǎo)軌的額定載荷與動(dòng)載荷的關(guān)聯(lián)

    在精密制造領(lǐng)域,微型導(dǎo)軌的額定載荷與動(dòng)載荷是衡量其性能的核心指標(biāo)。
    的頭像 發(fā)表于 03-05 17:58 ?388次閱讀
    微型導(dǎo)軌的額定<b class='flag-5'>靜</b>載荷與動(dòng)載荷的關(guān)聯(lián)

    DRAM動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器DDR2 SDRAM內(nèi)存解決方案

    在半導(dǎo)體存儲(chǔ)領(lǐng)域,DRAM動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器始終是電子設(shè)備性能的核心支撐。作為存儲(chǔ)解決方案的重要組成部分,DDR2 SDRAM內(nèi)存解決方案憑借其高效的數(shù)據(jù)處理能力和穩(wěn)定的運(yùn)行表現(xiàn),廣泛應(yīng)用于通信設(shè)備、工業(yè)控制及嵌入式系統(tǒng)等領(lǐng)域。
    的頭像 發(fā)表于 02-28 16:31 ?717次閱讀

    降壓轉(zhuǎn)換器與LDO的優(yōu)劣對(duì)比

    本文將繼續(xù)介紹降壓轉(zhuǎn)換器的自發(fā)熱效應(yīng)考量、降壓轉(zhuǎn)換器與LDO的優(yōu)劣對(duì)比等。
    的頭像 發(fā)表于 02-25 15:37 ?519次閱讀
    降壓轉(zhuǎn)換器與LDO的<b class='flag-5'>優(yōu)劣</b>對(duì)比

    keil中c語(yǔ)言的動(dòng)態(tài)分配內(nèi)存

    于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。另外,當(dāng)函數(shù)運(yùn)行結(jié)束時(shí),棧區(qū)的空間會(huì)被自動(dòng)釋放。 (3)內(nèi)存映射段。該部分內(nèi)存主要用于文件映射、動(dòng)態(tài)庫(kù)以及匿名映射。 (4)堆區(qū)。
    發(fā)表于 01-21 06:04

    LabView 程序內(nèi)存一直增長(zhǎng),內(nèi)存溢出問(wèn)題?

    LabView 程序內(nèi)存一直增長(zhǎng),求助,有償,比較復(fù)雜的程序,需要非常精通的人幫忙,謝謝
    發(fā)表于 01-12 09:05

    Perforce QAC 2025.4 的新特性

    Perforce QAC 2025.4 提供了一個(gè)新的最小化安裝包,以簡(jiǎn)化 CI/CD 環(huán)境的部署,并包含分析改進(jìn),例如擴(kuò)展了針對(duì) Windows API 的動(dòng)態(tài)內(nèi)存分析。Visual Studio
    的頭像 發(fā)表于 12-30 13:50 ?739次閱讀
    Perforce QAC 2025.4 的新特性

    嵌入式系統(tǒng)中,動(dòng)態(tài)分配內(nèi)存可能發(fā)生的問(wèn)題是什么?

    盡管不像非嵌入式計(jì)算機(jī)那么常見(jiàn),嵌入式系統(tǒng)還是有從堆(heap)中動(dòng)態(tài)分配內(nèi)存的過(guò)程的。 那么嵌入式系統(tǒng)中,動(dòng)態(tài)分配內(nèi)存可能發(fā)生的問(wèn)題是什么? 這 里,我期望應(yīng)試者能提到
    發(fā)表于 12-22 09:42

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

    使用 malloc)變得不太適用,因?yàn)?b class='flag-5'>動(dòng)態(tài)內(nèi)存分配可能導(dǎo)致內(nèi)存碎片,造成內(nèi)存不足或系統(tǒng)崩潰。 PC:現(xiàn)代PC的內(nèi)存資源相對(duì)豐富,RAM通常在GB級(jí)別。在這種環(huán)境下,malloc 可以靈
    發(fā)表于 11-20 06:55

    求助,關(guān)于cubemx + nano 4.1.1 + STM32F405時(shí)鐘的問(wèn)題求解

    動(dòng)態(tài)內(nèi)存打開(kāi) 然后發(fā)現(xiàn)打印延遲正常了,就是一秒鐘打印一次,這也能影響到?是bug還是沒(méi)適配好,但是shell還是不能用
    發(fā)表于 09-16 06:05

    400Hz中頻變電源簡(jiǎn)單介紹

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

    揭秘LuatOS:實(shí)時(shí)操作系統(tǒng)RTOS核心庫(kù)的關(guān)鍵技術(shù)剖析!

    為滿足實(shí)時(shí)控制場(chǎng)景的嚴(yán)苛需求,LuatOS核心庫(kù)采用搶占式調(diào)度策略,確保高優(yōu)先級(jí)任務(wù)即時(shí)響應(yīng)。通過(guò)靜態(tài)內(nèi)存分配和零拷貝通信機(jī)制,系統(tǒng)不僅避免了動(dòng)態(tài)內(nèi)存碎片問(wèn)題,還大幅提升了任務(wù)間數(shù)據(jù)交換效率,適用于
    的頭像 發(fā)表于 05-21 16:02 ?809次閱讀
    揭秘LuatOS:實(shí)時(shí)操作系統(tǒng)RTOS核心庫(kù)的關(guān)鍵技術(shù)剖析!

    HarmonyOS優(yōu)化應(yīng)用內(nèi)存占用問(wèn)題性能優(yōu)化一

    一、 概述 用戶功能的不斷增強(qiáng),應(yīng)用越來(lái)越復(fù)雜,占用的內(nèi)存也在不斷膨脹,而內(nèi)存作為系統(tǒng)的稀缺資源比較有限,當(dāng)應(yīng)用程序占用過(guò)多內(nèi)存時(shí),系統(tǒng)可能會(huì)頻繁進(jìn)行
    發(fā)表于 05-21 11:27
    南宁市| 陵川县| 东兰县| 霍州市| 浪卡子县| 石首市| 汶川县| 汉寿县| 宝应县| 奉化市| 福贡县| 邵武市| 新建县| 平顺县| 吴旗县| 饶河县| 龙南县| 稻城县| 锡林浩特市| 贵溪市| 兴文县| 宜宾市| 黔东| 仪征市| 岳阳县| 栾川县| 夹江县| 峡江县| 台北县| 监利县| 博野县| 防城港市| 通许县| 兴海县| 龙井市| 田东县| 墨竹工卡县| 手机| 深水埗区| 宁夏| 湘潭市|