blob: 00126cc846e614076dfabec41ff3cebebebddfed [file] [log] [blame]
<html lang="en">
<head>
<title>Why Lock Pages - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Locking-Pages.html#Locking-Pages" title="Locking Pages">
<link rel="next" href="Locked-Memory-Details.html#Locked-Memory-Details" title="Locked Memory Details">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.
This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A
copy of the license is included in the section entitled "GNU Free
Documentation License".
(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual. Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Why-Lock-Pages"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Locked-Memory-Details.html#Locked-Memory-Details">Locked Memory Details</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Locking-Pages.html#Locking-Pages">Locking Pages</a>
<hr>
</div>
<h4 class="subsection">3.4.1 Why Lock Pages</h4>
<p>Because page faults cause paged out pages to be paged in transparently,
a process rarely needs to be concerned about locking pages. However,
there are two reasons people sometimes are:
<ul>
<li>Speed. A page fault is transparent only insofar as the process is not
sensitive to how long it takes to do a simple memory access. Time-critical
processes, especially realtime processes, may not be able to wait or
may not be able to tolerate variance in execution speed.
<a name="index-realtime-processing-355"></a><a name="index-speed-of-execution-356"></a>
A process that needs to lock pages for this reason probably also needs
priority among other processes for use of the CPU. See <a href="Priority.html#Priority">Priority</a>.
<p>In some cases, the programmer knows better than the system's demand
paging allocator which pages should remain in real memory to optimize
system performance. In this case, locking pages can help.
<li>Privacy. If you keep secrets in virtual memory and that virtual memory
gets paged out, that increases the chance that the secrets will get out.
If a password gets written out to disk swap space, for example, it might
still be there long after virtual and real memory have been wiped clean.
</ul>
<p>Be aware that when you lock a page, that's one fewer page frame that can
be used to back other virtual memory (by the same or other processes),
which can mean more page faults, which means the system runs more
slowly. In fact, if you lock enough memory, some programs may not be
able to run at all for lack of real memory.
</body></html>