1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-15 07:41:09 -08:00
emacs/mps/manual/html/glossary/v.html
Gareth Rees 06057a4d52 Bring html up to date.
Copied from Perforce
 Change: 181168
 ServerID: perforce.ravenbrook.com
2013-03-18 15:13:54 +00:00

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 &mdash; 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> &raquo;</li>
<li><a href="index.html" accesskey="U">Memory Management Glossary</a> &raquo;</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>&#8220;Virtual&#8221; means never knowing where your next byte is
coming from. &#8212; <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&#8217;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 &#8220;virtual memory&#8221;, 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&amp;view=status%3dopen&amp;display=Job:Priority:Title&amp;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> &raquo;</li>
<li><a href="index.html" >Memory Management Glossary</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; <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>