Adaptation/GUID-E21E7992-607A-5A49-B022-189ECA9E76D1.dita
changeset 15 307f4279f433
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Adaptation/GUID-E21E7992-607A-5A49-B022-189ECA9E76D1.dita	Fri Oct 15 14:32:18 2010 +0100
@@ -0,0 +1,61 @@
+<?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>
\ No newline at end of file