mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-15 07:41:09 -08:00
316 lines
No EOL
21 KiB
HTML
316 lines
No EOL
21 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: V — 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: W" href="w.html" />
|
|
<link rel="prev" title="Memory Management Glossary: U" href="u.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="w.html" title="Memory Management Glossary: W"
|
|
accesskey="N">next</a> |</li>
|
|
<li class="right" >
|
|
<a href="u.html" title="Memory Management Glossary: U"
|
|
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-v">
|
|
<span id="glossary-v"></span><h1>Memory Management Glossary: V<a class="headerlink" href="#memory-management-glossary-v" 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="p.html#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="#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-value-object">value object</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>immutable object</em>.</p>
|
|
</div>
|
|
<p>A <em>value object</em> or <em>immutable object</em> is an <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a>
|
|
whose identity depends solely upon its value or magnitude.</p>
|
|
<p>In a typed language, the compiler can often determine at
|
|
compile time that certain types can be represented as value
|
|
objects. Usually these types are a <a class="reference internal" href="s.html#term-scalar-data-type"><em class="xref std std-term">scalar data type</em></a>
|
|
with bounded magnitude.</p>
|
|
<div class="admonition-relevance-to-memory-management admonition">
|
|
<p class="first admonition-title">Relevance to memory management</p>
|
|
<p class="last">If value objects can be identified, the compiler and the
|
|
memory manager can make certain optimizations: Value
|
|
objects can be represented as <a class="reference internal" href="i.html#term-immediate-data"><em class="xref std std-term">immediate data</em></a> to
|
|
minimize storage overhead, they can be replicated to
|
|
improve <a class="reference internal" href="l.html#term-locality-of-reference"><em class="xref std std-term">locality</em></a>, and a
|
|
<a class="reference internal" href="#term-vector-data-type"><em class="xref std std-term">vector data type</em></a> of value objects can be
|
|
represented as a <a class="reference internal" href="l.html#term-leaf-object"><em class="xref std std-term">leaf object</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-historical-note admonition">
|
|
<p class="first admonition-title">Historical note</p>
|
|
<p class="last">Some programming languages expose representational details
|
|
such as the use of value objects. In <a class="reference internal" href="../mmref/lang.html#term-lisp"><em class="xref std std-term">Lisp</em></a>, for
|
|
example, numbers are often represented as value objects
|
|
but not always as immediate data. The <tt class="docutils literal"><span class="pre">EQ</span></tt> predicate of
|
|
Lisp tests if two objects have the same representation,
|
|
whereas the <tt class="docutils literal"><span class="pre">EQL</span></tt> predicate tests if two objects
|
|
represent the same type and value (are computationally
|
|
identical). Because the choice of representation is an
|
|
optimization, exposing it at the language level can
|
|
cause programs to behave differently under different
|
|
compilers or optimization settings. Modern languages, such
|
|
as <a class="reference internal" href="../mmref/lang.html#term-dylan"><em class="xref std std-term">Dylan</em></a> hide this representational distinction,
|
|
permitting the compiler greater freedom in optimization.</p>
|
|
</div>
|
|
<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-immediate-data"><em class="xref std std-term">immediate data</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="i.html#term-immutable"><em class="xref std std-term">immutable</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-related-publication last admonition">
|
|
<p class="first admonition-title">Related publication</p>
|
|
<p class="last"><a class="reference internal" href="../mmref/bib.html#baker93a"><em>Baker (1993a)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-variety">variety</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">A behaviour of the MPS that must be selected at
|
|
compilation time. There are three varieties: <a class="reference internal" href="c.html#term-cool"><em class="xref std std-term">cool</em></a>,
|
|
<a class="reference internal" href="h.html#term-hot"><em class="xref std std-term">hot</em></a> and <a class="reference internal" href="r.html#term-rash"><em class="xref std std-term">rash</em></a>. See <a class="reference internal" href="../guide/build.html#guide-build"><em>Building the Memory Pool System</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-vector-data-type">vector data type</dt>
|
|
<dd><p class="first">A vector data type is an aggregate type of more than one
|
|
dimension whose objects have a value for each dimension, where
|
|
each dimension is of the same type.</p>
|
|
<p>Examples of vector data types include: strings, arrays, and
|
|
lists.</p>
|
|
<div class="admonition-relevance-to-memory-management admonition">
|
|
<p class="first admonition-title">Relevance to memory management</p>
|
|
<p class="last">Vector data types are seldom represented using
|
|
<a class="reference internal" href="#term-value-object"><em class="xref std std-term">value objects</em></a>, but may be
|
|
represented using <a class="reference internal" href="l.html#term-leaf-object"><em class="xref std std-term">leaf objects</em></a> if
|
|
they are an aggregate of a type that can be represented by
|
|
<a class="reference internal" href="#term-value-object"><em class="xref std std-term">value objects</em></a>. <a class="reference internal" href="s.html#term-scan"><em class="xref std std-term">Scanning</em></a> information for vectors can be compactly encoded
|
|
in terms of the aggregated type and the vector dimension.</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-scalar-data-type"><em class="xref std std-term">scalar data type</em></a>, <a class="reference internal" href="a.html#term-algebraic-data-type"><em class="xref std std-term">algebraic data type</em></a>, <a class="reference internal" href="#term-value-object"><em class="xref std std-term">value object</em></a>, <a class="reference internal" href="l.html#term-leaf-object"><em class="xref std std-term">leaf object</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-virtual-address">virtual address</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>logical address</em>.</p>
|
|
</div>
|
|
<p>In a <a class="reference internal" href="#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> system, the <a class="reference internal" href="a.html#term-address"><em class="xref std std-term">addresses</em></a> that
|
|
application programs deal with are known as <em>virtual
|
|
addresses</em>.</p>
|
|
<p>The virtual addresses used by the application program are
|
|
translated by the virtual memory system (often using
|
|
<a class="reference internal" href="t.html#term-translation-lookaside-buffer"><em class="xref std std-term">translation lookaside buffers</em></a> and <a class="reference internal" href="p.html#term-page-table"><em class="xref std std-term">page tables</em></a>)
|
|
to <a class="reference internal" href="p.html#term-physical-address"><em class="xref std std-term">physical addresses</em></a>. It is the physical address that
|
|
is used to retrieve the contents from the <a class="reference internal" href="m.html#term-memory-3"><em class="xref std std-term">memory<sup>(3)</sup></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="p.html#term-physical-address"><em class="xref std std-term">physical address</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-virtual-address-space">virtual address space</dt>
|
|
<dd><p class="first">The virtual <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-virtual-address"><em class="xref std std-term">virtual addresses</em></a>.</p>
|
|
<p>On <a class="reference internal" href="#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a> systems, user processes see the
|
|
virtual address space, and commonly have a separate virtual
|
|
address space each, so that they map the same addresses to
|
|
different data. These systems often have <a class="reference internal" href="s.html#term-shared-memory"><em class="xref std std-term">shared memory</em></a>
|
|
as well.</p>
|
|
<div class="admonition-opposite-term last admonition">
|
|
<p class="first admonition-title">Opposite term</p>
|
|
<p class="last"><a class="reference internal" href="p.html#term-physical-address-space"><em class="xref std std-term">physical address space</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-virtual-memory">virtual memory</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>VM</em>.</p>
|
|
</div>
|
|
<p>In a <em>virtual memory</em> (<em>VM</em>) system, the program code deals
|
|
with <a class="reference internal" href="#term-virtual-address"><em class="xref std std-term">virtual addresses</em></a>. Upon use,
|
|
the virtual address is translated by the <a class="reference internal" href="m.html#term-mmu"><em class="xref std std-term">MMU</em></a> to obtain
|
|
a <a class="reference internal" href="p.html#term-physical-address"><em class="xref std std-term">physical address</em></a> that is used to access
|
|
<a class="reference internal" href="p.html#term-physical-memory-1"><em class="xref std std-term">physical memory<sup>(1)</sup></em></a>.</p>
|
|
<p>Some operating systems can simulate having more <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> than is available as <a class="reference internal" href="m.html#term-main-memory"><em class="xref std std-term">main memory</em></a>, by storing part
|
|
of the data in <a class="reference internal" href="b.html#term-backing-store"><em class="xref std std-term">backing store</em></a>, typically on disk. If
|
|
the <a class="reference internal" href="p.html#term-page"><em class="xref std std-term">page</em></a> referenced by the virtual address is not
|
|
currently in main memory, a <a class="reference internal" href="p.html#term-page-fault"><em class="xref std std-term">page fault</em></a> occurs,
|
|
triggering an operating system handler that <a class="reference internal" href="s.html#term-swapped-in"><em class="xref std std-term">swaps in</em></a> the page. Some other page might be
|
|
<a class="reference internal" href="s.html#term-swapped-out"><em class="xref std std-term">swapped out</em></a> to make room.</p>
|
|
<p>Each process typically has its own separate <a class="reference internal" href="#term-virtual-address-space"><em class="xref std std-term">virtual
|
|
address space</em></a> with its own <a class="reference internal" href="m.html#term-mapping"><em class="xref std std-term">mappings</em></a> and
|
|
<a class="reference internal" href="p.html#term-protection"><em class="xref std std-term">protections</em></a>.</p>
|
|
<div class="figure align-center">
|
|
<img alt="Diagram: Example of the relationship between the virtual address spaces of two processes, physical memory, and backing store." src="../_images/virtual-memory.svg" /><p class="caption">Example of the relationship between the virtual address
|
|
spaces of two processes, physical memory, and backing
|
|
store.</p>
|
|
</div>
|
|
<p>Virtual memory technology can be used in many useful memory
|
|
management techniques, such as <a class="reference internal" href="b.html#term-barrier-1"><em class="xref std std-term">barriers<sup>(1)</sup></em></a>,
|
|
copy-on-write, and <a class="reference internal" href="m.html#term-memory-mapping"><em class="xref std std-term">memory mapping</em></a>.</p>
|
|
<blockquote>
|
|
<div>“Virtual” means never knowing where your next byte is
|
|
coming from. — <tt class="docutils literal"><span class="pre">fortune(6)</span></tt></div></blockquote>
|
|
<div class="admonition-opposite-term admonition">
|
|
<p class="first admonition-title">Opposite term</p>
|
|
<p class="last"><a class="reference internal" href="r.html#term-real-memory-1"><em class="xref std std-term">real memory<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="p.html#term-paging"><em class="xref std std-term">paging</em></a>, <a class="reference internal" href="p.html#term-paged-in"><em class="xref std std-term">paged in</em></a>, <a class="reference internal" href="p.html#term-paged-out"><em class="xref std std-term">paged out</em></a>, <a class="reference internal" href="s.html#term-swapping"><em class="xref std std-term">swapping</em></a>, <a class="reference internal" href="s.html#term-swap-space"><em class="xref std std-term">swap space</em></a>, <a class="reference internal" href="m.html#term-mapped"><em class="xref std std-term">mapped</em></a>, <a class="reference internal" href="r.html#term-reserved"><em class="xref std std-term">reserved</em></a>, <a class="reference internal" href="u.html#term-unmapped"><em class="xref std std-term">unmapped</em></a>, <a class="reference internal" href="s.html#term-shared-memory"><em class="xref std std-term">shared memory</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-virtual-memory-arena">virtual memory arena</dt>
|
|
<dd><div class="admonition-in-the-mps first last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">An <a class="reference internal" href="a.html#term-arena-class"><em class="xref std std-term">arena class</em></a> which gets its <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a>
|
|
from the operating system’s <a class="reference internal" href="#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a>
|
|
interface. See <a class="reference internal" href="../topic/arena.html#topic-arena-vm"><em>Virtual memory arenas</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-visitor-function">visitor function</dt>
|
|
<dd><div class="admonition-see first last admonition">
|
|
<p class="first admonition-title">See</p>
|
|
<p class="last"><a class="reference internal" href="s.html#term-stepper-function"><em class="xref std std-term">stepper function</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-vm-1">VM<sup>(1)</sup></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-virtual-memory"><em class="xref std std-term">virtual memory</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-vm-2">VM<sup>(2)</sup></dt>
|
|
<dd><p class="first">In the <a class="reference internal" href="../mmref/lang.html#term-postscript"><em class="xref std std-term">PostScript</em></a> language, <em>VM</em> is the <a class="reference internal" href="m.html#term-memory-1"><em class="xref std std-term">memory<sup>(1)</sup></em></a> where the values of the <a class="reference internal" href="c.html#term-composite-object"><em class="xref std std-term">composite objects</em></a> reside.</p>
|
|
<p class="last">VM is short for “virtual memory”, but this has nothing to do
|
|
with the usual sense of the phrase (see <a class="reference internal" href="#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a>).</p>
|
|
</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="u.html"
|
|
title="previous chapter">Memory Management Glossary: U</a></p>
|
|
<h4>Next topic</h4>
|
|
<p class="topless"><a href="w.html"
|
|
title="next chapter">Memory Management Glossary: W</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="w.html" title="Memory Management Glossary: W"
|
|
>next</a> |</li>
|
|
<li class="right" >
|
|
<a href="u.html" title="Memory Management Glossary: U"
|
|
>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> |