mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-25 15:00:45 -08:00
Mps wiki gloassary: pieces of memory: chunk, segment, tract, page
Copied from Perforce Change: 161346 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
f7a82d63bc
commit
f24dc95b89
1 changed files with 70 additions and 3 deletions
|
|
@ -86,9 +86,75 @@
|
|||
memory for an allocation point.</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<h3>Pieces of memory</h3>
|
||||
|
||||
<h4>Pools getting raw memory from the Arena</h4>
|
||||
<p>This memory will be used for client objects.
|
||||
There are two interfaces:
|
||||
a high-level "segment" interface,
|
||||
and a simpler "arena memory" interface. </p>
|
||||
<dl>
|
||||
<dt> segment (internal) </dt>
|
||||
<dd>
|
||||
<p>= a contiguous piece of memory of arbitrary size,
|
||||
with associated properties for participating in garbage
|
||||
collection (see SegStruct).</p>
|
||||
<p>A pool may call SegAlloc() to request a segment from the arena.
|
||||
The segment is the unit of pool-to-pool and pool-to-MPM
|
||||
interaction for GC.</p>
|
||||
<p>Design: <a href="../../design/seg/">design/seg</a>.</p>
|
||||
<p>Interface: SegAlloc() et al in <a href="../../code/mpm.h">mpm.h</a>.</p>
|
||||
<p>Historical note: before 'sunset on segments' (1999-11-18, change 21000) a
|
||||
segment was a VM page.</p>
|
||||
</dd>
|
||||
|
||||
<dt> arena memory (internal) </dt>
|
||||
<dd>
|
||||
<p>= a contiguous piece of memory of arbitrary size,
|
||||
returned by ArenaAlloc()</p>
|
||||
<p>A pool may call ArenaAlloc() to request raw memory from the
|
||||
arena. This is a simpler interface than segments, suitable
|
||||
for simple pools that do not participate in garbage collection,
|
||||
pools used internally by the MPM, etc.</p>
|
||||
<p>(Note: this ArenaAlloc() interface is sometimes
|
||||
called the "tract" interface).</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h4>Pools getting memory for administrative use</h4>
|
||||
<p>This memory will be used for the pool's administrative
|
||||
datastructures, such as allocation
|
||||
tables.</p>
|
||||
<dl>
|
||||
<dt> control memory (internal) </dt>
|
||||
<dd>
|
||||
<p>Pools use ControlAlloc() and ControlFree() to obtain
|
||||
or free control memory.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h4>How the arena handles memory</h4>
|
||||
<p>See tract.c.</p>
|
||||
<dl>
|
||||
<dt> chunk (internal) </dt>
|
||||
<dd>
|
||||
<p>= a contiguous (I think) piece of address space that has
|
||||
been reserved (I think) by the arena</p>
|
||||
<p>arena->primary points to the arena's first chunk</p>
|
||||
</dd>
|
||||
|
||||
<dt> page (internal) </dt>
|
||||
<dd>= unit of granularity of arena allocation; object corresponding to one operating-system VM page </dd>
|
||||
|
||||
<dt> tract (internal) </dt>
|
||||
<dd>= a page that is allocated to a pool</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<p>Other terms:</p>
|
||||
<dl>
|
||||
<dt> <a id="foreign_code">Foreign code (mps.h)</a> </dt>
|
||||
<dt> <a id="foreign_code">foreign code</a> (mps.h) </dt>
|
||||
<dd>From the MPS client's point of view, foreign code is
|
||||
external code (outside the client and MPS), which is not
|
||||
aware of and does not cooperate with the MPS.
|
||||
|
|
@ -104,7 +170,7 @@
|
|||
designed for this.
|
||||
</dd>
|
||||
|
||||
<dt> Format (mps.h) </dt>
|
||||
<dt> format (mps.h) </dt>
|
||||
<dd>A collection of client-implemented Format Methods,
|
||||
which MPS uses to ask the client questions about objects.
|
||||
See <a href="gc.html">GC</a>.</dd>
|
||||
|
|
@ -114,7 +180,7 @@
|
|||
See
|
||||
<a href="../../design/type/index.html#attr">design/type/#attr</a>.
|
||||
</dd>
|
||||
|
||||
|
||||
<dt> Ring (internal) </dt>
|
||||
<dd>A Parent node, linked to zero or more Child nodes.
|
||||
Used throughout MPS internals. See
|
||||
|
|
@ -133,6 +199,7 @@
|
|||
2006-06-21 RHSK Scope of terms; client/mutator, ap/buffer.
|
||||
2006-07-03 RHSK Ring.
|
||||
2006-08-02 RHSK Foreign code. Format (clarify).
|
||||
2006-08-14 RHSK Pieces of memory: chunk, segment, tract, page
|
||||
</pre>
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue