3HAC028357001一次分配多次使用的内存分配方案 在嵌入式系统设计中,经常有一些类似于内存数据库的应用。这些应用的特点是在内存中管理一些树,比如以太网交换机中的MAC地址表、VLAN表等,或者路由器中的路由表。
这些树是由许多相同尺寸的节点组成的。这样,就可以每次分配一个大的缓冲池,比如包含多个内存单元的数组,3HAC028357001每个内存单元用于1个节点。我们用一个空闲链表来管理该数组中的空闲内存单元。每次程序需要分配内存以创建1个新的节点时,就从空闲链表中取1个单元给调用者。程序删除节点并释放内存时,将释放的内存单元返还给空闲链表。
如果链表中的空闲内存单元取空了,就再次调用malloc从系统内存中分配一个大的内存块作为新的缓冲池。 采用这样一种方案主要有如下优点:
①减少了malloc/free的调用次数,从而降低了风险,减少了碎片;
②因为从缓冲池中取一个内存单元是时间确定的(当然,如果缓冲池耗尽从而需要重新调用malloc分配除外),因此它可以用于严格时限的场合从而保证实时性;
③它给用户以自由来添加一些用于内存分配和释放的调试函数以及一些统计功能,更好地监测系统中内存的使用情况。这种方案必然涉及到一个缓冲池的结构。一般缓冲池的结构由以下几部分组成:单元尺寸、块尺寸(或者单元数目)、缓冲池指针、空闲链表、用于统计和调试的参数等。对缓冲池的操作包括创建缓冲池、释放缓冲池、从缓冲池中分配1个内存单元、释放内存单元回缓冲池等。下面举2个例子说明一下该方案的具体使用情况。
3HAC028357001交换机驱动程序中内存分配 在以In的交换芯片为基础的交换机方案中,因为采用的是软件地址学习的方式,需要在内存中维护许多数据,如MAC地址表的软拷贝、VLAN表、静态单播地址表、组播地址表等。这些表都是由一些树组成,每个树由一些固定尺寸的节点组成。一般每个节点几十个字节,每棵树的节点数是可增长的,少则几十,zui多可到16K个节点。
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