<?xml version="1.0" encoding="latin1"?>
<!--DOCTYPE component PUBLIC "-//OCERA//DTD component XML V1.0//EN" "file:component.dtd"-->

<component id="dynmem" name="DID Memory Allocator">
  <title>Doubly Indexed Memory Allocator</title>
  <info>
    <authorgroup>
      
      <author>
	<firstname>Miguel</firstname>
	<surname>Masmano</surname>
	<affiliation>
	  <orgname>UPVLC</orgname>
	</affiliation>
	<email><ulink url="mailto:mmasmano@disca.upv.es">mmasmano@disca.upv.es</ulink></email>
      </author>

    </authorgroup>
    
    <reviewergroup>
      <author>
	<firstname>Ismael</firstname>
	<surname>Ripoll</surname>
	<affiliation>
	  <orgname>UPVLC</orgname>
	</affiliation>
	<email><ulink url="mailto:iripoll@disca.upv.es">iripoll@disca.upv.es</ulink></email>
      </author>
    </reviewergroup>

    <copyright>
      <year>2003</year>
      <holder>OCERA Consortium</holder>
    </copyright>

    <workpackage id="WP5" />

    <date start="10/11/2002" release="22/04/2003"/>

    <version cvs="sched/dynmem" value="0.70-1"/>
    <status value="Stable"/>

    <license value="GPL" />
    <home-page url="http://www.ocera.org"/>

    <hardware processor="i386" />
    <platform rtlinux="3.2"/>
    <componenttype value="HighLevel" />

    <dependencies>
      <dependency version="3.2">RTLinux</dependency>
    </dependencies>

    <keywords>Real-Time, Dynamic Memory, DIDMA, malloc, free</keywords>

  </info>


  <!-- ================================================== Description -->
  <description>
    RTLinux does not provide any kind of memory management support,
    neither virtual memory (by mean of the processor MMU page table
    or memory segments) nor simple memory allocation, as the one
    provided by the standard "C" library. RTLinux applications has to
    preallocate all the required memory in the init_module() function
    before the threads are created. Once the RTLinux threads are
    created, the only memory that can be used is the stack of each
    thread.  The main reason behind the lack of memory management
    support in RTLinux is the idea that both virtual memory and
    dynamic storage allocator (DSA) algorithms introduce a unbounded
    overhead, making the system response unpredictable and
    non-realtime.  This component provides dynamic memory allocation
    with real time characteristics. The allocator implemented in this
    component is a new DSA algorithm specially designed with the aim
    of obtaining bounded response time. The new algorithm is called
    DIDMA (Doubly Indexed Dynamic Memory Allocator). It is based on
    the use of a pure segregated strategy. See [Paul 95] for an
    exhaustive taxonomy and review of existing DSA algorithms.

  </description>

</component>

