Adaptation/GUID-E21E7992-607A-5A49-B022-189ECA9E76D1.dita
author Graeme Price <GRAEME.PRICE@NOKIA.COM>
Fri, 15 Oct 2010 14:32:18 +0100
changeset 15 307f4279f433
permissions -rw-r--r--
Initial contribution of the Adaptation Documentation.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-E21E7992-607A-5A49-B022-189ECA9E76D1" xml:lang="en"><title>Code
Paging Overview</title><shortdesc>Overview of demand paging when applied to code paging. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<section id="GUID-254768D6-B78B-5193-8583-2F8CF57614AC"><title>Purpose</title> <p>Demand
paging is a technique where memory appears to application programs to be present
in RAM, but may in fact be stored on some external media and transparently
loaded into RAM when needed. Demand paging trades off increased available
RAM against decreased performance, increased media wear and increased power
usage. More RAM is made available by loading pages only on demand, but a cost
is incurred every time a page is loaded. </p> <p>Demand paging is used to
reduce the amount of RAM that needs to be shipped with a device and so reduce
its cost. </p> <p>For the code paging type of demand paging, the executable
is stored in a ROM. Since the memory locations that will be pointed to cannot
be determined ahead of time, the pointers in the executable have to be modified
after the page-in process. This process is known as 'relocation' and 'fix-up'.
It is usually done by loader. </p> </section>
<section id="GUID-217936E7-4F09-5291-B6C5-FF00BCE1B4BD"><title>Description</title> <p>The
executable is in a ROM and so has to be loaded into RAM before it can be executed.
When the required part of the executable is not present in RAM, then a paging
fault is generated which starts the paging in process of specifying which
part of the ROM is to be paged-in along with which RAM page is to be used. </p> <p>The
above process (in very simple terms) describes how ROM paging works. With
code paging, there is the added complication that the executable is not execute
in place (it is probably stored via the use of an operating system e.g. ROFS)
and so when it is paged in any pointers in the page will not point to any
valid location. Hence a new step has to be carried out that modifies the pointers
in the new page so that will point to meaningful locations once they are RAM.
This process is known as 'relocation' and 'fix-up'. It is usually done by
loader. </p> <p> </p> </section>
<section id="GUID-85164F03-A6B5-5227-A380-5B199C805670"><title>Components</title> <p>These
are the main components of code demand paging: </p> <ul>
<li id="GUID-FB01C6A6-A688-5A2C-85ED-9AA81550031B"><p>Rom image - The executable
is stored in a ROM. </p> </li>
<li id="GUID-1A2D6E09-4A95-5000-B526-A005AD07A2A5"><p>RAM - Where the executable
will be executed. </p> </li>
<li id="GUID-ED582DCB-2018-5E02-8B97-84D41D79F06C"><p>Paging Fault Handler
- To detect that a page-in process is required and to carry it out. </p> </li>
<li id="GUID-ECF22038-E5E2-56BC-9DDF-4EB50ADAFBBC"><p>Loader - This usually
does the 'relocation' and 'fix-up' process after the 'page-in' process. </p> </li>
</ul> </section>
<section id="GUID-A0780848-8A13-41F8-9BCD-C93B6CC7E0B8"><title>Using ROM Paging</title> <p>Which
type of paging is used and for which area of memory is first specified the <codeph>oby</codeph> and <codeph>mmp</codeph> files
and finally build by using specific parameters in the buildrom utility. </p> </section>
</conbody><related-links>
<link href="GUID-BDB847A2-557A-5902-AA6D-C1AE10D8E493.dita"><linktext>Code Paging
Guide</linktext></link>
<link href="GUID-795B8649-B6C3-5540-B52A-9B460F35A5B5.dita"><linktext>ROM Paging</linktext>
</link>
<link href="GUID-B35A70D2-1BC8-51DE-95BF-F315DB394582.dita"><linktext>Demand Paging
Overview</linktext></link>
</related-links></concept>