Huvudminnesområdet ( Main memory , eng. Konventionellt minne ) upptar de första 640 KB RAM i IBM PC-kompatibla datorer . Detta område laddar avbrottsvektortabellen (upptar 1 KB), vissa data från BIOS (till exempel tangentbordsbufferten), olika 16-bitars DOS -program . För dem är 640 KB en barriär.
För IBM PC-kompatibla datorer var 1 MB gränsen för minne som processorn kunde adressera. Intel 8088 CPU har 20 adresslinjer och kan komma åt upp till 2 20 = 1 MB minne. Den första megabyten var uppdelad i 16 områden på 64 KB vardera. De första tio områdena var reserverade för användning av användarprogram (medan själva operativsystemet kunde komma åt hela megabyten minne) och kallades huvudminne . De återstående 6 områdena med en volym på 384 KB ( Upper Memory Area , UMA, övre minne ) var reserverade för systembehov och ytterligare enheter. Tidiga datorer inhyste BIOS och dess tillägg, grafikkortsminne och enhetsdrivrutiner. I befintliga implementeringar av IBM PC användes en del av det övre minnet för CGA / EGA , resten förblev oanvända. I början av 1980 -talet räckte 640 KB minne för den genomsnittliga användarens behov, men behovet av RAM för nya applikationer växte snabbare, vilket ledde till behovet av att använda reservområdena i det övre minnet på olika sätt som gick förbi förbud för tillämpningsprogram från att komma åt det övre minnet. Som ett resultat ledde detta till att 1 MB tillgängligt minne dök upp reserverade "hål" som användes av olika hårdvaruenheter. Att eliminera sådana "hål" var tekniskt svårt att implementera och skulle inte stödjas av befintliga versioner av DOS och applikationsprogram. Senare utvecklades en universell metod som gör det möjligt att komma åt övre minnesblock ( Upper memory block, UMB ).
För att säkerställa bakåtkompatibilitet med befintliga applikationer behölls gränsen på 640 KB i efterföljande implementeringar av IBM PC -standarden , även efter att Intel 8086/8088-arkitekturen ersattes av den modernare Intel 80286 , som redan gjorde det möjligt att adressera 16 MB minne i skyddat läge . Denna begränsning orsakades av det faktum att 80286-processorn kunde fungera både i det nya skyddade och i det gamla reala läget , vilket säkerställer kompatibilitet med den gamla arkitekturen: i verkligt läge är det omöjligt att adressera minne med en bitbredd högre än 20 bitar (eller 2 20 = 1 MB). Efterföljande processorer som var kompatibla med IBM PC-arkitekturen fortsatte att implementera denna kompatibilitet. Även på moderna datorer finns det fortfarande ett reserverat minnesområde mellan 640 och 1024 KB minne [1] [2] , även om det för de flesta moderna operativsystem är osynligt, eftersom de kommer åt RAM genom virtuellt minne , och döljer den verkliga allokeringen bakom det minne och är inte beroende av det [3] .
640 KB-barriären är endast relevant för 16-bitarsprogram som körs under DOS. Driften av 32-bitars och 64-bitars operativsystem ( Microsoft Windows 4.x , NT , GNU / Linux , etc.) påverkas praktiskt taget inte av 640 KB-barriären.