 | Virtual memory is a concept of expanding the maximum addressable memory by overlaying logical addresses on to core memory and storing some on disk (page file) that are not required. Programs do this by being split up into pages. The common size of a page is 4 KB but can be larger as in Linux 2.6 where it can range from 4kb to 2mb.
Address Translation
Each process running will have a page table which will be used to map a logical address onto a physical address.
for an example imagine a 16 bit program address giving 2^16 memory. Assuming that the physical memory has been split into 16x4kb pages, the high order 4 bits of the program address will specify the page number and the low order 12 bits will specify the address within the page.
[Page ][ Index ] 4 bits 12 bits
Since not all pages need to be in memory at any one time you may have multiple programs executing at once *(not really but that's not the question is it) and requesting a page of data/instructions only when it is needed. The process of requesting and obtaining a new page is known as swapping. This paging technique also has another advantage that it reduces external fragmentation. However it still possess internal fragmentation in which a final page of a program may not use all of the 4kbs.
There is allot more detail to this than what i have covered and i would suggest a rereading of your notes a book or google. Now I'm going to get back to my KitKat if that's ok.
|
|