Domain Engineering:
Families abstracted from the memory management domain:
- MMU Mediator: This mediator is responsible for the
interaction with the Memory Management Unit (MMU), which is
responsible for the Paging System in hardware, once it is too much
expensive to have a paging system on software. In the following
figure it's possible to see how it works. Each process has its own
Address Space, and, when a memory reference is done, the number of
the physical memory frame is obtained by translating the process's
logical page number. This translation is done by the MMU.

- Segment: A member of this family represents a chunk of
physical memory. In the above figure the A, B and C entities are
memory segments. There are three kinds of Segment:
- Contiguous: When this member is selected, all the memory
needed for a memory segment is allocated contiguously. This kind of segment
is not resizeable.
- Static: This member is a non-resizeable memory segment, which
is not necessarily allocated contiguously. As in the Static segments, this kind of segment can not be resized.
- Dynamic: With this member, it is possible to modify the size
of the segment.
- Address_Space: Each proccess has its own Address
Space. This abstraction enables the "Virtual Memory" concept, once
all the allocated memory for this process is maped on his address
space. On the above figure, there are two exemples of
Address_Spaces, each process (on the right side) has one. The
members of this family are mutually exclusive, i. e., only one can
be selected at the same compilation/time. There are four kinds of
Address Space:
- Flat: When this member is in use, the whole free memory in
the system after the SO boot is used by an unique process. On embedded systems
this is the most ordinary memory management philosophy. Commonly, it is used
with multi-threading.
- Paged: This member implements the use of a Paging System, which
is the most commonly hardware-implemented memory management system.
- Segmented: This member enables Segmentation. This is a very
unusual method due to the fact that it is an old and inefficient way to manage
memory, and this is the reason there are too few embedded systems which support
this system (if there is one). A known architeture that implements it and
Paged Segmentation is the Intel's ix86, but it is possible to configure its
MMU to emulate Paging.
- Paged_Segmented: This member enables the Paged Segmentation.
This is a complex memory management system, and is not frequently used.