Øvre minneområde - Upper memory area

Det øvre minneområdet ligger mellom 640 KB og 1024 KB.

I DOS- minneadministrasjon refererer det øvre minneområdet ( UMA ) til minne mellom adressene 640  KB og 1024 KB ( 0x A0000–0xFFFFF) på en IBM-PC eller kompatibel. IBM reserverte de øverste 384 kB av 8088- prosessorens 1024 kB adresseplass for BIOS ROM , Video BIOS , Option ROM , video RAM, RAM på periferiutstyr, minnekartet I / O og foreldet ROM BASIC .

Imidlertid, selv med video-RAM, ROM BIOS , Video BIOS , Option ROM og I / O-porter for periferiutstyr, var mye av dette 384 kB adresseplassen ubrukt. Da 640 KB minnebegrensning ble stadig mer av et hinder, ble det funnet teknikker for å fylle de tomme områdene med RAM. Disse områdene ble referert til som øvre minneblokker ( UMB ).

Bruk

Det neste trinn i utviklingen av DOS var for operativsystemet å bruke øvre minneblokker (UMBs) og høy lagerområde (HMA). Dette skjedde med utgivelsen av DR DOS 5.0 i 1990. DR DOS 'innebygde minnebehandler, EMM386.EXE , kunne utføre det meste av den grunnleggende funksjonaliteten til QEMM og sammenlignbare programmer.

Fordelen med DR DOS 5.0 over kombinasjonen av en eldre DOS pluss QEMM var at selve DR DOS-kjernen og nesten alle datastrukturene kunne lastes inn i høyt minne. Dette etterlot praktisk talt alt baseminnet ledig, og tillot konfigurasjoner med opptil 620 kB av 640 kB gratis.

Konfigurasjonen var ikke automatisk - gratis UMB-er måtte identifiseres for hånd, manuelt inkludert i linjen som lastet EMM386 fra CONFIG.SYS , og deretter måtte drivere og så videre lastes inn manuelt i UMB-er fra CONFIG.SYS og AUTOEXEC.BAT . Denne konfigurasjonen var ikke en triviell prosess. Siden det i stor grad ble automatisert av installasjonsprogrammet til QEMM, overlevde dette programmet på markedet; faktisk, det fungerte bra med DR DOS 'egen HMA- og UMB-støtte og fortsatte å være et av de mest solgte verktøyene for PC-en.

Denne funksjonaliteten ble kopiert av Microsoft med utgivelsen av MS-DOS 5.0 i juni 1991. Til slutt ble enda flere DOS-datastrukturer flyttet ut av konvensjonelt minne, slik at opptil 631 KB ut av 640 KB kunne stå fri. Fra og med versjon 6.0 av MS-DOS inkluderte Microsoft til og med et program kalt MEMMAKER som ble brukt til å automatisk optimalisere konvensjonelt minne ved å flytte TSR-programmer til det øvre minnet.

I en periode på begynnelsen av 1990-tallet ble manuell optimalisering av DOS-minnekartet en høyt verdsatt ferdighet, slik at de største applikasjonene kunne kjøre på selv de mest komplekse PC-konfigurasjonene. Teknikken var å først lage så mange UMB-er som mulig, inkludert kartlegging av tildelte men ubrukte blokker av minne, for eksempel det monokrome visningsområdet på fargemaskiner. Deretter måtte DOS 'mange underkomponenter lastes inn i disse UMB-ene i riktig rekkefølge for å bruke minneblokkene så effektivt som mulig. Noen TSR- programmer krevde ekstra minne under lasting, noe som ble frigjort igjen når lastingen var fullført. Heldigvis var det få avhengigheter blant disse modulene, så det var mulig å laste dem i nesten hvilken som helst sekvens. Unntak var at for å lykkes med å cache CD-ROM-er, måtte de fleste disk-cacher lastes inn etter eventuelle CD-ROM-drivere, og at modulene til de fleste nettverksstabler måtte lastes i en bestemt sekvens, og i hovedsak fungerte progressivt opp gjennom lagene OSI-modell .

En grunnleggende, men effektiv metode som ble brukt for å optimalisere konvensjonelt minne, var å laste HIMEM.SYS som en enhet, og deretter laste EMM386.EXE som en enhet med alternativet "RAM AUTO" som gir tilgang til UMA ved å laste inn enhetsdrivere som enhetshøye. Denne metoden laster effektivt de grunnleggende minnebehandlerne inn i konvensjonelt minne, og deretter alt annet inn i UMA. Konvensjonelle minnefruktprogrammer som MSCDEX kan også lastes inn i UMA på lignende måte, og frigjør dermed en stor mengde konvensjonelt minne.

Windows

Den økende populariteten til Windows 3.0 gjorde nødvendigheten av det øvre minneområdet mindre relevant, ettersom Windows-applikasjoner ikke ble direkte påvirket av DOS 'baseminnegrenser, men DOS-programmer som kjørte under Windows (med Windows selv som en multitasking manager) var fremdeles dermed begrenset. Med utgivelsen av Windows 95 ble det fortsatt mindre relevant, siden denne versjonen av Windows gir mye av funksjonaliteten til DOS-enhetsdriverne til DOS-applikasjoner som kjører under Windows, for eksempel støtte for CD, nettverk og lyd; minnekartet til Windows 95 DOS-bokser ble automatisk optimalisert. Imidlertid kan ikke alle DOS-programmer kjøres i dette miljøet. Spesielt programmer som prøvde å bytte direkte fra ekte modus til beskyttet modus, ville ikke fungere da dette ikke var tillatt i den virtuelle 8086-modusen den kjørte i. Dette punktet blir nå adressert av x86 virtualiseringsteknologier som Intel VT-x (Vanderpool ) og AMD-V (Pacifica). Også programmer som prøvde å gjøre bryteren ved hjelp av Virtual Control Program Interface (VCPI) API (som ble introdusert for å tillate DOS-programmer som trengte beskyttet modus å gå inn i den fra den virtuelle 8086-modusen som ble satt opp av en minnebehandler, som beskrevet ovenfor), gjorde ikke fungerer ikke i Windows 95. Bare DOS Protected Mode Interface (DPMI) API for bytte til beskyttet modus ble støttet.

Gjennomføring

Virtuell 8086-modus

Øvre minneblokker kan opprettes ved å kartlegge utvidet minne i det øvre minneområdet når du kjører i virtuell 8086-modus . Dette ligner på hvordan utvidet minne kan emuleres ved hjelp av utvidet minne, så denne metoden for å tilveiebringe øvre minneblokker blir vanligvis levert av utvidet minnebehandler (for eksempel EMM386 ). Den programmeringsgrensesnitt for å administrere de øvre minneblokker er spesifisert i utvidet minne spesifikasjon .

Shadow RAM

På mange systemer, inkludert moderne, er det mulig å bruke minne som er reservert for skygging av utvidelseskort-ROM som øvre minne. Mange brikkesett reserverer opptil 384 KB RAM for dette formålet, og siden denne RAM vanligvis ikke er brukt, kan den brukes som øvre minne i ekte modus med en tilpasset enhetsdriver, for eksempel UMBPCI.

IBM XT

IBM XT- datamaskiner var det mulig å legge til mer minne på hovedkortet og bruke en tilpasset adressedekoder PROM for å få det til å vises i det øvre minneområdet. Som med det 386-baserte øvre minnet som er beskrevet ovenfor, kan ekstra RAM brukes til å laste inn TSR-filer, eller som en RAM-disk .

Den AllCard , en add-on minne forvaltningsenheten for XT-klassen datamaskiner, tillot normal minne til å bli kartlagt i 0xA0000-EFFFF adresseområde, noe som gir opp til 952 KB for DOS-programmer. Programmer som Lotus 1-2-3 , som fikk direkte tilgang til videominnet, måtte oppdateres for å håndtere dette minneoppsettet. Derfor ble 640 KB-barrieren fjernet på bekostning av programvarekompatibilitet. Denne bruken av det øvre minneområdet er forskjellig fra å bruke øvre minneblokker, som ble brukt til å frigjøre konvensjonelt minne ved å flytte enhetsdrivere og TSR-er inn i de øvre 384 kB av 1  MB adresseplass, men etterlot mengden adresserbart minne (640 kB ) intakt.

Se også

Referanser