Académique Documents
Professionnel Documents
Culture Documents
Clase 6
Jerarqua de memoria:
Ejemplo :
Proceso de compilacin y carga de un programa.
Jerarqua de memoria:
Direccionamiento de memoria .
La memoria est estructurada como un arreglo
direccionable de bytes. Esto es, al solicitar los contenidos
de una direccin especfica de memoria, el hardware nos
entregar un byte (8 bits), y no menos.
Para acceder a una direccin especifica la CPU manda
seales en el bus de direccin el cual tiene un tamao
aproximado de 32bits, y estos nos permiten especificar a
la CPU 4,296,967,296 (232 ) direcciones diferentes de la
memoria.
Hoy en da, un procesador con una arquitectura de 32 bits
sin extensiones adicionales no puede emplear ms de 4GB
RAM; a travs de un mecanismo llamado PAE (Extensin
de Direccines Fsicas,Physical Address Extension) .
MMU.
Por ejemplo, si a un proceso le fue asignado un espacio de memoria
de 64K (65535 bytes) a partir de la direccin 504214 (492K),
el registro base contendra 504214, y el registro lmite65535. Si
hubiera una instruccin por parte de dicho proceso que solicitara
una direccin menor a 504214 o mayor a 569749 (556K), el MMU
lanzara una excepcin o trampa interrumpiendo el procesamiento,
e indicando al sistema operativo que ocurri una violacin de
segmento.
Memoria Cache.
Conforme el procesador va avanzando sobre las instrucciones
de un programa (avanzando el registro de conteo de
instruccin), se van produciendo accesos a memoria. Por un
lado, tiene que buscar en memoria la siguiente instruccin a
ejecutar. Por otro lado, estas instrucciones pueden requerirle
uno o ms operadores adicionales que deben ser trados de la
memoria. Por ltimo, la instruccin puede requerir guardar su
resultado en cierta direccin de memoria.
La respuesta para reducir esa espera es la memoria cach. Esta
es memoria de alta velocidad, situada entre la memoria
principal y el procesador propiamente, que guarda copias de
las pginas que van siendo accesadas, partiendo del principio
de la localidad de referencia.
Lectura . Cache de primer y segundo nivel .
Memoria de un proceso.
Cuando un sistema operativo inicia un proceso, no se limita a volcar el archivo
ejecutable a memoria, sino que tiene que proveer la estructura para que ste
vaya guardando la informacin de estado relativa a su ejecucin.
Seccin de texto . Es el nombre que recibe la imagen en memoria de las
instrucciones a ser ejecutadas. Tpicamente, la seccin de texto ocupa las
direcciones ms bajas del espacio en memoria.
Seccin de datos. Espacio fijo preasignado para las variables globales. Este
espacio es fijado en tiempo de compilacin, y no puede cambiar (aunque los
datos que carga s cambian en el tiempo de vida del proceso)
Espacio de libres(Heap). Espacio de memoria que se emplea para la asignacin
dinmica de memoria durante la ejecucin del proceso. Este espacio se ubica
por encima de la seccin de datos, y crece hacia arriba. Cuando el programa es
escrito en lenguajes que requieren manejo manual de la memoria (como C),
esta rea es la que se maneja a travs de las llamadas de la familia de malloc y
free; en lenguajes con gestin automtica, esta rea es monitoreada por
los recolectores de basura (volveremos a estos conceptos ms adelante).
Pila de llamadas(Stack). Estructuras representando a la serie de funciones que
han sido llamadas dentro del proceso, con sus parmetros, direcciones
de retorno, variables locales, etc. La pila ocupa la parte ms alta del espacio en
memoria, y crece hacia abajo.
Segmentacin.
El uso que damos a la memoria sigue una lgica de
distintos segmentos: En vez de dar una direccin lineal,
damos al procesador una direccin de segmento y
un desplazamiento dentro de dicho segmento. Podemos tener
segmentos de distintos tamaos presentes en memoria, y la
resolucin de direcciones de cada uno de ellos se realizar por
mecanismos anlogos al descrito en el apartado anterior
(registro base y desplazamiento). Claro est, esto debe
tambin hacerse con apoyo del MMU.
Paginacin.
Esta consiste en que cada proceso est compuesto por una serie
de pginas, dejando de requerir que la asignacin sea de un
rea contigua de memoria.
No nos basta ya con indicar dnde inicia y dnde termina el rea
de memoria de cada proceso, sino que debemos hacer
un mapeo entre la ubicacin real (fsica) y la presentada a cada uno
de los procesos (lgica). La memoria se presentar a cada proceso
como si fuera de su uso exclusivo.
La memoria fsica se divide en una serie de marcos (frames), todos
ellos del mismo tamao, y el espacio cada proceso se divide en una
serie de pginas (pages), del mismo tamao que los marcos. El
MMU se se encarga del mapeo entre pginas y marcos a travs
de tablas de pginas. Las direcciones que maneja el CPU ya no son
presentadas de forma absoluta, sino que como la combinacin de
un identificador de pgina y un desplazamiento
Memoria Compartida.
Hay muchos escenarios en que diferentes procesos pueden
beneficiarse de compartir reas de su memoria. Uno de ellos es
como mecanismo de comunicacin entre procesos (IPC, Inter
Process Communication), en que dos o ms procesos pueden
intercambiar estructuras de datos complejas sin incurrir en el costo
de copiado que implicara copiarlas a travs del sistema operativo.
Otro caso, mucho ms frecuente, es el de compartir cdigo.
Y si bien es muy comn compartir los segmentos de texto de los
diversos programas que estn en un momento dado en ejecucin
en la computadora, este mecanismo es todava ms til cuando
hablamos de bibliotecas del sistema: Hay bibliotecas que son
empleadas por una gran cantidad de programas.
Memoria Virtual.
Varios de los aspectos mencionados en la seccin de
paginacin van conformando a lo que conocemos como memoria
virtual: Vimos ya que en un sistema que emplea paginacin, un
proceso no conoce su direccin en memoria relativa a otros
procesos, sino que trabajan con una idealizacin de la memoria, en
la cual ocupan el espacio completo de direccionamiento, desde el
cero hasta el lmite lgico de la arquitectura, independientemente
del tamao fsico de la memoria disponible.