DOS minnehåndtering

DOS minnehåndtering er en betegnelse på minnehåndteringen i operativsystemet DOS. Den kjennetegnes av reell modus (engelsk: «real-mode») adressering.


== Konvensjonelt minne ==
Konvensjonelt minne, også kalt baseminne, er de første 640 kilobyte av minne på IBM PC eller kompatible systemer.
Tidlige intel prosessorer slik som Intel 8086 hadde en adressebuss på 20 bit, noe som kan adressere direkte opp til en megabyte (220 byte). Grensen på 640 kilobyte ble valgt vilkårlig av Microsoft for MS-DOS, hvor minnet under denne grensen ble bruk av operativsystemet og applikasjonsprogrammer.


== Øvre minneområder ==
Øvre minneområder refererer til to minneområder som er tilgjengelig i reell modus, henholdsvis:

Upper Memory Area (UMA) - området mellom 640 kb og 1 Mb. Dette området ble benyttet av BIOS rutiner og utvidelseskort for ISA arkitekturen.
High Memory Area (HMA) - et lite område over 1 Mb som er 64 Kb minus 16 byte stort. Området krever minimum en Intel 80286 prosessor og aktivering av A20 linjen for å kunne benyttes.


== Utvidet minne ==
Utvidet minne refererer til dataminne over den første megabyte av adresseområde i en IBM PC eller kompatible datamaskiner.
Før 24 biters prosessorer kom på markedet var ekstra minne tilgjengelig i form av utvidelseskort som benyttet seg av «bank switching» for å gjøre ekstra minne i form av en 64 kb blokk tilgjengelig i UMA området. Programmer kunne benytte dette minnet ved hjelp av en utstyrsdriver for Expanded Memory Specification (EMS).
Senere kom også intel prosessorer som støttet 24 biters adressebuss som kunne nyttiggjøre seg av 16 megabyte (224 byte) minne, men dette forutsatte bruk av beskyttet modus for å kunne nyttiggjøre seg av. Den aktuelle teknologien ble kalt eXtended Memory Specification (XMS). Dette APIet er implementert av en utstyrsdriver (slik som HIMEM.SYS) som  kopierer 64 kb minneblokker mellom konvensjonelt minne og utvidet minne, ved å midlertidig svitsje mikroprosessoren inn i beskyttet modus.
Microsoft Windows er et operativsystem som kjører i beskyttet modus fra og med intel 80286 prosessorer og behøver derfor ikke en utstyrsdriver som HIMEM.SYS for å benytte det utvidete minnet, men kan adressere det direkte. Det var imidlertid ikke mulig å kjøre DOS-programmer under Windows på en intel 80286 eller eldre.
Etter at 32 biters prosessorer som Intel 80386 kom på markedet, kunne også operativsystemer benytte seg av virtuell 8086 modus, noe som effektiviserte minnehåndtering. Fra og med Windows 3.0, kunne Windows også tilby utvidet minne til DOS-programmer som kjører i virtuell 8086 modus, en finesse som ble betydelig forbedret med Windows 95 (Win32 APIet). For DOS sin del kom det minnehåndterings-programvare i form av EMM386 og QEMM som kunne emulere den eldre EMS teknologien på en effektiv måte, ved hjelp av prosessorens minnehåndterings-enhet (engelsk: memory-mapping unit (MMU)). Begge benyttet seg av forbedret minnehåndtering for å flytte utstyrsdrivere ut av konvensjonelt minne og frigjøre plass for vanlige DOS-programmer.


== Utfasing ==
Etterhvert som prisene på minne raskt gikk nedover, ble denne formen for minnehåndtering en begrensning i bruken av større minnekapasiteter, inntil introduksjonen av 32 biters operativsystemer og mikroprosessorer som gjorde minnehåndteringen irrelevant. Vendepunktet kom med introduksjonen av Windows 95 som i stor grad benyttet sine egne 32 biters utstyrsdrivere og som stort sett kun benyttet MS-DOS for oppstart. Andre operativsystemer som Linux som ble lansert i 1991, støttet utelukkende beskyttet modus.


== Se også ==
Minnehåndtering
RAM