Subversion Repositories HelenOS-doc

Compare Revisions

Ignore whitespace Rev 185 → Rev 186

/design/trunk/src/ch_memory_management.xml
82,11 → 82,14
the frame allocator first tries to find a zone that can satisfy the
request (i.e. has the required amount of free frames). Once a suitable
zone is found, the frame allocator uses the buddy allocator on the
zone's buddy system to perform the allocation. During deallocation,
which is triggered by a call to <code>frame_free()</code>, the frame
allocator looks up the respective zone that contains the frame being
deallocated. Afterwards, it calls the buddy allocator again, this time
to take care of deallocation within the zone's buddy system.</para>
zone's buddy system to perform the allocation. If no free zone is
found, the frame allocator tries to reclaim slab memory.</para>
 
<para>During deallocation, which is triggered by a call to
<code>frame_free()</code>, the frame allocator looks up the respective
zone that contains the frame being deallocated. Afterwards, it calls
the buddy allocator again, this time to take care of deallocation
within the zone's buddy system.</para>
</formalpara>
</section>
 
164,11 → 167,11
first entity within a block is used to represent the entire block.
The first entity keeps the order of the whole block. Other entities
within the block are assigned the magic value
<constant>BUDDY_INNER_BLOCK</constant>. This is especially important
<constant>BUDDY_SYSTEM_INNER_BLOCK</constant>. This is especially important
for effective identification of buddies in a one-dimensional array
because the entity that represents a potential buddy cannot be
associated with <constant>BUDDY_INNER_BLOCK</constant> (i.e. if it
is associated with <constant>BUDDY_INNER_BLOCK</constant> then it is
associated with <constant>BUDDY_SYSTEM_INNER_BLOCK</constant> (i.e. if it
is associated with <constant>BUDDY_SYSTEM_INNER_BLOCK</constant> then it is
not a buddy).</para>
</formalpara>
</section>
203,7 → 206,7
</indexterm>
 
<para>Slabs of one object type are organized in a structure called slab
cache. There are ususally more slabs in the slab cache, depending on
cache. There are usually more slabs in the slab cache, depending on
previous allocations. If the the slab cache runs out of available slabs,
new slabs are allocated. In order to exploit parallelism and to avoid
locking of shared spinlocks, slab caches can have variants of