Achtergrondartikel over virtueel geheugen

Nadat je laatst een brede guide over Windows's geheugenbeheer kon lezen, kan je je herseninhoud nu aanvullen met nog gedetailleerdere informatie over de precieze werking van het virtuele geheugen. In het gespecialiseerde artikel wordt niet zoveel aandacht besteed aan het bekende oppervlakkige verhaaltje over hoe je het instelt, maar wordt de techniek erachter belicht. Address translation, prepaging, vervangingsalgorithmen en nog veel meer andere zaken komen aan de orde. Een must-read voor iedereen die alles wil weten:

Gone are the good ol' days (well, some may call them good) when your grandfather had to walk to and from school in the snow...uphill...both ways, when 5 and 10 cent stores were really 5 and 10 cents and when all of your programs fit into your "huge" 640KB of RAM. Today, operating systems and applications occupy space in excess of 200MB+! With the relatively substantial cost of system RAM and most systems being limited to 64MB to 128MB, how does it all fit in memory? Well, it doesn't. Rather, applications and OS functions are called from external storage devices (such as a hard disk drive) to system RAM for processing through using something dubbed as "virtual memory".

[...] So how does the logical address get converted to the actual physical address of system memory? The physical memory is broken down into blocks called frames. Logical memory is also broken down into blocks called pages. The page size as well as frame size is defined by the hardware. Each CPU utilizes different page and frame sizes. All numbers discussed henceforth are used for the sake of argument so that you get a general idea of how the paging process works (32-bit memory addressing will be used in these explanations). Logical memory is mapped to the physical memory by use of page directories and through page tables.

Jeroen02, erg bedankt voor de tip.

Door Mark Timmer

11-10-2000 • 20:55

18

Bron: PCinside

Reacties (18)

18
15
10
7
0
2
Wijzig sortering
Mja, best aardig geblaat, maar om nou te zeggen dat ze er echt verstand van hebben... nee.

Ze halen bijvoorbeeld continu logical, linear en physical memory door elkaar...

quote 1:
In paging the following "types" of memory are there.
- Logical memory, and
- Physical (or linear) memory
quote 2:
32-bit logical (or linear) address
Wel, dat klopt uiteraard niet. Het zijn drie verschillende dingen, en geen van de drie soorten is synoniem aan een andere...
Wat ze bedoelen is:

Physical memory: je gebeugen modules..

Logical memory: In real-mode of ze bedoelen pages

32bit logicaL: protected mode geheugen. Hier kan je doen als of je 1 groot blok geheugen toe spreekt, terwijl dat niet zo hoeft te zijn
Jouw toelichting rammelt nog meer dan die van PCinside... ;)
Voor de mensen die geinteresseerd zijn in een echt goed artikel over swappen en de interne werking van VM, wil ik graag wijzen naar een artikel in de Januari editie van Daemon News:

www.daemonnews.org/200001/freebsd_vm.html

Matthew Dillon legt hierin in (redelijk) begrijpbare termen de werking van het nieuwe VM systeem van FreeBSD uit.
Hmmm, virtueel geheugen ruikt naar M$. Het liefst zet ik het uit, alleen kan je in de problemen komen als je RAM dan echt helemaal vol zit. (ik heb maar 256mb). Bij bijvoorbeeld de meeste Mac's die ik heb gezien (en waar op gewerkt wordt) staat virtueel geheugen(of hoe dat heet bij de mac) gewoon uit. Ze zijn dan simpelweg VEEL sneller.
Leuk dat je harde schijf gebruikt wordt als extra ram. Maar het wordt er allemaal niet sneller van.
Xi.
Als jij in Windows jouw pagefile niet gebruikt (wat jij waarschijnlijk bedoelt met het 'uitzetten van virtual memory') dan werkt jouw PC nog steeds gewoon met virtual memory hoor; je mem wordt nog steeds in frames gesplitst, en je logisch geheugen nog steeds in pages, ook al is je totale logische mem <= fysieke geheugen. Jouw CPU mapt nog steeds pages naar frames; dat doet ie namelijk _altijd_ (ja OK, in DOS niet... ;), maar in protected mode wel)
Wat jij dus doet is disk-swapping minimaliseren, maar Windows werkt nu eenmaal altijd met virtueel geheugen. Het is namelijk ook nog handig voor andere dingen dan alleen om meer programma's in minder RAM te krijgen (programma's kunnen bijv makkelijk over het fysieke RAM verspreid raken en toch blijft alles strak werken. Zonder virtual memory zou dat niet goed gaan)
Pfff.... wat een lap tekst zeg :)
Nee, dat is niet zo. Virtueel geheugen (de naam zegt het al) is geheugen dat geen echt geheugen is -> swapfile enz.
Windows gebruikt wél altijd paginering ja, maar dat is dus niet hetzelfde. :)
Jouw CPU mapt nog steeds pages naar frames; dat doet ie namelijk _altijd_
Neuh hoor, paginering kun je gewoon aan en uit zetten. Standaard staat het uit.

En pages worden niet naar frames (wat PCinside met die kreet bedoelt is mij volslagen duister) gemapt ofzo, na paginering komt er geen andere stap meer.
Johnwoo heeft echt gelijk, hoor. Virtueel geheugen wil zeggen dat het adresbereik dat een programma ziet een ander adresbereik dan het fysische is. Een programma ziet een lineair adresgebied, maar de pagina's kunnen in het fysische geheugen schots en scheef door elkaar staan (nou ja, je wist vast wel wat paginering is). Hierdoor kunnen er grapjes als page-swapping tussen die twee lagen geintroduceerd worden, maar dat hoeft pertinent niet. Paginering is een manier om virtueel geheugen te implementeren, pageswapping is iets dat mogelijk wordt door het zo te doen. Zo is het als in mijn tekstboek over OS architectuur staat en het klinkt verdomde logisch.
Virtueel geheugen is nep ja.

Wat betreft paging: waarom staat het altijd in die leuke foutmeldignen van windows:
IEXPLORER heeft een fatale uitzondering geaakt op module KERNEL32.DLL in pagina ...

weet niet meer hoe het zat: ik gebruik sinds eergisteren 98Lite met IE4SP2, en alles draait als een tierelier. Nog geen BSOD gehad (hiervoor hadi k win ME, die gaf andere foutmeldingen)
Een virtuele adresseringsruimte (of adresbereik zo je wilt) is iets anders dan virtueel geheugen...
Virtueel geheugen is iets dat echt niet alleen maar door MicroSoft programmatuur gebruekt wordt. De negatieve bijklank is dan ook overbodig.

Zelfs pure serversoftware van Novell gebruikt sinds versie 5 ook een swapfile.
In aanvulling op metalant wil ik zeggen dat ze virtueel geheugen er echt niet instoppen om je te pesten en het lekker traag te maken, want die indruk kreeg ik van de "ruikt naar M$" opmerking. Elk modern OS moet het gewoon hebben vanwege de multitasking. Of zou je liever hebben dat je na het openen van 2 programma's bij de derde de melding krijgt: "sorry, uw geheugen zit vol. U dient eerst een programma af te sluiten voor u nieuwe kunt openen". Dat is toch belachelijk. Nu wordt er gewoon data vanuit het RAM naar de harddisk gezet, zodat het nieuwe programma dat je opende weer over RAM kan beschikken.

En je hoeft ook niet bang te zijn dat wanneer virtual memory "aan staat" maar je het niet nodig hebt omdat je voldoende ram hebt voor de applicaties die je open hebt het systeem trager is dan wanneer het uit staat. Ik heb een college gehad waarin virtual memory werd behandeld en met wat handige pointertechnieken wordt dat efficient geimplementeerd.
Sorry, maar wat je hier schrijft is echt grote onzin
1) als je van virtual console swapped, gaat hij niet je inactive consoles weg swappen..
2) een swappartitie of swapfile maakt qua performance bijna niets uit
3) virtueel geheugen in SLECHT in linux. FreeBSD heeft dit goed gedaan: als een process idle is, wordt zn geheugen dat hij (niet actief) gebruikt naar disk geschreven, om zo meer geheugen vrij te hebben voor actieve processen / caching. Linux gaat pas swappen als het al te laat is..

Linuxsux
Zou Security misschien de heer Heitbrink even willen verwijderen? Want dit kan niet, dit is een beschaafd partijtje :)
*kuch* www.google.com/search?q=protected+mode+tutorial *kuch*

:)

lees de bovenste link maar ofzo... kan geen kwaad :)

Op dit item kan niet meer gereageerd worden.