| virtual memory The available to a process running in a system with a (MMU). The virtual is divided into . Each output by the is split into a (virtual) number (the most significant bits) and an offset within the page (the N least significant bits). Each page thus contains 2^N (or whatever the unit of addressing is). The offset is left unchanged and the (MMU) maps the virtual page number to a page number. This is recombined with the offset to give a - a location in (). Virtual memory is usually much larger than physical memory. allows the excess to be stored on and copied to RAM as required. This makes it possible to run programs for which the total code plus data size is greater than the amount of RAM available. This is known as " virtual memory". A page is copied from disk to RAM when an attempt is made to access it and it is not already present. This paging is performed automatically by collaboration between the , the and the , and the program is unaware of it. The performance of a program will depend dramatically on how its memory access pattern interacts with the paging scheme. If accesses exhibit a lot of , i.e. each access tends to be close to previous accesses, the performance will be better than if accesses are randomly distributed over the program's thus requiring more paging. In a system, physical memory may contain pages belonging to several programs. Without , an OS would need to allocate physical memory for the whole of every active program and its data. Such a system might still use an so that each program could be located at the same and not require run-time relocation. Thus virtual addressing does not necessarily imply the existence of virtual memory. Similarly, a system might load the whole program and its data into physical memory when it is to be executed and copy it all out to disk when its expired. Such "swapping" does not imply virtual memory and is less efficient than paging. Some implement virtual memory wholly in software, by translating every virtual memory access into a file access, but efficient virtual memory requires hardware and operating system support. (2001-01-02) |