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

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

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

Buddy算法的μC/OSII高可靠內(nèi)存管理方案

電子設(shè)計 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-08-29 09:28 ? 次閱讀

1 內(nèi)存管理概述

內(nèi)存管理是操作系統(tǒng)中心任務(wù)之一,其主要任務(wù)是組織內(nèi)存以容納內(nèi)核和待執(zhí)行程序,跟蹤當(dāng)前內(nèi)存的使用情況,在需要時為進(jìn)程分配內(nèi)存,使用完畢后釋放并回收內(nèi)存。目前嵌入式系統(tǒng)中常用的內(nèi)存管理策略主要有兩種--靜態(tài)內(nèi)存分配和動態(tài)內(nèi)存分配。

靜態(tài)內(nèi)存分配: 編譯或鏈接時將所需內(nèi)存分配好,程序運行起來后所分配的內(nèi)存不釋放。對于實時性和可靠性要求極高的系統(tǒng),不允許延遲或者分配失效,必須采用靜態(tài)內(nèi)存分配的方式。

動態(tài)內(nèi)存分配: 根據(jù)程序執(zhí)行過程中所需內(nèi)存的大小而動態(tài)分配內(nèi)存的策略。此方案按需分配內(nèi)存,避免了靜態(tài)分配中的內(nèi)存浪費,靈活性比較強,給程序的實現(xiàn)帶來了很大方便。缺點是容易造成內(nèi)存碎片,且容易造成程序響應(yīng)不及時等問題。

綜上所述,靜態(tài)內(nèi)存分配和動態(tài)內(nèi)存分配各有優(yōu)點,出于嵌入式系統(tǒng)可靠性、實時性及成本、功耗的考慮,如何在兩種方案中作出平衡的選擇是令嵌入式操作系統(tǒng)設(shè)計者頭疼的事。一般的嵌入式操作系統(tǒng)都是兩種方案的高效結(jié)合,μC/OSII也不例外。除此之外,嵌入式操作系統(tǒng)對內(nèi)存的分配還有以下幾點要求:

① 可靠性。內(nèi)存分配的請求必須得到滿足,如果分配失敗可能會帶來災(zāi)難性的后果。比如,航天飛機的嵌入式操作系統(tǒng)若發(fā)生內(nèi)存分配失效,損失是不可估量的。

② 快速性。嵌入式系統(tǒng)對實時性的保證,要求簡單、快速地分配內(nèi)存。

③ 高效性。嵌入式系統(tǒng)中內(nèi)存是一種有限、昂貴的資源,內(nèi)存分配要盡可能地減少浪費。

μC/OSII作為一種典型的嵌入式操作系統(tǒng),其內(nèi)存管理同樣要滿足以上3點要求,下面簡單介紹μC/OSII的內(nèi)存管理策略,并分析其不足之處。

2 μC/OSII動態(tài)內(nèi)存管理方案及不足

2.1 μC/OSII內(nèi)存管理方案簡介

μC/OSII內(nèi)存管理模塊主要由一個數(shù)據(jù)結(jié)構(gòu)體和5個函數(shù)組成:

◆ 內(nèi)存控制塊數(shù)據(jù)結(jié)構(gòu)OS_MEM;

◆ 內(nèi)存分區(qū)創(chuàng)建函數(shù)OSMemCreate(void *addr, INT32U nblks, INT32U blksize, INT8U *err);

◆ 內(nèi)存塊分配函數(shù)OSMemGet(OS_MEM *pmem , INT8U *err);

◆ 內(nèi)存塊釋放函數(shù)OSMemPut(OS_MEM *pmem , void *pblk);

◆ 內(nèi)存分區(qū)狀態(tài)查詢函數(shù)OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *p_mem_data);

◆ 內(nèi)存控制塊鏈表初始化函數(shù)OSMemInit(void)。

μC/OSII用一個內(nèi)存控制塊(OS_MEM)來管理內(nèi)存分區(qū),主要通過以下4步來管理:

① 內(nèi)存控制塊鏈表初始化函數(shù)OSMemInit()負(fù)責(zé)創(chuàng)建空內(nèi)存控制塊結(jié)構(gòu)的鏈表,鏈表長度由內(nèi)核OS_CFG.H文件中定義的OS_MAX_MEM_PART宏確定。

② 內(nèi)存塊創(chuàng)建函數(shù)OSMemCreate()先從空內(nèi)存控制塊結(jié)構(gòu)鏈表上獲取一個空的內(nèi)存控制根塊結(jié)構(gòu),根據(jù)用戶需要內(nèi)存塊的大小來創(chuàng)建分區(qū)。一個分區(qū)中含有相同大小的內(nèi)存塊,各內(nèi)存塊也是通過鏈表鏈接起來,而不同分區(qū)中的內(nèi)存塊大小一般不同,如圖1所示的Partition # 1和Partition # 2中內(nèi)存塊的大小是不同的。

圖1 μC/OSII通過內(nèi)存控制塊管理內(nèi)存

③ 內(nèi)存塊分配函數(shù)OSMemGet()通過從內(nèi)存控制塊鏈表中找到能夠滿足自己內(nèi)存塊需要的內(nèi)存控制塊,然后從這個內(nèi)存控制塊指向的分區(qū)鏈表首部得到自己需要的內(nèi)存塊。

④ 內(nèi)存塊釋放函數(shù)OSMemPut()負(fù)責(zé)回收內(nèi)存塊。當(dāng)應(yīng)用程序不再使用某一個內(nèi)存塊時,必須及時把它釋放,并放回到相應(yīng)的內(nèi)存分區(qū)中。

2.2 μC/OSII內(nèi)存管理方案的不足之處

如前所述,μC/OSII的內(nèi)存管理方案簡短精煉,僅百余行代碼,5個函數(shù)就能勝任。然而考慮到第1節(jié)提到的嵌入式系統(tǒng)對內(nèi)存管理策略的3個要求,μC/OSII的內(nèi)存管理策略存在以下不足之處:

① 原μC/OSII內(nèi)存管理方案可靠性不高。因為原方案中各內(nèi)存分區(qū)之間是孤立的,沒有聯(lián)系。一個內(nèi)存分區(qū)上的內(nèi)存塊用完時,不能利用其他分區(qū)上的內(nèi)存塊,而只是簡單地報錯,從而使系統(tǒng)可靠性大大降低。在內(nèi)存塊大小及需求量不確定的場合,如果經(jīng)常發(fā)生內(nèi)存申請得不到滿足的情況,是嵌入式系統(tǒng)所不能容忍的。

② 原μC/OSII內(nèi)存管理方案中內(nèi)存分配不夠靈活。舉個例子來說,一個應(yīng)用程序需要大小為1 KB、512 B、256 B三種內(nèi)存塊,原方案有兩種解決方案,一是創(chuàng)建一個內(nèi)存塊大小為1 KB的內(nèi)存分區(qū),內(nèi)存塊數(shù)目至少為3個;二是創(chuàng)建3個內(nèi)存分區(qū),內(nèi)存塊大小分別為1 KB、512 B、256 B。方案一創(chuàng)建了較少分區(qū),性能有保證,但造成內(nèi)存資源的浪費;方案二雖然沒有浪費內(nèi)存,但卻調(diào)用3次OS_MemCreate()函數(shù),效率較低。

3 Buddy算法簡介

Buddy算法是內(nèi)存管理的經(jīng)典算法,目的是為了解決內(nèi)存的外碎片問題,以及提高內(nèi)存管理的可靠性。Buddy算法在Linux內(nèi)核內(nèi)存管理模塊得到成功的應(yīng)用。

如圖2 所示,Buddy算法將所有空閑頁框分組為10個塊鏈表,每個塊鏈表的每個塊元素分別包含1、2、4、8、16、32、64、128、256、512個連續(xù)的頁框,每個塊的第一個頁框的物理地址是該塊大小的整數(shù)倍。例如,大小為4個頁框的塊,其起始地址是4×212(一個頁框的大小為4K,4個頁框的大小為4×4K,1K=1024=210,4K=212)的倍數(shù)。

圖2 Buddy算法簡介

假設(shè)要請求一個128個頁框的塊,算法先檢查128個頁框的鏈表是否有空閑塊,如果沒有則查256個頁框的鏈表,有則將256個頁框的塊分裂為兩份,一份使用,一份插入128個頁框的鏈表。如果還沒有,就查512個頁框的鏈表,有的話就分裂為128、128、256,一個128使用,剩余兩個插入對應(yīng)鏈表。如果在512還沒查到,則返回出錯信號。用這種方法來分配頁框,由Linux內(nèi)核的穩(wěn)定性可知其可靠性。

回收過程相反,內(nèi)核試圖把大小為b的空閑伙伴合并為一個大小為2b的單獨塊,滿足以下條件的兩個塊稱為伙伴: 兩個塊具有相同的大小,記做b;它們的物理地址是連續(xù)的;第一個塊的第一個頁框的物理地址是2b×212的倍數(shù)。該算法迭代,如果成功合并所釋放的塊,會試圖合并2b的塊來形成更大的塊。在本方案中,只要滿足前兩個條件就足夠了。

4 μC/OSII內(nèi)存管理改進(jìn)方案

4.1 改進(jìn)方案思路

① 修改內(nèi)存控制塊的結(jié)構(gòu)OS_MEM,去掉OS_MemAddr、OS_MemNFree成員,添加一個內(nèi)存塊鏈表尾指針OSMemBlkTail,所以O(shè)S_MEM結(jié)構(gòu)還含有4個成員:OSMemFreeList、OSMemBlkSize、OSMemNBlks、OSMemBlkTail。改進(jìn)后的內(nèi)存控制塊結(jié)構(gòu)如圖3所示。

圖3 改進(jìn)方案中的內(nèi)存管理組織結(jié)構(gòu)

② 首先初始化一個內(nèi)存控制塊結(jié)構(gòu)數(shù)組struct OS_MEM [],其下標(biāo)是內(nèi)存塊規(guī)模的對數(shù),引入結(jié)構(gòu)數(shù)組的目的是在申請內(nèi)存塊時能夠快速定位,起到索引的作用。而內(nèi)存塊的實際大小為內(nèi)存塊規(guī)模與內(nèi)存塊粒度的乘積。然后將內(nèi)存塊按內(nèi)存塊規(guī)模從小到大掛到不同結(jié)構(gòu)數(shù)組指向的鏈表上,并且保證初始化后同一鏈表上的內(nèi)存塊地址不連續(xù)。在申請內(nèi)存塊通過內(nèi)存控制結(jié)構(gòu)數(shù)組的下標(biāo)快速定位到內(nèi)存塊鏈表,查看內(nèi)存塊控制結(jié)構(gòu)字段中OSMemFreeList成員指針是否為空。若不為空,則從表頭取一個內(nèi)存塊,并返回該內(nèi)存塊的地址;否則向后搜索數(shù)組,看是否有空閑內(nèi)存塊。若有則將該內(nèi)存塊一分為二,低地址的那塊分配給申請者,高地址的那塊則掛到前一個結(jié)構(gòu)數(shù)組的表頭,以備其他申請者申請。同樣,釋放內(nèi)存塊時也是通過結(jié)構(gòu)數(shù)組快速定位到具體結(jié)構(gòu)數(shù)組,然后檢查該結(jié)構(gòu)數(shù)組內(nèi)存塊鏈表中是否有和要釋放的內(nèi)存塊地址連續(xù)的內(nèi)存塊。若有,則合并兩內(nèi)存塊并掛到后一個結(jié)構(gòu)數(shù)組,并檢查地址是否連續(xù),直至沒有為止;若無,則將該內(nèi)存塊掛到該內(nèi)存塊鏈表的表尾。改進(jìn)后的內(nèi)存管理組織結(jié)構(gòu)如圖3所示。

4.2 具體改進(jìn)措施

① 改進(jìn)函數(shù)OS_MemInit(void)。此函數(shù)原來是初始化空閑內(nèi)存控制塊鏈表,改進(jìn)后此函數(shù)用于初始化OS_MEM結(jié)構(gòu)數(shù)組即可,根據(jù)OS_CFG.H文件中宏OS_MAX_MEM_PART來決定數(shù)組元素個數(shù)。

② 改進(jìn)函數(shù)OSMemCreate(void *addr, INT32U nblks, INT32U granularity , INT8U *err)。根據(jù)Buddy的規(guī)則橫向創(chuàng)建內(nèi)存塊,每創(chuàng)建一個內(nèi)存塊就鏈到相應(yīng)的結(jié)構(gòu)體數(shù)組上,如圖3的Create Direction所示,這樣能保證每個結(jié)構(gòu)數(shù)組上的相同大小的內(nèi)存塊地址不連續(xù),從而避免了所有內(nèi)存塊合并的現(xiàn)象。創(chuàng)建出來的內(nèi)存塊組織結(jié)構(gòu)如圖3所示。

③ 改進(jìn)函數(shù)OSMemGet(INT32U size, INT32U granularity, INT8U *err)。因為結(jié)構(gòu)體數(shù)組名是在OS_CFG.H文件中宏定義的,所以本函數(shù)的參數(shù)只包括需求的內(nèi)存塊大小及內(nèi)存塊粒度即可。用內(nèi)存塊大小除以內(nèi)存塊粒度,首先判斷所得值是否為2的冪次,若是直接取對數(shù)即得結(jié)構(gòu)數(shù)組的下標(biāo);若不是則取對數(shù)后向上取整。得到指定數(shù)組元素后若有內(nèi)存塊,取下一內(nèi)存塊然后指針下移,若無內(nèi)存塊則繼續(xù)搜索下一個結(jié)構(gòu)數(shù)組。若該數(shù)組有空閑內(nèi)存塊則取將其平分為兩塊,一塊分配出去,一塊掛到前面結(jié)構(gòu)數(shù)組鏈表。這樣一直搜索到最后一個結(jié)構(gòu)數(shù)組,若一直無內(nèi)存塊,則報錯返回。

④ 改進(jìn)函數(shù)OSMemPut(INT32U size, INT32U granularity)。如何取得結(jié)構(gòu)數(shù)組下標(biāo)值同OSMemGet()函數(shù)。在找到所要回收的結(jié)構(gòu)數(shù)組后,判斷該數(shù)組內(nèi)存塊鏈表上是否有與要回收的內(nèi)存塊連續(xù)的地址。若有合并且掛到下一內(nèi)存塊結(jié)構(gòu)數(shù)組內(nèi)存塊鏈表,這樣一直到最后一個結(jié)構(gòu)數(shù)組,目的是為了保證有更大的內(nèi)存塊可滿足應(yīng)用程序的申請,提高了內(nèi)存管理的可靠性。

在改進(jìn)以上函數(shù)的基礎(chǔ)上,還可以在申請內(nèi)存塊之前有選擇地使用OSMemQuery()查詢內(nèi)存中是否有滿足需要的內(nèi)存塊。如果沒有則作好相應(yīng)的規(guī)避措施,進(jìn)一步提高內(nèi)存管理的可靠性,使系統(tǒng)更穩(wěn)定。

5 實驗結(jié)果及性能分析

針對改進(jìn)前后μC/OSII內(nèi)存管理策略的特點,設(shè)計一組具有代表性的測試用例來分析μC/OSII系統(tǒng)在改進(jìn)前后內(nèi)存管理的可靠性和靈活性。實驗環(huán)境為ARM Develop Suit V1. 2及三星公司S3C2440微控制器,由于S3C2440片內(nèi)包含MMU模塊,所以需要將協(xié)處理器CP15的C1寄存器0位置0,以禁用MMU功能。

假設(shè)兩種方案內(nèi)存初始化都創(chuàng)建了5個分區(qū),每個分區(qū)中所含內(nèi)存塊為10個,且這5個內(nèi)存分區(qū)中的內(nèi)存塊大小依次為16 B、32 B、64 B、128 B、256 B。原方案創(chuàng)建分區(qū)時要調(diào)用5次OSMemCreate()函數(shù),而改進(jìn)方案只需調(diào)用一次。表1是申請內(nèi)存塊大小與兩種方案可以滿足的次數(shù)之間的關(guān)系。

表1 申請內(nèi)存塊大小與兩種方案可以滿足的次數(shù)比較

由表1的數(shù)據(jù)及圖4的對比曲線可看出,改進(jìn)方案與原方案在可用內(nèi)存完全相同的情況下,使內(nèi)存的利用率大大提高。因為可靠性與可滿足次數(shù)正相關(guān),而可滿足次數(shù)與曲線與坐標(biāo)軸圍成的面積成正比,所以該面積與可靠性正相關(guān)。新方案曲線所圍圖形面積為12960, 而原方案曲線所圍成的圖形面積為2400。所以新方案的可靠性將比原來方案提高大約4倍,而且申請內(nèi)存塊越小,可滿足次數(shù)越多,提高了內(nèi)存分配的靈活性。

圖4 兩種方案可滿足次數(shù)對比曲線

6 結(jié)語

本文的創(chuàng)新之處在于針對μC/OSII在內(nèi)存管理可靠性不高、內(nèi)存塊分配不夠靈活的特點,借鑒Buddy算法思想,對其進(jìn)行改進(jìn),形成了一種基于Buddy算法思想、高可靠性的內(nèi)存管理策略。實驗表明,新方案一次創(chuàng)建內(nèi)存區(qū),即可滿足內(nèi)存塊大小需求不均勻的場合,既提高內(nèi)存分配的靈活性,避免了大量內(nèi)碎片的產(chǎn)生,又增強了內(nèi)存分配的可靠性。因此,新方案在可靠性要求高的嵌入式系統(tǒng)中可以得到更好的應(yīng)用。


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

    關(guān)注

    0

    文章

    59

    瀏覽量

    28001
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    91

    瀏覽量

    18291
  • Buddy
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7447
收藏 人收藏

    評論

    相關(guān)推薦

    Linux下如何管理虛擬內(nèi)存 使用虛擬內(nèi)存時的常見問題

    在Linux系統(tǒng)中,虛擬內(nèi)存管理是操作系統(tǒng)內(nèi)核的一個重要功能,負(fù)責(zé)管理物理內(nèi)存和磁盤上的交換空間。以下是對Linux下如何管理虛擬
    的頭像 發(fā)表于 12-04 09:19 ?392次閱讀

    Linux內(nèi)存泄露案例分析和內(nèi)存管理分享

    作者:京東科技 李遵舉 一、問題 近期我們運維同事接到線上LB(負(fù)載均衡)服務(wù)內(nèi)存報警,運維同事反饋說LB集群有部分機器的內(nèi)存使用率超過80%,有的甚至超過90%,而且內(nèi)存使用率還再不停的增長。接到
    的頭像 發(fā)表于 10-24 16:14 ?738次閱讀
    Linux<b class='flag-5'>內(nèi)存</b>泄露案例分析和<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>分享

    Linux內(nèi)存管理中HVO的實現(xiàn)原理

    代碼閱讀工具:vim+ctags+cscope本文主要介紹內(nèi)存管理中的HVO(HugeTLB Vmemmap Optimization)特性,通過HVO可以節(jié)省管理HugeTLB 頁面元數(shù)據(jù)
    的頭像 發(fā)表于 10-22 16:51 ?250次閱讀
    Linux<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>中HVO的實現(xiàn)原理

    Windows管理內(nèi)存的三種主要方式

    Windows操作系統(tǒng)提供了多種方式來管理內(nèi)存,以確保系統(tǒng)資源的有效利用和性能的優(yōu)化。以下是關(guān)于Windows管理內(nèi)存的三種主要方式的詳細(xì)闡述,包括堆
    的頭像 發(fā)表于 10-12 17:09 ?790次閱讀

    內(nèi)存管理的硬件結(jié)構(gòu)

    常見的內(nèi)存分配函數(shù)有malloc,mmap等,但大家有沒有想過,這些函數(shù)在內(nèi)核中是怎么實現(xiàn)的?換句話說,Linux內(nèi)核的內(nèi)存管理是怎么實現(xiàn)的?
    的頭像 發(fā)表于 09-04 14:28 ?316次閱讀
    <b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>的硬件結(jié)構(gòu)

    可靠繼電器的設(shè)計與制造

    可靠繼電器作為一種關(guān)鍵電子控制器件,在電力保護(hù)、自動化控制、通信等領(lǐng)域中發(fā)揮著至關(guān)重要的作用。其設(shè)計與制造過程必須嚴(yán)格遵循高標(biāo)準(zhǔn),以確保在復(fù)雜和惡劣的環(huán)境中仍能穩(wěn)定、可靠地運行。本文將從設(shè)計原理、制造工藝以及
    的頭像 發(fā)表于 06-24 11:39 ?570次閱讀

    你知道嗎? 51單片機也有動態(tài)內(nèi)存分配

    一、簡述其實在51單片機中也可以使用動態(tài)內(nèi)存,動態(tài)內(nèi)存其實就是劃出一塊內(nèi)存區(qū)域,將這塊內(nèi)存進(jìn)行管理,稱為
    的頭像 發(fā)表于 04-26 08:10 ?1543次閱讀
    你知道嗎? 51單片機也有動態(tài)<b class='flag-5'>內(nèi)存</b>分配

    穩(wěn)定可靠的網(wǎng)絡(luò)連接解決方案

    工業(yè)路由器是專為工業(yè)應(yīng)用設(shè)計的網(wǎng)絡(luò)設(shè)備,具備高速數(shù)據(jù)傳輸、智能管理等特點,廣泛應(yīng)用于制造業(yè)、能源、物流等領(lǐng)域。其穩(wěn)定性、高效數(shù)據(jù)傳輸、智能管理、兼容性強和易于維護(hù)等優(yōu)勢使其成為穩(wěn)定可靠
    的頭像 發(fā)表于 04-07 18:20 ?1129次閱讀

    C語言內(nèi)存泄漏問題原理

    內(nèi)存泄漏問題只有在使用堆內(nèi)存的時候才會出現(xiàn),棧內(nèi)存不存在內(nèi)存泄漏問題,因為棧內(nèi)存會自動分配和釋放。C
    發(fā)表于 03-19 11:38 ?527次閱讀
    <b class='flag-5'>C</b>語言<b class='flag-5'>內(nèi)存</b>泄漏問題原理

    美光科技開始量產(chǎn)HBM3E帶寬內(nèi)存解決方案

    美光科技股份有限公司(Micron Technology, Inc.)是全球內(nèi)存與存儲解決方案的領(lǐng)先供應(yīng)商,近日宣布已經(jīng)開始量產(chǎn)其HBM3E帶寬內(nèi)存解決
    的頭像 發(fā)表于 03-05 09:16 ?881次閱讀

    C語言中的動態(tài)內(nèi)存管理講解

    本章將講解 C 中的動態(tài)內(nèi)存管理。C 語言為內(nèi)存的分配和管理提供了幾個函數(shù)。這些函數(shù)可以在
    的頭像 發(fā)表于 02-23 14:03 ?397次閱讀
    <b class='flag-5'>C</b>語言中的動態(tài)<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>講解

    Linux內(nèi)存管理之CPU本地頁幀緩存

    在前一節(jié)中,我們學(xué)習(xí)了buddy伙伴關(guān)系系統(tǒng),它適用于申請連續(xù)的大塊物理內(nèi)存;而有些時候,經(jīng)常需要申請和釋放單個頁幀。
    的頭像 發(fā)表于 02-20 09:23 ?500次閱讀

    蘋果 TYPE C接口 USB-C雙向充電圖解

    等各種功能,支持USB-C雙向充電,并進(jìn)一步改善充電和供電的效率,為用戶提供更便捷和可靠的移動電源解決方案。 IP5316/5326 可以通過TYPE C接口識別是輸入還是輸出功能,自
    發(fā)表于 02-03 12:00

    桂花網(wǎng)藍(lán)牙溫度監(jiān)測方案:實現(xiàn)穩(wěn)定可靠的無線溫度監(jiān)測

    了解溫度數(shù)據(jù)的規(guī)律和趨勢,為決策提供有力支持。 節(jié)能環(huán)保:桂花網(wǎng)的藍(lán)牙網(wǎng)關(guān)采用低功耗設(shè)計,有效降低能源消耗,符合綠色環(huán)保理念。 安全可靠:桂花網(wǎng)的藍(lán)牙網(wǎng)關(guān)具備強大的安全保障機制,采用加密算法對數(shù)據(jù)進(jìn)行
    發(fā)表于 01-30 14:25

    Linux內(nèi)核內(nèi)存管理架構(gòu)解析

    內(nèi)存管理子系統(tǒng)可能是linux內(nèi)核中最為復(fù)雜的一個子系統(tǒng),其支持的功能需求眾多,如頁面映射、頁面分配、頁面回收、頁面交換、冷熱頁面、緊急頁面、頁面碎片管理、頁面緩存、頁面統(tǒng)計等,而且對性能也有很高
    的頭像 發(fā)表于 01-04 09:24 ?667次閱讀
    Linux內(nèi)核<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>架構(gòu)解析