3HAC028357001一次分配多次使用的內(nèi)存分配方案 在嵌入式系統(tǒng)設(shè)計中,經(jīng)常有一些類似于內(nèi)存數(shù)據(jù)庫的應(yīng)用。這些應(yīng)用的特點是在內(nèi)存中管理一些樹,比如以太網(wǎng)交換機中的MAC地址表、VLAN表等,或者路由器中的路由表。
這些樹是由許多相同尺寸的節(jié)點組成的。這樣,就可以每次分配一個大的緩沖池,比如包含多個內(nèi)存單元的數(shù)組,3HAC028357001每個內(nèi)存單元用于1個節(jié)點。我們用一個空閑鏈表來管理該數(shù)組中的空閑內(nèi)存單元。每次程序需要分配內(nèi)存以創(chuàng)建1個新的節(jié)點時,就從空閑鏈表中取1個單元給調(diào)用者。程序刪除節(jié)點并釋放內(nèi)存時,將釋放的內(nèi)存單元返還給空閑鏈表。
如果鏈表中的空閑內(nèi)存單元取空了,就再次調(diào)用malloc從系統(tǒng)內(nèi)存中分配一個大的內(nèi)存塊作為新的緩沖池。 采用這樣一種方案主要有如下優(yōu)點:
①減少了malloc/free的調(diào)用次數(shù),從而降低了風(fēng)險,減少了碎片;
②因為從緩沖池中取一個內(nèi)存單元是時間確定的(當(dāng)然,如果緩沖池耗盡從而需要重新調(diào)用malloc分配除外),因此它可以用于嚴(yán)格時限的場合從而保證實時性;
③它給用戶以自由來添加一些用于內(nèi)存分配和釋放的調(diào)試函數(shù)以及一些統(tǒng)計功能,更好地監(jiān)測系統(tǒng)中內(nèi)存的使用情況。這種方案必然涉及到一個緩沖池的結(jié)構(gòu)。一般緩沖池的結(jié)構(gòu)由以下幾部分組成:單元尺寸、塊尺寸(或者單元數(shù)目)、緩沖池指針、空閑鏈表、用于統(tǒng)計和調(diào)試的參數(shù)等。對緩沖池的操作包括創(chuàng)建緩沖池、釋放緩沖池、從緩沖池中分配1個內(nèi)存單元、釋放內(nèi)存單元回緩沖池等。下面舉2個例子說明一下該方案的具體使用情況。
3HAC028357001交換機驅(qū)動程序中內(nèi)存分配 在以In的交換芯片為基礎(chǔ)的交換機方案中,因為采用的是軟件地址學(xué)習(xí)的方式,需要在內(nèi)存中維護許多數(shù)據(jù),如MAC地址表的軟拷貝、VLAN表、靜態(tài)單播地址表、組播地址表等。這些表都是由一些樹組成,每個樹由一些固定尺寸的節(jié)點組成。一般每個節(jié)點幾十個字節(jié),每棵樹的節(jié)點數(shù)是可增長的,少則幾十,zui多可到16K個節(jié)點。
EITO DENSHI POWER REGULATOR 9004-21881B-03 LOT OF 3
ALLEN-BRADLEY PLC FLEX I/O 1794-1B16, 1794-ASB,11794-0B16, 2711P-RSACDIN
SAMSUNG 400W AC SERVO MOTOR CSMT-02BB1ANT3 WORKING
MYCOM PF596-AC 5-PHASE 5-LEAD STEPPING MOTOR
YASKAWA AC SERVO MOTOR,SGM-A5A314 WORKING
SAMSUNG AC SERVO MOTOR CSMZ-01BA1ANM3 TESTED WORKING
TAMAGAWA AC SERVO MOTOR TBL-L SERIES 4503N1820E100
YASKAWA SERVOPACK DRIVER SGDM-A3ADA WORKING
WATLOW TEMPERATURE CONTROLLER 988 LF 988L-20CE-AAES
SMC CY3R15-150 CYL, RODLESS, MAG. COUPLED,FUII MODEL CY3R15-150-M9B
VEXTA ORIENTAL 2-PHASE STEPPING MOTOR PH264M-31B LOT OF 2
NISSEI GTR INDUCTION GEARED MOTOR GFMN-12
TAMAGAWA TBL-I SERIES TS 4507N1033E200 AC SERVO MOTOR 200W 200V
THK BEARING RA18013UUC0 NNB
YASKAWA AC SERVO MOTOR,SGM-A5A312 WORKING, LOT OF 2
PANASONIC AC SERVO MOTOR MSMA5AZP1A
TAMAGAWA ENCODER TS5667N322A42771
NEMIC LAMBDA POWER SUPPLY PS-14-36,36V,6.7A
CREDENCE DMA-W CONTROLLER WESSELS/ WOLEVER BOARD 678-1553
ALLEN-BRADLEY OEMAX 8 CHANNELS DIGITAL INPUT NXIO-XP8B NEW LOT OF 4
SANKYO AC SERVO MOTOR MC500NS 302SNN02 50W
PICMG 19 SLOTS BACK PLANE BOARD PCI-19S WORKING
ALPHASEM AG PC/AT INTERFACE BOARD AS257-0-02 REV:C
SYSTEMBASE MULTI-8 VER 5.1 BOARD