diff options
Diffstat (limited to 'help/C/memory-map-what.page.stub')
-rw-r--r-- | help/C/memory-map-what.page.stub | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/help/C/memory-map-what.page.stub b/help/C/memory-map-what.page.stub new file mode 100644 index 0000000..c808962 --- /dev/null +++ b/help/C/memory-map-what.page.stub @@ -0,0 +1,79 @@ +<page xmlns="http://projectmallard.org/1.0/" + type="topic" style="task" + id="memory-map-what"> + + <info> + <revision pkgversion="3.11" date="2014-01-28" status="candidate"/> + <link type="guide" xref="index" group="memory" /> + + <include href="legal.xml" xmlns="http://www.w3.org/2001/XInclude"/> + + <credit type="author copyright"> + <name>Phil Bull</name> + <email>philbull@gmail.com</email> + <years>2011</years> + </credit> + + <credit type="author copyright"> + <name>Michael Hill</name> + <email>mdhillca@gmail.com</email> + <years>2011, 2014</years> + </credit> + + <desc>The memory map of a process can help diagnose certain memory + issues.</desc> + </info> + + <title>What is a memory map?</title> + + <comment> + <cite date="2011-06-18" href="mailto:philbull@gmail.com">Phil Bull</cite> + <p>Difficult conceptual topic. Explain how to use memory maps to do + whatever the hell you're supposed to use them for.</p> + </comment> + + <comment> + <cite date="2014-01-28" href="mailto:kittykat3756@gmail.com">Kat</cite> + <p>TODO: check gui tags.</p> + </comment> + + <p><gui>Virtual memory</gui> is a representation of the combined + <gui>physical memory</gui> and <link xref="mem-swap">swap space</link> in a + system. It enables running processes to access <em>more</em> than the + existing physical memory by <gui>mapping</gui> locations in physical memory + to files on disk.</p> + + <p>When a program is launched, the system assigns it a unique process ID + (PID) and its <em>instructions</em> and <em>data</em> are loaded into memory + in <em>pages</em>. The page table of each process maps the correspondence + between its pages in virtual memory and their location in physical memory. + The <gui>memory map</gui> displays the total virtual memory use of the + process, and can be used to determine the memory cost of running a single or + multiple instances of the program, to ensure the use of the correct shared + libraries, to see the results of adjusting various performance tuning + parameters the program may have, or to diagnose issues such as memory + leaks.</p> + + <p>If multiple copies of a program are running, the instructions (or + <em>text</em>) of the program only need to be loaded once into physical + memory. Each time a new instance of the program is launched (as a unique + process with its own virtual memory pages), its page table maps the location + of the text in virtual memory to those instructions in the original real + memory location. In addition, any dynamic shared libraries used by the + process appear as distinct in virtual memory, but are shared references to a + single copy of the library's text segment in real memory. When accounting for + the total memory use of a process, it is important to note that the cost of + shared libraries loaded into memory can be spread across all processes + currently using them.</p> + + <p>When the system needs more pages of memory than are available, some of the + existing pages will be <em>paged out</em> or written to the <gui>swap + space</gui>. Text pages are flagged read-execute in memory and don't need to + be written to swap since they can be re-loaded from their original location + on disk. Data pages have read-write permissions, and if modified when in + memory, they are labeled <em>dirty</em>, and when designated for swapping, + must be paged out. When a page in swap space is required by a running + process, it needs to be swapped back in before use, perhaps causing another + page to be paged out.</p> + +</page> |