EL DIRECCIONAMIENTO DE LA MEMORIA

  1. Direccionamiento de la memoria
  2. Multiprogramación
  3. Clasificacion de la memoria
  4. Introduccion a windows NT
  5. Manejo de la memoria en windows NT

§1 Sinopsis

El direccionamiento de la memoria puede considerarse desde dos puntos de vista: Físico y lógico. El primero se refiere a los medios electrónicos utilizados en el ordenador para acceder a las diversas posiciones de memoria; el segundo a la forma en que se expresan y guardan las direcciones. En este epígrafe nos referiremos exclusivamente a la forma en que son tratadas las direcciones de memoria del PC, advirtiendo desde ahora, que este asunto, como muchos otros, ha sufrido mutaciones a lo largo del tiempo, y que arrastra modos que solo tienen una justificación de tipo histórico, en razón de las características del hardware de los primeros PC's.

§2 Notación

El sistema de numeración utilizado por los informáticos para representar las direcciones de memoria en el texto escrito no suele ser la decimal (como parecería razonable), sino el hexadecimal ( E2.2.4b). La razón es que los números hexadecimales guardan cierta concordancia con las potencias de 2, por ejemplo, un bus de direcciones de 8 bits puede acceder a 256 posiciones; en hexadecimal es el rango 00-FFh. En caso de direcciones de 16 bits se puede acceder 65.536 posiciones; es el rango 0000-FFFFh. El bus de direcciones del PC XT, que tiene 20 bits, las posibilidades son 1.048.576; es el rango 00000-FFFFFh. Como veremos a continuación, puede utilizarse una doble notación: Direcciones absolutas, indicadas por un hexadecimal de cinco dígitos en el rango 00000-FFFFFh o en direcciones segmentadas, que utiliza dos grupos de cuatro dígitos hexadecimales.

§3 Direccionamiento segmentado

Hemos indicado que el bus de direcciones del PC XT era de 20 bits ( H2), por lo que teóricamente podían manejarse un total de 220 posibilidades (1.048.576). Sin embargo el procesador 8088 utilizado tiene registros de 16 bits, por lo que solo puede contener directamente 216 posiciones (65.536). La solución consistió en expresar las direcciones mediante dos palabras de 16 bits (denominadas desplazamiento y segmento) que se componen en una sola dirección de 20 bits mediante una operación denominada suma con desplazamiento. Por ejemplo, suponiendo que el desplazamiento y el segmento fuesen respectivamente ABCDh y E1FAh, la forma de operar es como sigue: Una de las palabras, el desplazamiento, se desplaza una posición añadiéndole un cero a la derecha (equivale a multiplicarla por 16, ya que las direcciones se suelen expresar en hexadecimal). Por ejemplo, si el desplazamiento es ABCDh resulta ABCD0h. Puesto que inicialmente es una palabra de 16 bits, su valor puede ser expresado en un hexadecimal de 4 cifras (ABCD en nuestro caso), y el desplazamiento la transforma en un hexadecimal de 5 cifras (ABCD0). El valor obtenido se suma con el valor del segmento (E1FAh), así que la dirección resultante sería 69ECAh. Para distinguirla de la anterior, esta última forma se denomina dirección absoluta.

Nota: Es frecuente escribir las direcciones segmentadas en forma de los dos cantidades separadas por dos puntos, poniendo a la izquierda el valor más alto (el desplazamiento) y a la derecha el más bajo (el segmento). En forma segmentada, la dirección anterior se expresaría ABCD:E1FA , y es equivalente a la dirección absoluta 69ECAh.


§4 Segmentos y párrafos

Esta forma de representación segmentada de las direcciones es en realidad una imagen de como son manejadas internamente en el procesador. Los procesadores 8088 tienen registros de 16 bits que pueden servir para almacenar los desplazamientos, es decir, cualquier dirección dentro de una zona de 64 KB (que se conoce como segmento). Disponen además de 4 registros de segmento de 16 bits (CS, SS, DS y ES H3.2), en los que se almacenan las direcciones de inicio del segmento activo en cada momento. Resulta así, que pueden direccionar un total absoluto de 1MByte, y hasta 64 x 4 = 256 KB sin necesidad de cambiar los registros de segmento. Esto es lo que se conoce como funcionamiento en modo real (como puede verse, en realidad es una forma de manejar la memoria).