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.
Het werkstuk gaat verder na deze boodschap.
Verder lezen
REACTIES
:name
:name
:comment
1 seconde geleden
B.
B.
goed werkstuk! bedankt voor de informatie!
20 jaar geleden
Antwoorden