Typical Memory Layout - PowerPoint PPT Presentation


PPT – Typical Memory Layout PowerPoint presentation | free to download - id: 6fe0e1-YTYyN


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation

Typical Memory Layout


Check your BSP documentation. To add off-board memory: void memAddToPool (pPool, ... System Memory Pool Used for dynamic memory allocation in programs: malloc( ). – PowerPoint PPT presentation

Number of Views:2
Avg rating:3.0/5.0
Slides: 14
Provided by: pier2164
Learn more at: http://ebook.pldworld.com


Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Typical Memory Layout

Typical Memory Layout
sysPhysMemTop() sysMemTop() FREE_RAM_ADRS
Target Server Memory Pool
  • A pool of memory on the target reserved for use
    by the Tornado tools
  • Dynamic loading of object modules.
  • Passing string arguments to tasks spawned on
  • Creation of variables from WindSh.
  • The target server manages the pool, keeping
    overhead such as block lists on the host.
  • The initial size of the target server memory pool
    is configured by WDB_POOL_SIZE. The default is
    1/16 of sysMemTop( ) - FREE_RAM_ADRS.
  • Additional memory is silently allocated from the
    system memory pool if needed.

System Memory Pool
  • Used for dynamic memory allocation in programs
  • malloc( ).
  • Creating tasks (stack and TCB).
  • VxWorks memory requests.
  • Initialized at system start-up.
  • Can modify USER_RESERVED_MEM to reserve memory
    for application-specific use.
  • May need to modify sysPhysMemTop( ) (or just
    LOCAL_MEM_SIZE) when adding memory to your board.
    Check your BSP documentation.
  • To add off-board memory
  • void memAddToPool (pPool, poolSize)
  • pPool must be the local address of the memory.

Allocating/Releasing Memory
  • To dynamically allocate memory
  • void malloc (nBytes)
  • Returns a pointer to the newly allocated memory
    or NULL on error.
  • Uses first-fit algorithm.
  • Free memory is stored in a linked list.
  • Some (small) overhead for each malloc( ).
  • To release allocated memory
  • void free (ptr)
  • Adjacent blocks are coalesced.

Debugging Options
  • Default malloc( ) debugging If request too
    large, log an error message.
  • Default free( ) debugging
  • Check block for consistency.
  • If corrupted suspend task, log error message.
  • Can change default debugging options with
  • void memOptionsSet (options)
  • Options can be

Examining Memory
  • Use the Browser.
  • Enter the memory partition ID in the Show box.

System Memory Pool Size Currently Allocated
Free Blocks Total
Allocated Free List
Additional System Memory Management Routines
  • void calloc (nElems, size) Allocate zeroed
    memory for an array.
  • void realloc (ptr, newSize) Resize an allocated
    block. The block may be moved.
  • int memFindMax( ) Returns the size of the
    largest free block in system memory.

Fine Tuning
  • For fast, deterministic allocation of fixed size
    buffers, use message queues instead of malloc( ).

Generic Partition Manager
  • VxWorks provides low-level routines to create and
    manipulate alternate memory pools.
  • High-level routines like malloc( ) and free( )
    call these lower level routines, specifying the
    system memory pool.
  • Application may use alternate memory partitions
    to reduce fragmentation.
  • Application may use alternate memory partitions
    to manage memory with different properties.

Creating a Memory Partition
  • PART_ID memPartCreate (pPool, size)
  • pPool Pointer to memory for this partition.
  • size Size of memory partition in bytes.
  • Returns a partition id (PART_ID), or NULL on
  • The memory for this partition (pPool) may be
    taken from
  • A separate memory board.
  • A block allocated from the system memory
  • The top of the CPU boards RAM.

Managing Memory Partitions
  • System partition management routines call
    routines listed below, specifying the PART_ID as
  • Generic System Memory Pool
  • memPartAlloc( ) malloc( )
  • memPartFree( ) free( )
  • memPartShow( ) memShow( )
  • memPartAddToPool( ) memAddToPool( )
  • memPartOptionsSet( ) memOptionsSet( )
  • memPartRealloc( ) realloc( )
  • memPartFindMax( ) memFindMax( )

Example Creating a Memory Partition
  • -gtpartId memPartCreate(pMemory,100000)
  • new symbol partId added to symbol table.
  • partId 0x23ff318 value 37745448 0x23ff328
    partId 0x10
  • -gtptrmemPartAlloc(partId,200)
  • new symbol ptr added to symbol table.
  • ptr 0x23ff2ec value 37652632 0x23e8898
  • -gtshow partId
  • status bytes blocks ave block max block
  • ------ ------ ------- --------- -----------
  • current
  • free 99776 1 99776 99776
  • alloc 208 1 208 -
  • cumulative
  • alloc 208 1 208 -

  • Standard C routines are used for dynamic memory
  • To configure the system memory pool
  • Modify sysPhysMemTop( ).
  • Call memAddToPool( ).
  • For fast, deterministic allocation of fixed size
    buffers, use message queues instead of malloc( ).
  • Create separate memory partition for off-board
    memory, or to help reduce fragmentation.
About PowerShow.com