Högt minnesområde

High Memory Area , HMA  - den första sektionen av ytterligare minne med en kapacitet på 65520 byte (64 kilobyte minus 16 byte) med adresser från 100000 16 till 10FFEF 16 (direkt efter Upper Memory Area ), tillgängligt i verkligt läge genom de övre segmenten av adressutrymmet. Funktion för 80286 och högre processorer och IBM PC/AT -kompatibla datorer byggda på dem [1] .

Beskrivning

Minnesadressering i 8086- och 8088-processorerna är segmenterad : den fullständiga (linjära) minnesadressen ges av ett 16-bitars segmentnummer ("stycke") och en 16-bitars offset inom detta segment (båda talen skrivs vanligtvis i hexadecimal form ) och beräknas med formeln

(segment) × 16 + (offset).

(I det här fallet kan samma adress erhållas från olika segment-/offsetpar - till exempel är den fullständiga adressen 1000 16 tillgänglig som 0000:1000 och som 0100:0000 och som 0060:0A00).

Med segmentadressering är linjära adresser från 0 (0000:0000) till 10FFEF 16 (FFFF:FFFF, 1088 KB) tillgängliga. Adressbussen för 808x-processorer är dock 20-bitars och kan endast adressera 220 byte (1024 KB eller 1 MB) minne, det vill säga ett område med adresser från 0 till FFFFF 16 (0000:0000 till FFFF:000F). Adresser från 100000 16 till 10FFEF 16 (från FFFF:0010 till FFFF:FFFF) är 21-bitars, så när de används uppstår ett spill , den 21:a biten går förlorad och till exempel adress 100000 16 (FFFF:0010) pekar på samma , där och adress 0 (0000:0000).

I 80286-processorn är adressbussen 24-bitars (adresserbar 2 24 = 16 MB minne), så de svämmar inte över.

IBM PC /AT -datorer är byggda på 80286-processorn, men av kompatibilitetsskäl med IBM PC och IBM PC/XT , byggd på 808x-processorer, infördes ett logiskt element ( gate ) i dem, som kopplade bort den 21:a adressledningen (A20) ) från styrkretsminnet. Detta logiska element ( Gate A20 ( eng.  A20 line )) styrs via tangentbordskontrollern ( Intel 8042-chip ) och är aktiverat som standard.

På senare tid har drivrutinsprogram , den så kallade A20-hanteraren , utvecklats som dynamiskt hanterar adressering och tillåter applikationer som körs i verkligt läge att använda ett minnesområde mellan 1024 och 1088 KB.

MS-DOS

HMA användes första gången i Windows 2.1 1988 och A20-hanterarfunktionen utfördes av HIMEM.SYS- drivrutinen där .

1991 släpptes MS-DOS 5.0, som kunde ladda sin kärna i HMA och därigenom frigöra 46 KB huvudminne för applikationer. Efterföljande versioner av MS-DOS stöder också denna funktion. HIMEM.SYS-drivrutinen ingick i MS-DOS.

För att DOS ska kunna ladda sin kärna i HMA, måste du lägga till följande rader i filen CONFIG.SYS :

device=HIMEM.SYS dos = hög

Andra applikationer kan också använda HMA med hjälp av DOS-funktioner eller direkt via HIMEM.SYS-funktionerna, även om efter att ha flyttat DOS-kärnan till HMA finns det nästan inget ledigt utrymme kvar där.

Namnförvirring

engelska ord .  övre översätts vanligtvis till ryska som "övre" ("belägen längst upp" [2] ), men ordet hög kan också översättas med "övre" (eller "hög" - "belägen högst upp" [3] ) . Många kollisioner är förknippade med detta när man översätter namnen Upper Memory Area (Upper Memory Block) och High Memory Area.

Som ett resultat fortsätter de ursprungliga engelska stavningarna UMB och HMA att användas i ryskspråkig litteratur (förkortningen UMA slog praktiskt taget inte rot).

Dessutom laddar kommandona devicehighoch loadhigh, trots ordet högt i namnet, program i UMB, inte HMA. DOS använder bara HMA för att ladda sin kärna (om kommandot dos=higheller används dos=high,umb).

Se även

Anteckningar

  1. Hook M. IBM PC-hårdvara. Encyklopedi. - 2:a uppl. - St Petersburg. : Peter, 2003. - S. 62. - 928 sid. — ISBN 5-318-00047-9 .
  2. övre  (otillgänglig länk)  (otillgänglig länk sedan 2016-06-14 [2333 dagar]) i Yandex.dictionaries
  3. hög  (otillgänglig länk)  (otillgänglig länk sedan 2016-06-14 [2333 dagar]) i Yandex.dictionaries