conceptos memoria

Anuncio
Particiones
La forma más fácil de conseguir la multiprogramación es simplemente dividir la
memoria en n particiones (posiblemente de diferentes tamaños). Esta división puede, por
ejemplo, realizarse manualmente cuando se pone en marcha el sistema.
Cuando llega un trabajo, puede colocarse en la cola de entrada de la partición más
pequeña en la que cabe. Puesto que en este esquema las particiones son fijas, cualquier espacio
en una partición no utilizado por un trabajo se desperdicia. Este sistema, con particiones fijas
establecidas por la mañana por el operador sin
posibilidad de modificarse después, fue utilizado en el OS/360 de los grandes mainframes de
IBM durante muchos años. Se le denominó MFT (Multiprogramming with a Fixed number of
Tasks u OS/MFT). Es sencillo de entender e igualmente sencillo de implementar: los trabajos
que llegan se encolan hasta que esté disponible una partición apropiada, momento en el cual el
trabajo se carga en esa partición y se ejecuta hasta que termina. Actualmente, son pocos, por no
decir ninguno, los sistemas operativos que utilizan este modelo.
memoria virtual se refiere cuando el tamaño combinado del programa, sus datos y
su pila pueden exceder la cantidad de memoria física disponible. El sistema operativo mantiene
en la memoria principal aquellas partes del programa que se están usando en cada momento,
manteniendo el resto de las partes del programa en el disco. Por ejemplo, un programa de 16
MB puede ejecutarse sobre una máquina de 4 MB eligiendo cuidadosamente qué 4 MB se
tendrán en la memoria en cada instante, e intercambiando partes del programa entre el disco y la
memoria, según sea necesario.
los sistemas de paginación de memoria dividen los programas en pequeñas partes o
páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las
páginas llamados marcos de página.
Paginación pura
La paginación pura en el manejo de memoria consiste en que el sistema operativo divide
dinámicamente los programas en unidades de tamaño fijo ( generalmente múltiplos de 1
kilobyte ) los cuales va a manipular de RAM a disco y viceversa. Al proceso de intercambiar
páginas, segmentos o programas completos entre RAM y disco se le conoce como
`intercambio' o `swapping'. En la paginación, se debe cuidar el tamño de las páginas, ya
que si éstas son muy pequeñas el control por parte del sistema operativo para saber cuáles
están en RAM y cuales en disco, sus direcciones reales, etc; crece y provoca mucha
`sobrecarga' (overhead). Por otro lado, si las páginas son muy grandes, el overhead
disminuye pero entonces puede ocurrir que se desperdicie memoria en procesos pequeños.
Debe haber un equilibrio.
Segmentaciòn. Divide la memoria en segmentos, cada uno de los cuales tiene una
longitud variable, que está definida intrínsecamente por el tamaño de ese segmento del
programa. Los elementos dentro de un segmento están identificados por su
desplazamiento con respecto al inicio del segmento: la primera instrucción del
programa, la séptima entrada de la pila, la quinta instrucción de la función Sqrt(), etc.
La Relocalización consiste en ajustar las direcciones de un programa al sitio donde fue
cargado, para que este pueda ser ejecutado. Este proceso es indispensable para poder tener
multiprogramación, puesto que un programa no siempre va a ocupar las mismas posiciones
de memoria.
Suponga que se tiene el siguiente trozo de programa en lenguaje ensamblador:
Para su ejecución el programa debe ser traducido a lenguaje de máquina. Sin embargo el
ensamblador no conoce el sitio en donde va a ser cargado el programa y por lo tanto no
puede traducir adecuadamente las referencias a la memoria. Si el programa fuese cargado
en la posición 0, por ejemplo, y suponiendo que las variables h y g están en las posiciones
50 y 54 respectivamente, con respecto al inicio del programa, el programa generado sería:
Sin embargo, si el programa fuese cargado a partir de la posición 100, el código debe
relocalizarse y sería:
Segmentación pura
La segmentación se aprovecha del hecho de que los programas se dividen en partes lógicas,
como son las partes de datos, de código y de pila (stack). Lasegmentación asigna particiones
de memoria a cada segmento de un programa y busca como objetivos el hacer fácil el
compartir segmentos ( por ejemplo librerías compartidas ) y el intercambio entre memoria
y los medios de almacenamiento secundario.
Sistemas combinados
La paginación y la segmentación puras son métodos de manejo de memoria bastante
efectivos, aunque la mayoría de los sistemas operativos modernos implantan esquemas
combinados, es decir, combinan la paginación y la segmentación. La idea de combinar estos
esquemas se debe a que de esta forma se aprovechan los conceptos de la división lógica de
los programas (segmentos) con la granularidad de las páginas. De esta forma, un proceso
estará repartido en la memoria real en pequeñas unidades (páginas) cuya liga son los
segmentos
Descargar