Subversion Repositories HelenOS-doc

Compare Revisions

Ignore whitespace Rev 61 → Rev 62

/design/trunk/src/ch_memory_management.xml
288,7 → 288,7
<section id="frame_allocator">
<title>Frame allocator</title>
 
<para><mediaobject id="frame_alloc">
<figure><mediaobject id="frame_alloc">
<imageobject role="html">
<imagedata fileref="images/frame_alloc.png" format="PNG" />
</imageobject>
296,7 → 296,9
<imageobject role="fop">
<imagedata fileref="images.vector/frame_alloc.svg" format="SVG" />
</imageobject>
</mediaobject></para>
</mediaobject>
<title>Frame allocator scheme.</title>
</figure>
 
<formalpara>
<title>Overview</title>
339,7 → 341,7
<section>
<title>Overview</title>
 
<para><mediaobject id="buddy_alloc">
<figure><mediaobject id="buddy_alloc">
<imageobject role="html">
<imagedata fileref="images/buddy_alloc.png" format="PNG" />
</imageobject>
347,7 → 349,9
<imageobject role="fop">
<imagedata fileref="images.vector/buddy_alloc.svg" format="SVG" />
</imageobject>
</mediaobject></para>
</mediaobject>
<title>Buddy system scheme.</title>
</figure>
 
<para>In the buddy allocator, the memory is broken down into
power-of-two sized naturally aligned blocks. These blocks are
483,7 → 487,7
<section>
<title>Implementation</title>
 
<para><mediaobject id="slab_alloc">
<figure><mediaobject id="slab_alloc">
<imageobject role="html">
<imagedata fileref="images/slab_alloc.png" format="PNG" />
</imageobject>
491,14 → 495,16
<imageobject role="fop">
<imagedata fileref="images.vector/slab_alloc.svg" format="SVG" />
</imageobject>
</mediaobject></para>
</mediaobject>
<title>Slab allocator scheme.</title>
</figure>
 
<para>The SLAB allocator is closely modelled after <ulink
<para>The slab allocator is closely modelled after <ulink
url="http://www.usenix.org/events/usenix01/full_papers/bonwick/bonwick_html/">
OpenSolaris SLAB allocator by Jeff Bonwick and Jonathan Adams </ulink>
OpenSolaris slab allocator by Jeff Bonwick and Jonathan Adams </ulink>
with the following exceptions: <itemizedlist>
<listitem>
empty SLABS are deallocated immediately (in Linux they are kept in linked list, in Solaris ???)
empty slabs are deallocated immediately (in Linux they are kept in linked list, in Solaris ???)
</listitem>
 
<listitem>
519,7 → 525,7
<title>Magazine layer</title>
 
<para>Due to the extensive bottleneck on SMP architures, caused by
global SLAB locking mechanism, making processing of all slab
global slab locking mechanism, making processing of all slab
allocation requests serialized, a new layer was introduced to the
classic slab allocator design. Slab allocator was extended to
support per-CPU caches 'magazines' to achieve good SMP scaling.