Geheugenbeheer onder DOS en Windows

Beoordeling 6.6
Foto van een scholier
  • Werkstuk door een scholier
  • Klas onbekend | 2192 woorden
  • 31 juli 2001
  • 63 keer beoordeeld
  • Cijfer 6.6
  • 63 keer beoordeeld

Taal
Nederlands
Vak
De inleiding:

In het begin van het PC tijdperk had men het gevoel dat er een gigantische hoeveelheid geheugen in zat. Dit was echter niet het geval, vrijwel al het geheugen in de PC is vergroot en er zijn zelfs nieuwe doeleinden van geheugen gevonden (zoals cache etc.). Ik ga het in mijn verslag hebben over het geheugenbeheer onder de belangrijkste besturingssystemen. Ik heb dit gekozen omdat ik al veel van geheugenbeheer weet en dat ik er eventueel nog meer over wil leren.

Geheugenbeheer onder Microsoft Dos:

Het geheugen beheer onder MS-DOS was er het eerste, de eerste versies van MS-DOS waren speciaal gemaakt om maximaal 1 MB te kunnen adresseren, om compatibiliteit te houden moesten er speciale stuurprogramma’ s gemaakt worden om het geheugen aan te kunnen sturen. Want die 1 MB van de XT (20 bits adresbus) was nogal weinig, toen de 286 kwam werd dit 16 MB (24 bits adresbus) en bij de 386 4 GB (32 bits adresbus). De afspraken over de geheugenstandaard(en) zijn gemaakt door Lotus, INDEEL, Microsoft en AST Research. Om toegang tot het HMA te krijgen moet de A20 Line in geschakeld worden, de A20 Line is de 21ste adres lijn van de 80x86 CPU.


EMM386.EXE:

EMM386.EXE biedt toegang tot de Upper Memory Area en gebruikt extended geheugen om expanded geheugen te simuleren. Dit is nodig voor MS-DOS-programma’ s die expanded geheugen vereisen. Het stuurprogramma EMM386.EXE moet worden geladen door middel van een device - opdracht in CONFIG.SYS. EMM386 maakt het ook mogelijk programma’ s en stuurprogramma in Upper Memory Blocks (UMB’ s) te laden.

Expanded memory in Microsoft DOS gebruiken:

Om het expanded memory in DOS te kunnen gebruiken moet er in de CONFIG.SYS een device opdracht toegevoegd worden die EMM386.EXE in het geheugen laad. Met de schakeloptie min= kan met de minimale hoeveelheid EMS/ VCPI-geheugen (uitgedrukt in Kilobytes) die EMM 386 zal aanbieden ingesteld worden, indien die hoeveelheid beschikbaar is. Standaard is dit 256 en met het de schakeloptie NOEMS is dit 0. Met de schakeloptie mx kan men het adres van het page - frame geven. Hierbij moeten de waarden tussen de 1 en 14 zitten. De schakeloptie frame = adres kan men een specifiek segmentadres voor het page - frame opgeven. Voor dat adres moet men een waarde geven wat tussen de 8000h en de 9000h ligt of dat tussen de C000h en E000h ligt. Om een specifieke page een segmentadres te kunnen geven moet men de schakeloptie pn = adres geven waarbij n het nummer van de page is (moet tussen 0 en 255 liggen) en adres moet zich bevinden tussen 8000h en 9C00h of tussen C000h en EC00h. I = mmmm - nnnn geeft een geheugen adres wat gebruikt kan worden voor EMS of UMB’ s. Hierbij moeten de waarden tussen de A000h en FFFFh zitten en moet worden afgerond naar beneden naar een veelvoud van 4 Kb. Als het samen met de schakeloptie x wordt gebruikt heeft x voorrang. Voor het specificeren van het laagste segmentadres dat beschikbaar is voor EMS -banking (het wisselen van 16 Kb pages) moet men b = adres opgeven waar de geldige waarden zich bevinden tussen de 1000h en 4000h, EMM386.EXE gebruikt standaard 4000h.

Met L = minXMS kan men ervoor zorgen dat er een opgeven hoeveelheid extended geheugen (uitgedrukt in Kb) na het laden van EMM386.EXE nog over. Natuurlijk is dit standaard 0. Speciaal voor multitasking kan EMM386.EXE een aantal snelle alternatieve registersets extra gebruiken, dit kost wel echter wat geheugen (200 bytes / registerset) dit kan men doen met de schakeloptie a = altregs waarbij altregs een waarde moet hebben dat tussen de 0 en de 254 ligt, standaard word hier 0 gebruikt. Om in te stellen hoeveel handels EMM386.EXE gaat gebruiken moet men de schakeloptie h = handels opgeven, geldige waarden zitten tussen de 2 en 255 en de standaardwaarde is 64. d =nnn Specificeert hoeveel geheugen (uitgedrukt in Kb) moet worden gereserveerd voor gebufferde DMA. De correcte waarde van moet overeenkomen met de grootste DMA - overdracht die zal optreden terwijl EMM386.EXE actief (waarbij de diskette - DMA buiten beschouwing word gelaten).

Om een bereik op te geven van segmentadressen dat gebuikt kan worden voor UMB’ s moet men de optie ram = mmmm - nnnn geven, als je geen bereik opgeeft gebruikt EMM386.EXE al het beschikbare adaptergeheugen om UMB’ s en een page - frame voor EMS aan te maken. Voor mensen die geen gebruik maken van EMS geheugen maar wel van het UMA (upper memory area) is de schakeloptie noems geschikt. De ondersteuning voor VCPI - toepassingen kan worden uitgeschakeld met de schakeloptie novcpi, dit moet echter altijd in combinatie met noems anders word het niet uitgeschakeld. Met de schakeloptie highscan kan je EMM386.EXE aan geven dat hij het geheugen intensiever mag gebruiken, dit betekend dat hij alle geheugen locaties gebruikt die op de optimale standaard PC vrij zijn, echter zijn er weinig computers optimaal standaard en kan het voorkomen dat EMM386.EXE een geheugen adres aanziet al vrij geheugen terwijl het in gebruik is door een stuurprogramma of iets dergelijks. Om uitgebreide informatie te krijgen bij het opstarten moet men de schakeloptie verbose meegeven, hetzelfde resultaat wordt bereik door alt ingedrukt te houden bij het opstarten. Om geheugen voor Windows te reserveren in plaats van dat het voor EMM386.EXE wordt gereserveerd moet de schakeloptie win = mmmm - nnnn meegegeven worden. Het kan handig zijn dat als een programma net niet in de UMB’ s past om EMM386.EXE er uit te halen en er het programma in te plaatsen, om dit te verzorgen moet men de schakeloptie nohi meegeven. EMM386.EXE kan ook geheugen reserveren voor shadow - RAM (omdat RAM sneller is als ROM kan het ROM geladen worden in het RAM) door rom = mmmm - nnnn aan het stuurprogramma EMM386.EXE mee te geven, waarbij mmmm en nnnn tussen de A0000h en de FFFFh moet zitten en een naar beneden afgerond veelvoud van 4 Kb. Standaard verplaatst EMM386.EXE de extended BIOS - data van het conventionele geheugen naar het upper memory, om dit te voorkomen moet men de schakeloptie nomovexbda meegeven. Indien de computer niet juist meer reageert als je op cltr + alt + delete drukt nadat EMM386.EXE is geladen kan dat verholpen worden door de schakeloptie altboot mee te geven.


Expanded memory:

Expanded memory wordt door EMM386.EXE gesimuleerd in het extended geheugen.
Opmerkingen:

Installeer altijd HIMEM.SYS vóór EMM386.EXE (dit gebeurd tegenwoordig altijd standaard) omdat EMM386.EXE expanded memory simuleert met behulp van extended memory.

Tips:

Gebruik altijd de schakeloptie noems om te kijken of je toepassingen hebt die expanded memory nodig hebben, meestal is dit namelijk niet het geval en kan de ondersteuning voor EMS uitgeschakeld worden en kunnen alle stuurprogramma’ s in de UMB’ s geladen worden. Let op! Als er geen parameters worden mee gegeven aan EMM396.EXE dan worden er geen UMB’ s gemaakt.

HIMEM.SYS:

HIMEM is een Extended Memory Manager, een programma dat er voor zorgt dat het extended memory en HMA (High Memory Area) toegankelijk is, hij zorgt er ook voor dat het geheugen niet door twee programma’s tegelijk gebruikt word.

Extended memory gebruiken in Microsoft Dos:

Om de A20 handler in of uit te schakelen in MS-DOS moet men de schakeloptie /A20CONTROL:ON|OFF meegeven waar gekozen moet word tussen ON en OFF. /CPUCLOCK:ON|OFF kan verhelpen dat de kloksnelheid verkeerd word ingesteld na het installeren van HIMEM.SYS. Als je een EISA systeem gebruikt met meer dan 16 MB geheugen dan moet je de schakeloptie /EISA meegeven om al het geheugen te benutten. HIMEM.SYS kan ook het geheugen van het HMA uitstellen tot een programma een bepaalde hoeveelheid nodig heeft, hier moet men de schakeloptie /HMAMIN = m voor gebruiken waarbij de m tussen de nul en de drie en zestig zit. Deze optie heeft geen effect als Windows in 386 protected modus draait.

Sommige programma’ s gebruiken geheugen via het int 15 systeem (software interrupt 15) dit ondersteund HIMEM.SYS ook als men de optie /INT15=xxxx meegeeft, bij de xxxx moet de hoeveelheid geheugen gegeven worden die HIMEM.SYS gaat gebruiken. Het aantal Extended Memory Block ingangen wat HIMEM.SYS gebruikt kan ingesteld worden met /NUMHANDLES = n waar de n tussen de 1 en 128 ligt. Standaard is deze waarde 32, elke Extended Memory Block ingang kost 6 bytes geheugen. Het type computer kan ook ingesteld worden met de optie /MACHINE : xxxx, waarbij xxxx een code is van het type computer. In HIMEM.SYS kan ook ingesteld worden of het shadow ram gebruikt moet worden, zie ook EMM386.EXE paragraaf Expanded memory in Microsoft Dos. Om HIMEM.SYS sneller te kunnen installeren kan de geheugentest uitgeschakeld worden met de schakeloptie /TESTMEM:ON|OFF. Ook bij HIMEM.SYS kan er uitgebreide informatie gegeven worden bij het installeren met /VERBOSE of door ALT ingedrukt te houden onder het installeren van HIMEM.SYS.

Extended memory:

Omdat het expanded memory niet echt snel was werd er een alternatief voor gezocht, extended memory. Extended memory is geheugen wat de processor bijna helemaal zelf kan aansturen. Hier voor moet de processor wel in een speciale modus geplaatst worden, de 286 protected modus. Standaard staat de processor in real modus en kan er maar 1MB geheugen geadresseerd worden. HIMEM.SYS zorgt er dus voor dat de processor in protected modus komt en dat het geheugen geadresseerd kan worden, ook zorgt hij er voor dat er geen geheugen conflicten ontstaan tussen twee programma’s.

Opmerkingen:

Laad altijd HIMEM.SYS als eerste in het geheugen.

Tips:


Geef geen parameters mee aan HIMEM.SYS als dat niet nodig is, de optimale configuratie word standaard gebruikt.
Het geheugen schematisch:

Geheugenbeheer onder Microsoft Windows:

Het geheugen beheer onder Windows is erg geavanceerd, er kunnen namelijk meerdere toepassingen tegelijk in het geheugen zitten en ook nog tegelijk werken (multitasking). Hier voor is een perfect geheugen beheer nodig. Ik ga het alleen hebben over de versies van Windows die boven de 4.0 zitten (compleet 32 bits toepassingen).

GEHEUGENBEHEER ONDER WINDOWS NT:

Windows NT gebruikt al het mogelijke geheugen om te adresseren (4GB). Hierbij geld dat alles boven de 2 GB (80000000h) gereserveerd is voor het systeem, en
Alles onder de 2 GB gereserveerd is voor het gebruik voor applicaties.

Toch is het niet nodig voor Windows NT om 4 GB geheugen te hebben, door een efficiënte 32 bits virtueel geheugen aansturing.
Het virtueel geheugen van Windows NT zorgt er voor dat er een vrijwel oneindigende toevoer aan geheugen is.
Virtual Memory Manager (VMM):

Als je kijkt naar het geheugen van Windows NT zie je dus een hele grote adressering van eigenlijk een kleine hoeveelheid geheugen. Er moet zal dus als er iets met het geheugen gebeurd veel gekopieerd / verplaatst worden. Maar het probleem met geheugen is dat je erg moeilijk kan verplaatsen / kopieren. Als je namelijk zoiets gaat doen moet er ongelofelijk veel gebeuren, eerst moet het blok geheugen verplaatst worden naar een buffer, dan moet al het geheugen verschoven worden om de lege ruimte te kunnen vullen, vervolgens moet er weer verschoven worden om de buffer neer te kunnen zetten op een bepaalde locatie. Je kan je voorstellen dat dit erg veel tijd en geheugen kost, natuurlijk word dit systeem niet gebruikt. In Windows NT worden alleen de geheugenadresseringen gewijzigd, dit systeem werkt erg goed omdat alle programma’ s pointer georiënteerd zijn in Windows NT. Al het geheugen in Windows NT is verdeeld in pages die 4096 bytes groot zijn.

Page Directory (PDE), Page Tables (PTE) en Page Frames:

Een page in Windows NT wordt geadresseerd in de PTE, hierin staan alle verwijzingen naar de page frames van Windows NT.
Virtueel geheugen:

Er wordt steeds meer geheugen vereis voor programma’ s en meestal word het grootste deel er niet of slecht gebruikt, er is een oplossing voor bedacht, virtueel geheugen. Virtueel geheugen is geheugen dat op de harde schijf staat en wat het interne geheugen aanvult. In het gunstigste geval staan er in het virtuele geheugen pages die een langere tijd niet gebruikt zijn. Zodat de pages die het meest gebruikt worden in het snelle interne geheugen staan. Als deze pages weer nodig zijn worden ze weer terug gezet naar het interne geheugen.

Conclusie:

Er zijn vele soorten geheugenbeheer, de manier waarop Windows 4.x dit doet is de meest geavanceerde manier. Virtueel geheugen is niet alleen een nood oplossing maar ook een manier om vervuild geheugen weg te kunnen werken.

Slotopmerking:

Er zou eigenlijk een nieuw soort computer moeten komen die maar één soort geheugen heeft die altijd zonder stuurprogramma aan te sturen is en perfect aansluit op een multitasking systeem.
Literatuur:

GEBRUIKTE SOFTWARE:

Microsoft help.com voor MS-DOS 5.0
Microsoft help.com voor MS-DOS 6.0
Microsoft help.com voor MS-DOS 6.2
Microsoft help.com voor MS-DOS 6.22
Digitale help documentatie van Microsoft Windows 3.1
Digitale help documentatie van Microsoft Windows 3.11
Digitale help documentatie van Microsoft Windows 95 OSR 0
Digitale help documentatie van Microsoft Windows 95 OSR A
Digitale help documentatie van Microsoft Windows 95 OSR B
Digitale help documentatie van Microsoft Windows 95 OSR B2
Digitale help documentatie van Microsoft Windows 98
Microsoft knowledge base

GEBRUIKTE BOEKEN:

Microsoft handboek van MS-DOS 5.0
Microsoft handboek van MS-DOS 6.2
Microsoft handboek van Microsoft Windows 95 OSR 0
Microsoft handboek van Microsoft Windows 95 OSR B
Microsoft Resource Kit Windows ’95

GEBRUIKTE SITES:

Microsoft development base: www.msdn.com
Wotsits format: www.wotsit.org

REACTIES

Log in om een reactie te plaatsen of maak een profiel aan.

B.

B.

goed werkstuk! bedankt voor de informatie!

19 jaar geleden