El área de memoria principal ( Memoria principal , ing. Memoria convencional ) ocupa los primeros 640 KB de RAM en computadoras IBM compatibles con PC . Esta área carga la tabla de vectores de interrupción (ocupa 1 KB), algunos datos del BIOS (por ejemplo, el búfer del teclado), varios programas DOS de 16 bits . Para ellos, 640 KB es una barrera.
Para las computadoras compatibles con IBM PC, 1 MB era el límite de memoria que el procesador podía abordar. La CPU Intel 8088 tiene 20 líneas de dirección y podría acceder hasta 2 20 = 1 MB de memoria. El primer megabyte se dividió en 16 áreas de 64 KB cada una. Las primeras diez áreas estaban reservadas para uso de los programas de usuario (mientras que el propio sistema operativo podía acceder a todo el megabyte de memoria) y se denominaba memoria principal . Las 6 áreas restantes con un volumen de 384 KB ( Área de memoria superior , UMA, memoria superior ) se reservaron para necesidades del sistema y dispositivos adicionales. Las primeras computadoras albergaban el BIOS y sus extensiones, la memoria del adaptador de video y los controladores de dispositivos. En las implementaciones existentes de IBM PC, parte de la memoria superior se usaba para CGA / EGA , el resto permanecía sin usar. A principios de la década de 1980, 640 KB de memoria eran suficientes para las necesidades del usuario promedio, pero la necesidad de RAM para nuevas aplicaciones creció más rápido, lo que condujo a la necesidad de usar las áreas libres de la memoria superior de varias maneras que evitaban el prohibición de que los programas de aplicación accedan a la memoria superior. Como resultado, esto condujo al hecho de que 1 MB de memoria disponible apareció "agujeros" reservados que fueron utilizados por varios dispositivos de hardware. La eliminación de tales "agujeros" era técnicamente difícil de implementar y no sería compatible con las versiones existentes de DOS y los programas de aplicación. Posteriormente, se desarrolló un método universal que permite acceder a bloques de memoria superiores ( Upper memory blocks, UMB ).
Para garantizar la compatibilidad con versiones anteriores de las aplicaciones existentes, el límite de 640 KB se mantuvo en implementaciones posteriores del estándar IBM PC , incluso después de que la arquitectura Intel 8086/8088 fuera reemplazada por la más moderna Intel 80286 , que ya permitía abordar 16 MB de memoria. en modo protegido . Esta limitación se debió al hecho de que el procesador 80286 podría funcionar tanto en el nuevo modo protegido como en el antiguo modo real , lo que garantiza la compatibilidad con la arquitectura anterior: en modo real, es imposible direccionar memoria con un ancho de bit superior a 20 bits (o 2 20 = 1 MB). Los procesadores posteriores compatibles con la arquitectura de PC de IBM continuaron implementando esta compatibilidad. Incluso en las computadoras modernas, todavía hay un área de memoria reservada entre 640 y 1024 KB de memoria [1] [2] , aunque para la mayoría de los sistemas operativos modernos es invisible, ya que acceden a la RAM a través de la memoria virtual , ocultando la asignación real detrás de ella. memoria y no depende de ella [3] .
La barrera de 640 KB es relevante solo para programas de 16 bits que se ejecutan en DOS. El funcionamiento de los sistemas operativos de 32 y 64 bits ( Microsoft Windows 4.x , NT , GNU / Linux , etc.) prácticamente no se ve afectado por la barrera de los 640 KB.