mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-14 23:40:39 -08:00
703 lines
No EOL
52 KiB
HTML
703 lines
No EOL
52 KiB
HTML
|
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>Memory Management Glossary: P — Memory Pool System 1.111.0 documentation</title>
|
|
|
|
<link rel="stylesheet" href="../_static/mps.css" type="text/css" />
|
|
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
|
|
|
<script type="text/javascript">
|
|
var DOCUMENTATION_OPTIONS = {
|
|
URL_ROOT: '../',
|
|
VERSION: '1.111.0',
|
|
COLLAPSE_INDEX: false,
|
|
FILE_SUFFIX: '.html',
|
|
HAS_SOURCE: true
|
|
};
|
|
</script>
|
|
<script type="text/javascript" src="../_static/jquery.js"></script>
|
|
<script type="text/javascript" src="../_static/underscore.js"></script>
|
|
<script type="text/javascript" src="../_static/doctools.js"></script>
|
|
<link rel="copyright" title="Copyright" href="../copyright.html" />
|
|
<link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
|
|
<link rel="up" title="Memory Management Glossary" href="index.html" />
|
|
<link rel="next" title="Memory Management Glossary: Q" href="q.html" />
|
|
<link rel="prev" title="Memory Management Glossary: O" href="o.html" />
|
|
</head>
|
|
<body>
|
|
<div class="related">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../genindex.html" title="General Index"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="q.html" title="Memory Management Glossary: Q"
|
|
accesskey="N">next</a> |</li>
|
|
<li class="right" >
|
|
<a href="o.html" title="Memory Management Glossary: O"
|
|
accesskey="P">previous</a> |</li>
|
|
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> »</li>
|
|
<li><a href="index.html" accesskey="U">Memory Management Glossary</a> »</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body">
|
|
|
|
<div class="section" id="memory-management-glossary-p">
|
|
<span id="glossary-p"></span><h1>Memory Management Glossary: P<a class="headerlink" href="#memory-management-glossary-p" title="Permalink to this headline">¶</a></h1>
|
|
<p class="glossary-alphabet"><a class="reference internal" href="a.html#glossary-a"><em>A</em></a>
|
|
| <a class="reference internal" href="b.html#glossary-b"><em>B</em></a>
|
|
| <a class="reference internal" href="c.html#glossary-c"><em>C</em></a>
|
|
| <a class="reference internal" href="d.html#glossary-d"><em>D</em></a>
|
|
| <a class="reference internal" href="e.html#glossary-e"><em>E</em></a>
|
|
| <a class="reference internal" href="f.html#glossary-f"><em>F</em></a>
|
|
| <a class="reference internal" href="g.html#glossary-g"><em>G</em></a>
|
|
| <a class="reference internal" href="h.html#glossary-h"><em>H</em></a>
|
|
| <a class="reference internal" href="i.html#glossary-i"><em>I</em></a>
|
|
| J
|
|
| <a class="reference internal" href="k.html#glossary-k"><em>K</em></a>
|
|
| <a class="reference internal" href="l.html#glossary-l"><em>L</em></a>
|
|
| <a class="reference internal" href="m.html#glossary-m"><em>M</em></a>
|
|
| <a class="reference internal" href="n.html#glossary-n"><em>N</em></a>
|
|
| <a class="reference internal" href="o.html#glossary-o"><em>O</em></a>
|
|
| <a class="reference internal" href="#glossary-p"><em>P</em></a>
|
|
| <a class="reference internal" href="q.html#glossary-q"><em>Q</em></a>
|
|
| <a class="reference internal" href="r.html#glossary-r"><em>R</em></a>
|
|
| <a class="reference internal" href="s.html#glossary-s"><em>S</em></a>
|
|
| <a class="reference internal" href="t.html#glossary-t"><em>T</em></a>
|
|
| <a class="reference internal" href="u.html#glossary-u"><em>U</em></a>
|
|
| <a class="reference internal" href="v.html#glossary-v"><em>V</em></a>
|
|
| <a class="reference internal" href="w.html#glossary-w"><em>W</em></a>
|
|
| X
|
|
| Y
|
|
| <a class="reference internal" href="z.html#glossary-z"><em>Z</em></a></p>
|
|
<dl class="glossary docutils">
|
|
<dt id="term-padding">padding</dt>
|
|
<dd><p class="first">Padding is redundant <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> within the memory
|
|
<a class="reference internal" href="a.html#term-allocate"><em class="xref std std-term">allocated</em></a> to an <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a>. It is usually inserted
|
|
because of <a class="reference internal" href="a.html#term-alignment"><em class="xref std std-term">alignment</em></a> restrictions on the fields of the
|
|
object or on the object itself.</p>
|
|
<p class="last">Padding is a form of <a class="reference internal" href="i.html#term-internal-fragmentation"><em class="xref std std-term">internal fragmentation</em></a>.</p>
|
|
</dd>
|
|
<dt id="term-padding-method">padding method</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">A <a class="reference internal" href="f.html#term-format-method"><em class="xref std std-term">format method</em></a> that is called by a <a class="reference internal" href="m.html#term-moving-garbage-collector"><em class="xref std std-term">moving</em></a> <a class="reference internal" href="#term-pool"><em class="xref std std-term">pool</em></a> to create
|
|
a <a class="reference internal" href="#term-padding-object"><em class="xref std std-term">padding object</em></a>. See <a class="reference internal" href="../topic/format.html#mps_fmt_pad_t" title="mps_fmt_pad_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_pad_t</span></tt></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-padding-object">padding object</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">A <a class="reference internal" href="f.html#term-formatted-object"><em class="xref std std-term">formatted object</em></a> that consists of
|
|
<a class="reference internal" href="#term-padding"><em class="xref std std-term">padding</em></a>. One of three types of formatted objects,
|
|
the other two being <a class="reference internal" href="c.html#term-client-object"><em class="xref std std-term">client objects</em></a>
|
|
and <a class="reference internal" href="f.html#term-forwarding-object"><em class="xref std std-term">forwarding objects</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-page">page</dt>
|
|
<dd><p class="first">A <a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> system usually deals with
|
|
<a class="reference internal" href="m.html#term-memory-1"><em class="xref std std-term">memory<sup>(1)</sup></em></a> <a class="reference internal" href="b.html#term-block"><em class="xref std std-term">blocks</em></a> of fixed size as
|
|
units for <a class="reference internal" href="#term-paging"><em class="xref std std-term">paging</em></a>. These are known as <em>pages</em>.</p>
|
|
<p class="last">Pages are often 4 <a class="reference internal" href="k.html#term-kilobyte"><em class="xref std std-term">kB</em></a> or 8 kB in size. This
|
|
size is determined by the addressing hardware of the machine.</p>
|
|
</dd>
|
|
<dt id="term-page-fault">page fault</dt>
|
|
<dd><p class="first">An exception when accessing <a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a>,
|
|
usually resulting in a <a class="reference internal" href="#term-page"><em class="xref std std-term">page</em></a> being fetched from disk.</p>
|
|
<p>A page fault is an exception occurring during the translation
|
|
of <a class="reference internal" href="v.html#term-virtual-address"><em class="xref std std-term">virtual addresses</em></a> to
|
|
<a class="reference internal" href="#term-physical-address"><em class="xref std std-term">physical addresses</em></a>. “Page fault”
|
|
usually means an access to a page that has been <a class="reference internal" href="#term-paged-out"><em class="xref std std-term">paged
|
|
out</em></a> and hence requires fetching from disk, but it is
|
|
sometimes also used to mean <a class="reference internal" href="i.html#term-invalid-page-fault"><em class="xref std std-term">invalid page fault</em></a> or
|
|
<a class="reference internal" href="#term-protection-fault"><em class="xref std std-term">protection fault</em></a>.</p>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="#term-paging"><em class="xref std std-term">paging</em></a>, <a class="reference internal" href="#term-paged-in"><em class="xref std std-term">paged in</em></a>, <a class="reference internal" href="#term-paged-out"><em class="xref std std-term">paged out</em></a>, <a class="reference internal" href="r.html#term-read-fault"><em class="xref std std-term">read fault</em></a>, <a class="reference internal" href="w.html#term-write-fault"><em class="xref std std-term">write fault</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-page-marking">page marking</dt>
|
|
<dd>Page marking is a form of <a class="reference internal" href="c.html#term-card-marking"><em class="xref std std-term">card-marking</em></a>
|
|
where the <a class="reference internal" href="c.html#term-card"><em class="xref std std-term">card</em></a> is the same size as a <a class="reference internal" href="#term-page"><em class="xref std std-term">page</em></a></dd>
|
|
<dt id="term-page-protection">page protection</dt>
|
|
<dd><div class="admonition-see first admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="#term-protection"><em class="xref std std-term">protection</em></a>.</p>
|
|
</div>
|
|
<p class="last">Many operating systems support protection of <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> <a class="reference internal" href="#term-page"><em class="xref std std-term">pages</em></a>. Individual pages may be protected
|
|
against a combination of read, write or execute accesses by a
|
|
process.</p>
|
|
</dd>
|
|
<dt id="term-page-table">page table</dt>
|
|
<dd><p class="first">In a <a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> system, it is common to map
|
|
between <a class="reference internal" href="v.html#term-virtual-address"><em class="xref std std-term">virtual addresses</em></a> and
|
|
<a class="reference internal" href="#term-physical-address"><em class="xref std std-term">physical addresses</em></a> by means of a
|
|
data structure called a <em>page table</em>.</p>
|
|
<p>The <a class="reference internal" href="#term-page"><em class="xref std std-term">page</em></a> number of an address is usually found from
|
|
the most significant bits of the address; the remaining bits
|
|
yield the offset of the <a class="reference internal" href="m.html#term-memory-location"><em class="xref std std-term">memory location</em></a> within the
|
|
page. The page table is normally indexed by page number and
|
|
contains information on whether the page is currently in
|
|
<a class="reference internal" href="m.html#term-main-memory"><em class="xref std std-term">main memory</em></a>, and where it is in main memory or on
|
|
disk.</p>
|
|
<p>Conventional page tables are sized to the virtual
|
|
<a class="reference internal" href="a.html#term-address-space"><em class="xref std std-term">address space</em></a> and store the entire virtual address
|
|
space description of each process. Because of the need to keep
|
|
the virtual-to-physical translation time low, a conventional
|
|
page table is structured as a fixed, multi-level hierarchy,
|
|
and can be very inefficient at representing a sparse virtual
|
|
address space, unless the allocated pages are carefully
|
|
aligned to the page table hierarchy.</p>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="i.html#term-inverted-page-table"><em class="xref std std-term">inverted page table</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-paged-in">paged in</dt>
|
|
<dd><p class="first">In a <a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> system, <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> is
|
|
described as <em>paged in</em> if it is available in <a class="reference internal" href="#term-physical-memory-1"><em class="xref std std-term">physical
|
|
memory<sup>(1)</sup></em></a>.</p>
|
|
<div class="admonition-similar-term admonition">
|
|
<p class="first admonition-title">Similar term</p>
|
|
<p class="last"><a class="reference internal" href="s.html#term-swapped-in"><em class="xref std std-term">swapped in</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-opposite-term admonition">
|
|
<p class="first admonition-title">Opposite term</p>
|
|
<p class="last"><a class="reference internal" href="#term-paged-out"><em class="xref std std-term">paged out</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="#term-paging"><em class="xref std std-term">paging</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-paged-out">paged out</dt>
|
|
<dd><p class="first">In a <a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> system, <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> is
|
|
described as <em>paged out</em> if it is not available in
|
|
<a class="reference internal" href="#term-physical-memory-1"><em class="xref std std-term">physical memory<sup>(1)</sup></em></a>.</p>
|
|
<div class="admonition-similar-term admonition">
|
|
<p class="first admonition-title">Similar term</p>
|
|
<p class="last"><a class="reference internal" href="s.html#term-swapped-out"><em class="xref std std-term">swapped out</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-opposite-term admonition">
|
|
<p class="first admonition-title">Opposite term</p>
|
|
<p class="last"><a class="reference internal" href="#term-paged-in"><em class="xref std std-term">paged in</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="#term-paging"><em class="xref std std-term">paging</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-paging">paging</dt>
|
|
<dd><p class="first">In a <a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> system, <em>paging</em> is the act of
|
|
transferring <a class="reference internal" href="#term-page"><em class="xref std std-term">pages</em></a> between <a class="reference internal" href="#term-physical-memory-1"><em class="xref std std-term">physical
|
|
memory<sup>(1)</sup></em></a> and <a class="reference internal" href="b.html#term-backing-store"><em class="xref std std-term">backing store</em></a> (usually disk).</p>
|
|
<p>When pages need to be paged out, a heuristic is used to select
|
|
ones that will not be needed soon; “least recently used” is a
|
|
popular one.</p>
|
|
<div class="admonition-similar-term admonition">
|
|
<p class="first admonition-title">Similar term</p>
|
|
<p class="last"><a class="reference internal" href="s.html#term-swapping"><em class="xref std std-term">swapping</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="#term-paged-in"><em class="xref std std-term">paged in</em></a>, <a class="reference internal" href="#term-paged-out"><em class="xref std std-term">paged out</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-palimpsest">palimpsest</dt>
|
|
<dd><p class="first">A <a class="reference internal" href="b.html#term-block"><em class="xref std std-term">block</em></a> of <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> that has been
|
|
<a class="reference internal" href="a.html#term-allocate"><em class="xref std std-term">allocated</em></a>, <a class="reference internal" href="f.html#term-free-1"><em class="xref std std-term">freed<sup>(1)</sup></em></a> (or <a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclaimed</em></a>),
|
|
and then allocated again. Such memory may contain data from
|
|
the previous use if portions of it remain uninitialised.</p>
|
|
<p>This commonly occurs on the <a class="reference internal" href="s.html#term-stack"><em class="xref std std-term">stack</em></a>, especially if the
|
|
compiler allocates large <a class="reference internal" href="s.html#term-stack-frame"><em class="xref std std-term">stack frames</em></a> in
|
|
anticipation of allocating data structures on the stack.</p>
|
|
<p class="last">If the palimpsest is being <a class="reference internal" href="s.html#term-scan"><em class="xref std std-term">scanned</em></a>
|
|
<a class="reference internal" href="c.html#term-conservative-garbage-collection"><em class="xref std std-term">conservatively</em></a>, such
|
|
left-over data may cause <a class="reference internal" href="u.html#term-unreachable"><em class="xref std std-term">unreachable</em></a> <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a>
|
|
to appear <a class="reference internal" href="r.html#term-reachable"><em class="xref std std-term">reachable</em></a> and thus become <a class="reference internal" href="f.html#term-floating-garbage"><em class="xref std std-term">floating
|
|
garbage</em></a>. If it is scanned <a class="reference internal" href="e.html#term-exact-garbage-collection"><em class="xref std std-term">precisely</em></a>, such left-over data, if treated as
|
|
<a class="reference internal" href="#term-pointer"><em class="xref std std-term">pointers</em></a>, is a bug.</p>
|
|
</dd>
|
|
<dt id="term-parallel-garbage-collection">parallel garbage collection</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>concurrent garbage collection</em>.</p>
|
|
</div>
|
|
<p>A parallel or concurrent <a class="reference internal" href="c.html#term-collector-2"><em class="xref std std-term">collector<sup>(2)</sup></em></a> executes
|
|
simultaneously with the <a class="reference internal" href="m.html#term-mutator"><em class="xref std std-term">mutator</em></a>, usually on a
|
|
multi-processor machine.</p>
|
|
<p>Concurrent <a class="reference internal" href="g.html#term-garbage-collection"><em class="xref std std-term">garbage collection</em></a> must cope with the
|
|
mutator changing <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a> while collection
|
|
occurs. The problem is similar to that of <a class="reference internal" href="i.html#term-incremental-garbage-collection"><em class="xref std std-term">incremental
|
|
GC</em></a>, but harder. The solution
|
|
typically involves <a class="reference internal" href="b.html#term-barrier-1"><em class="xref std std-term">barrier<sup>(1)</sup></em></a>.</p>
|
|
<div class="admonition-similar-term admonition">
|
|
<p class="first admonition-title">Similar term</p>
|
|
<p class="last"><a class="reference internal" href="i.html#term-incremental-garbage-collection"><em class="xref std std-term">incremental</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="r.html#term-replicating-garbage-collector"><em class="xref std std-term">replicating garbage collector</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-related-publication last admonition">
|
|
<p class="first admonition-title">Related publications</p>
|
|
<p class="last"><a class="reference internal" href="../mmref/bib.html#doligez93"><em>Doligez & Leroy (1993)</em></a>, <a class="reference internal" href="../mmref/bib.html#doligez94"><em>Doligez & Gonthier (1994)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-parked-state">parked state</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">One of the three states an <a class="reference internal" href="a.html#term-arena"><em class="xref std std-term">arena</em></a> can be in (the
|
|
others being the <a class="reference internal" href="c.html#term-clamped-state"><em class="xref std std-term">clamped state</em></a> and the
|
|
<a class="reference internal" href="u.html#term-unclamped-state"><em class="xref std std-term">unclamped state</em></a>). In the parked state, no
|
|
<a class="reference internal" href="g.html#term-garbage-collection"><em class="xref std std-term">garbage collection</em></a> is in progress, no object
|
|
motion occurs and the staleness of <a class="reference internal" href="l.html#term-location-dependency"><em class="xref std std-term">location
|
|
dependencies</em></a> does not change. Call
|
|
<a class="reference internal" href="../topic/arena.html#mps_arena_park" title="mps_arena_park"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_park()</span></tt></a> or <a class="reference internal" href="../topic/arena.html#mps_arena_collect" title="mps_arena_collect"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_collect()</span></tt></a> to
|
|
put an arena into the parked state.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-perfect-fit">perfect fit</dt>
|
|
<dd><p class="first">If an <a class="reference internal" href="a.html#term-allocate"><em class="xref std std-term">allocation</em></a> request is satisfied
|
|
exactly from a <a class="reference internal" href="f.html#term-free-block"><em class="xref std std-term">free block</em></a> with no
|
|
<a class="reference internal" href="f.html#term-fragmentation"><em class="xref std std-term">fragmentation</em></a>, this is said to be a <a class="reference internal" href="#term-perfect-fit"><em class="xref std std-term">perfect
|
|
fit</em></a>.</p>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="f.html#term-free-block"><em class="xref std std-term">free block</em></a>, <a class="reference internal" href="a.html#term-allocation-mechanism"><em class="xref std std-term">allocation mechanism</em></a>, <a class="reference internal" href="b.html#term-best-fit"><em class="xref std std-term">best fit</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-phantom-reachable"><span id="term-phantomly-reachable"></span>phantom reachable<br />phantomly reachable</dt>
|
|
<dd><p class="first">In <a class="reference internal" href="../mmref/lang.html#term-java"><em class="xref std std-term">Java</em></a>, an object is <em>phantom reachable</em> if it is
|
|
neither <a class="reference internal" href="s.html#term-strongly-reachable"><em class="xref std std-term">strongly</em></a> nor
|
|
<a class="reference internal" href="s.html#term-softly-reachable"><em class="xref std std-term">softly</em></a> nor <a class="reference internal" href="w.html#term-weakly-reachable"><em class="xref std std-term">weakly reachable</em></a>
|
|
and has been <a class="reference internal" href="f.html#term-finalization"><em class="xref std std-term">finalized</em></a> and there is a
|
|
path from the <a class="reference internal" href="r.html#term-root"><em class="xref std std-term">roots</em></a> to it that contains at
|
|
least one <a class="reference internal" href="#term-phantom-reference"><em class="xref std std-term">phantom reference</em></a>.</p>
|
|
<p>When the Java <a class="reference internal" href="c.html#term-collector-1"><em class="xref std std-term">collector<sup>(1)</sup></em></a> determines that an object
|
|
is phantom reachable, the <a class="reference internal" href="r.html#term-reference-object"><em class="xref std std-term">reference objects</em></a> containing
|
|
the phantom references are enqueued.</p>
|
|
<p>The Java specification says that the phantom reference is not
|
|
cleared when the reference object is enqueued, but actually,
|
|
there’s no way in the language to tell whether that has been
|
|
done or not. In some implementations, JNI weak global
|
|
references are weaker than phantom references, and provide a
|
|
way to access phantom reachable objects.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="r.html#term-reachable"><em class="xref std std-term">reachability</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-related-link last admonition">
|
|
<p class="first admonition-title">Related links</p>
|
|
<p class="last"><a class="reference external" href="http://download.java.net/jdk8/docs/api/java/lang/ref/PhantomReference.html">Class java.lang.ref.PhantomReference</a>, <a class="reference external" href="http://pawlan.com/monica/articles/refobjs/">Reference Objects and Garbage Collection</a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-phantom-reference">phantom reference</dt>
|
|
<dd><p class="first">In <a class="reference internal" href="../mmref/lang.html#term-java"><em class="xref std std-term">Java</em></a> terminology, <em>phantom reference</em> is used to
|
|
mean a <a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a> encapsulated in a <a class="reference internal" href="r.html#term-reference-object"><em class="xref std std-term">reference
|
|
object</em></a> of class <tt class="docutils literal"><span class="pre">PhantomReference</span></tt>.</p>
|
|
<p>Phantom references form one of three kinds of <a class="reference internal" href="w.html#term-weak-reference-1"><em class="xref std std-term">weak
|
|
reference<sup>(1)</sup></em></a> in Java. They are handy for performing
|
|
clean-ups after an object has <a class="reference internal" href="d.html#term-dead"><em class="xref std std-term">died</em></a> and been
|
|
<a class="reference internal" href="f.html#term-finalization"><em class="xref std std-term">finalized</em></a>.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="#term-phantom-reachable"><em class="xref std std-term">phantom reachable</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-related-link last admonition">
|
|
<p class="first admonition-title">Related link</p>
|
|
<p class="last"><a class="reference external" href="http://download.java.net/jdk8/docs/api/java/lang/ref/PhantomReference.html">Class java.lang.ref.PhantomReference</a>, <a class="reference external" href="http://pawlan.com/monica/articles/refobjs/">Reference Objects and Garbage Collection</a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-physical-address">physical address</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>absolute address</em>.</p>
|
|
</div>
|
|
<p>Physical <a class="reference internal" href="a.html#term-address"><em class="xref std std-term">addresses</em></a> are used to index into
|
|
<a class="reference internal" href="#term-physical-memory-1"><em class="xref std std-term">physical memory<sup>(1)</sup></em></a>. On some systems, they are called
|
|
<em>absolute addresses</em>.</p>
|
|
<p>In a <a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> system the application program
|
|
handles <a class="reference internal" href="v.html#term-virtual-address"><em class="xref std std-term">virtual addresses</em></a> and these
|
|
are translated to physical addresses by the <a class="reference internal" href="m.html#term-mmu"><em class="xref std std-term">MMU</em></a>.</p>
|
|
<div class="admonition-opposite-term last admonition">
|
|
<p class="first admonition-title">Opposite term</p>
|
|
<p class="last"><a class="reference internal" href="v.html#term-virtual-address"><em class="xref std std-term">virtual address</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-physical-address-space">physical address space</dt>
|
|
<dd><p class="first">The physical <a class="reference internal" href="a.html#term-address-space"><em class="xref std std-term">address space</em></a> is the space of
|
|
<a class="reference internal" href="#term-physical-address"><em class="xref std std-term">physical addresses</em></a>.</p>
|
|
<div class="admonition-opposite-term last admonition">
|
|
<p class="first admonition-title">Opposite term</p>
|
|
<p class="last"><a class="reference internal" href="v.html#term-virtual-address-space"><em class="xref std std-term">virtual address space</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-physical-memory-1">physical memory<sup>(1)</sup></dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>real memory</em>.</p>
|
|
</div>
|
|
<p>Physical memory is <a class="reference internal" href="m.html#term-memory-1"><em class="xref std std-term">memory<sup>(1)</sup></em></a> that is wired to
|
|
directly to the processor, addressable by <a class="reference internal" href="#term-physical-address"><em class="xref std std-term">physical
|
|
address</em></a>.</p>
|
|
<p>This term is basically synonymous to <a class="reference internal" href="m.html#term-main-memory"><em class="xref std std-term">main memory</em></a>, but
|
|
is used in contrast to <a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> and
|
|
<a class="reference internal" href="b.html#term-backing-store"><em class="xref std std-term">backing store</em></a>.</p>
|
|
<p>While modern computers usually have lots of <a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual
|
|
memory</em></a>, performance is still closely related to the
|
|
quantity of physical memory available. If a system has
|
|
insufficient physical memory, it may <a class="reference internal" href="t.html#term-thrash"><em class="xref std std-term">thrash</em></a>.</p>
|
|
<div class="admonition-similar-term last admonition">
|
|
<p class="first admonition-title">Similar term</p>
|
|
<p class="last"><a class="reference internal" href="m.html#term-main-memory"><em class="xref std std-term">main memory</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-physical-memory-2">physical memory<sup>(2)</sup></dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>physical storage</em>.</p>
|
|
</div>
|
|
<p>Physical memory is <a class="reference internal" href="m.html#term-memory-1"><em class="xref std std-term">memory<sup>(1)</sup></em></a> on physical storage
|
|
devices, such as <a class="reference internal" href="r.html#term-ram"><em class="xref std std-term">RAM</em></a> or disks.</p>
|
|
<p>This term is often contrasted to <a class="reference internal" href="v.html#term-virtual-address-space"><em class="xref std std-term">virtual address space</em></a>
|
|
that might not be mapped to any actual storage.</p>
|
|
<div class="admonition-similar-term last admonition">
|
|
<p class="first admonition-title">Similar term</p>
|
|
<p class="last"><a class="reference internal" href="m.html#term-memory-1"><em class="xref std std-term">memory<sup>(1)</sup></em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-physical-storage">physical storage</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="#term-physical-memory-2"><em class="xref std std-term">physical memory<sup>(2)</sup></em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-pig-in-the-python">pig in the python</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>pig in the snake</em>.</p>
|
|
</div>
|
|
<p>In a <a class="reference internal" href="g.html#term-generational-garbage-collection"><em class="xref std std-term">generational</em></a>
|
|
collector, when a large and long-lived <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a> is
|
|
<a class="reference internal" href="a.html#term-allocate"><em class="xref std std-term">allocated</em></a> in <a class="reference internal" href="n.html#term-nursery-space"><em class="xref std std-term">nursery space</em></a>, collection effort
|
|
will be wasted as that object survives and is <a class="reference internal" href="#term-promotion"><em class="xref std std-term">promoted</em></a> from <a class="reference internal" href="g.html#term-generation"><em class="xref std std-term">generation</em></a> to generation. This is
|
|
especially noticeable in a <a class="reference internal" href="c.html#term-copying-garbage-collection"><em class="xref std std-term">copying collector</em></a>, where the large object will be copied
|
|
many times. This difficulty is similar to that of a python
|
|
which swallows its prey whole and is somewhat immobilized as
|
|
it digests it.</p>
|
|
<p>Modern collectors permit objects to be allocated directly into
|
|
appropriate generations or pools to avoid this problem.
|
|
Long-lived objects can be allocated directly into long-term
|
|
generations. Large objects can be allocated directly into
|
|
pools with special support for large objects (such as copying
|
|
by remapping, incremental copying, or not copying at all).</p>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="g.html#term-generational-garbage-collection"><em class="xref std std-term">generational garbage collection</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-pig-in-the-snake">pig in the snake</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="#term-pig-in-the-python"><em class="xref std std-term">pig in the python</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-pinning">pinning</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>nailing</em>.</p>
|
|
</div>
|
|
<p class="last">In <a class="reference internal" href="c.html#term-copying-garbage-collection"><em class="xref std std-term">copying garbage collection</em></a>, an object may not be
|
|
movable because it is the target of an <a class="reference internal" href="a.html#term-ambiguous-reference"><em class="xref std std-term">ambiguous
|
|
reference</em></a> or because it is referenced by <a class="reference internal" href="f.html#term-foreign-code"><em class="xref std std-term">foreign code</em></a>
|
|
that does not co-operate with the collector. Such an object is
|
|
said to be <em>pinned</em>.</p>
|
|
</dd>
|
|
<dt id="term-placement-policy">placement policy</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="a.html#term-allocation-policy"><em class="xref std std-term">allocation policy</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-platform">platform</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">The term <em>platform</em> is used to refer to the combination of
|
|
operating system, processor architecture, and compiler.
|
|
See <a class="reference internal" href="../topic/platform.html#topic-platform"><em>Platforms</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-plinth">plinth</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">The plinth is a program module providing the MPS with all
|
|
the support functions it needs from the execution
|
|
environment. The plinth removes the need for external
|
|
libraries, by getting the support from the <a class="reference internal" href="c.html#term-client-program"><em class="xref std std-term">client
|
|
program</em></a>. See <a class="reference internal" href="../topic/plinth.html#topic-plinth"><em>Plinth</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-pointer">pointer</dt>
|
|
<dd><p class="first"><em>Pointer</em> data types represent a reference to an
|
|
<a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a> or a <a class="reference internal" href="m.html#term-memory-location"><em class="xref std std-term">location</em></a>.</p>
|
|
<p>Pointers may be specialized by the type of the object referred
|
|
to.</p>
|
|
<p>Typically, pointers are represented by an <a class="reference internal" href="a.html#term-address"><em class="xref std std-term">address</em></a>, but
|
|
they can be more complicated when they need to carry more
|
|
information. For example, when the referent is smaller than a
|
|
<a class="reference internal" href="w.html#term-word"><em class="xref std std-term">word</em></a>, an offset within the word might be needed.</p>
|
|
<div class="admonition-similar-term admonition">
|
|
<p class="first admonition-title">Similar terms</p>
|
|
<p class="last"><a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a>, <a class="reference internal" href="a.html#term-address"><em class="xref std std-term">address</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="t.html#term-tag"><em class="xref std std-term">tag</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-pool">pool</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">A pool is responsible for requesting memory from the
|
|
<a class="reference internal" href="a.html#term-arena"><em class="xref std std-term">arena</em></a> and making it available to the <a class="reference internal" href="c.html#term-client-program"><em class="xref std std-term">client
|
|
program</em></a> via <a class="reference internal" href="../topic/allocation.html#mps_alloc" title="mps_alloc"><tt class="xref c c-func docutils literal"><span class="pre">mps_alloc()</span></tt></a> or via an
|
|
<a class="reference internal" href="a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a>. Multiple pools can coexist in
|
|
one arena. Pools belong to the type
|
|
<a class="reference internal" href="../topic/pool.html#mps_pool_t" title="mps_pool_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_pool_t</span></tt></a>. See <a class="reference internal" href="../topic/pool.html#topic-pool"><em>Pools</em></a> and the
|
|
<a class="reference internal" href="../pool/index.html#pool"><em>Pool reference</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-pool-class">pool class</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">A value of type <a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_class_t</span></tt></a> describing a class
|
|
of <a class="reference internal" href="#term-pool"><em class="xref std std-term">pools</em></a> that manage memory according to
|
|
particular policy. See <a class="reference internal" href="../pool/index.html#pool"><em>Pool reference</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-precise-garbage-collection">precise garbage collection</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="e.html#term-exact-garbage-collection"><em class="xref std std-term">exact garbage collection</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-precise-reference">precise reference</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="e.html#term-exact-reference"><em class="xref std std-term">exact reference</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-precise-root">precise root</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="e.html#term-exact-root"><em class="xref std std-term">exact root</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-premature-free">premature free</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>use after free</em>.</p>
|
|
</div>
|
|
<p>A <em>premature free</em> or <em>use after free</em> occurs when
|
|
<a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> is <a class="reference internal" href="f.html#term-free-1"><em class="xref std std-term">deallocated</em></a>, but is
|
|
later accessed.</p>
|
|
<p>Under <a class="reference internal" href="m.html#term-manual-memory-management"><em class="xref std std-term">manual memory management</em></a>, this usually occurs
|
|
when one part of a program decides it has finished using a
|
|
memory <a class="reference internal" href="b.html#term-block"><em class="xref std std-term">block</em></a>, and is unaware that another part of the
|
|
program is still using it. This is rare under <a class="reference internal" href="a.html#term-automatic-memory-management"><em class="xref std std-term">automatic
|
|
memory management</em></a>.</p>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="d.html#term-double-free"><em class="xref std std-term">double free</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-premature-promotion">premature promotion</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="#term-premature-tenuring"><em class="xref std std-term">premature tenuring</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-premature-tenuring">premature tenuring</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>premature promotion</em>.</p>
|
|
</div>
|
|
<p>When a short-lived <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a> <a class="reference internal" href="a.html#term-allocate"><em class="xref std std-term">allocated</em></a> in a
|
|
<a class="reference internal" href="g.html#term-generational-garbage-collection"><em class="xref std std-term">generational garbage collector</em></a> is <a class="reference internal" href="#term-promotion"><em class="xref std std-term">promoted</em></a> (due to poor
|
|
timing) into a less-frequently collected <a class="reference internal" href="g.html#term-generation"><em class="xref std std-term">generation</em></a>.
|
|
This <em>prematurely tenured</em> object may become <a class="reference internal" href="g.html#term-garbage"><em class="xref std std-term">garbage</em></a>
|
|
very soon after promotion, but will not be <a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclaimed</em></a>
|
|
for some time because it is now in a less frequently collected
|
|
generation.</p>
|
|
<p>This problem is essentially due to quantization error: all
|
|
objects in a generation are treated as if they have the same
|
|
age, even though they range from as old as the previous
|
|
promotion cycle to new-born.</p>
|
|
<p class="last">Modern <a class="reference internal" href="g.html#term-garbage-collector"><em class="xref std std-term">collectors<sup>(1)</sup></em></a> offer
|
|
several remedies for premature tenuring. If the client program
|
|
knows that it is entering a phase that will create many
|
|
short-lived objects, it can forestall all promotion until it
|
|
knows it is done with those objects. Thus no objects will be
|
|
prematurely promoted: they will all be seen as garbage.
|
|
Another solution is to create <a class="reference internal" href="b.html#term-bucket"><em class="xref std std-term">buckets</em></a> within
|
|
generations to more accurately classify objects by age and
|
|
only promote those which have reached a certain minimum.</p>
|
|
</dd>
|
|
<dt id="term-primary-storage">primary storage</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="m.html#term-main-memory"><em class="xref std std-term">main memory</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-promotion">promotion</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>tenuring</em>.</p>
|
|
</div>
|
|
<p>Promotion or tenuring is the act of moving an <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a>
|
|
from its current <a class="reference internal" href="g.html#term-generation"><em class="xref std std-term">generation</em></a> to an <em>older</em> one (one
|
|
that contains objects that are expected to survive longer).</p>
|
|
<p>“Tenuring” is used particularly about promotion to the oldest
|
|
generation.</p>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="g.html#term-generational-garbage-collection"><em class="xref std std-term">generational garbage collection</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-protectable-root">protectable root</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">A <a class="reference internal" href="r.html#term-root"><em class="xref std std-term">root</em></a> which the MPS may <a class="reference internal" href="#term-protection"><em class="xref std std-term">protect</em></a> with a <a class="reference internal" href="w.html#term-write-barrier"><em class="xref std std-term">write barrier</em></a>. A protectable
|
|
root is created by specifying the <a class="reference internal" href="r.html#term-root-mode"><em class="xref std std-term">root mode</em></a>
|
|
<a class="reference internal" href="../topic/root.html#MPS_RM_PROT" title="MPS_RM_PROT"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RM_PROT</span></tt></a> when calling a registration
|
|
function such as <a class="reference internal" href="../topic/root.html#mps_root_create" title="mps_root_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_root_create()</span></tt></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-protection">protection</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>memory protection</em>, <em>page protection</em>.</p>
|
|
</div>
|
|
<p>Many operating systems support protection of <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> <a class="reference internal" href="#term-page"><em class="xref std std-term">pages</em></a>. Individual pages may be protected
|
|
against a combination of read, write or execute accesses by a
|
|
process.</p>
|
|
<p>A process which attempts a protected access will trigger a
|
|
<a class="reference internal" href="#term-protection-fault"><em class="xref std std-term">protection fault</em></a>. Protection is typically implemented
|
|
in hardware by the <a class="reference internal" href="m.html#term-mmu"><em class="xref std std-term">MMU</em></a> as part of the support for
|
|
<a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> .</p>
|
|
<p>Pages can be protected for a number of reasons: a
|
|
<a class="reference internal" href="g.html#term-generational-garbage-collection"><em class="xref std std-term">generational</em></a> or
|
|
<a class="reference internal" href="i.html#term-incremental-garbage-collection"><em class="xref std std-term">incremental</em></a>
|
|
<a class="reference internal" href="g.html#term-garbage-collector"><em class="xref std std-term">garbage collector</em></a> may want to place <a class="reference internal" href="b.html#term-barrier-1"><em class="xref std std-term">barriers<sup>(1)</sup></em></a> on pages; an operating system may want to protect pages
|
|
for security, or to implement “copy-on-write” or
|
|
“demand-zero-filled” pages.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="r.html#term-read-fault"><em class="xref std std-term">read fault</em></a>, <a class="reference internal" href="w.html#term-write-fault"><em class="xref std std-term">write fault</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-related-publication last admonition">
|
|
<p class="first admonition-title">Related publications</p>
|
|
<p class="last"><a class="reference internal" href="../mmref/bib.html#ael88"><em>Appel et al. (1988)</em></a>, <a class="reference internal" href="../mmref/bib.html#singhal92"><em>Singhal et al. (1992)</em></a>, <a class="reference internal" href="../mmref/bib.html#hm93"><em>Hosking & Moss (1993)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-protection-exception">protection exception</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="#term-protection-fault"><em class="xref std std-term">protection fault</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-protection-fault">protection fault</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>barrier hit</em>, <em>protection exception</em>, <em>protection violation</em>.</p>
|
|
</div>
|
|
<p>A protection fault is an exception or trap which occurs when a
|
|
process attempts to access <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> which has been
|
|
<a class="reference internal" href="#term-protection"><em class="xref std std-term">protected</em></a>.</p>
|
|
<div class="admonition-relevance-to-memory-management admonition">
|
|
<p class="first admonition-title">Relevance to memory management</p>
|
|
<p class="last">Some <a class="reference internal" href="g.html#term-garbage-collector"><em class="xref std std-term">garbage collectors</em></a> use handlers for
|
|
protection faults to provide <a class="reference internal" href="b.html#term-barrier-1"><em class="xref std std-term">barriers<sup>(1)</sup></em></a>.</p>
|
|
</div>
|
|
<div class="admonition-see-also last admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="s.html#term-segmentation-violation"><em class="xref std std-term">segmentation violation</em></a>, <a class="reference internal" href="g.html#term-general-protection-fault"><em class="xref std std-term">General Protection Fault</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-protection-violation">protection violation</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="#term-protection-fault"><em class="xref std std-term">protection fault</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar">
|
|
<div class="sphinxsidebarwrapper">
|
|
<p class="logo"><a href="../index.html">
|
|
<img class="logo" src="../_static/logo.png" alt="Logo"/>
|
|
</a></p>
|
|
<h4>Previous topic</h4>
|
|
<p class="topless"><a href="o.html"
|
|
title="previous chapter">Memory Management Glossary: O</a></p>
|
|
<h4>Next topic</h4>
|
|
<p class="topless"><a href="q.html"
|
|
title="next chapter">Memory Management Glossary: Q</a></p><h4>Downloads</h4>
|
|
|
|
<p class="topless">
|
|
<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
|
|
<a href="http://www.ravenbrook.com/project/mps/release/">All MPS Kit releases</a>
|
|
</p>
|
|
|
|
<h4>Issues</h4>
|
|
|
|
<p class="topless">
|
|
<a href="http://www.ravenbrook.com/project/mps/issue/?action=list&view=status%3dopen&display=Job:Priority:Title&sort=Priority">Known issues</a><br>
|
|
<a href="http://www.ravenbrook.com/project/mps/issue/?action=fixed&release_fixed=1.111.0">Issues fixed in release 1.111.0</a>
|
|
</p><h4>Contact us</h4>
|
|
|
|
<p class="topless"><a href="mailto:mps-questions@ravenbrook.com">mps-questions@ravenbrook.com</a></p>
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="related">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="q.html" title="Memory Management Glossary: Q"
|
|
>next</a> |</li>
|
|
<li class="right" >
|
|
<a href="o.html" title="Memory Management Glossary: O"
|
|
>previous</a> |</li>
|
|
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> »</li>
|
|
<li><a href="index.html" >Memory Management Glossary</a> »</li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer">
|
|
© <a href="../copyright.html">Copyright</a> 2013, Ravenbrook Limited.
|
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
|
</div>
|
|
</body>
|
|
</html> |