La parte del sistema operativo que administra la jerarqua de memoria se denomina administrador de memoria. Su trabajo consiste en mantenerse al tanto de qu partes de la memoria estn en uso y cules no, asignar memoria a los procesos cuando la necesitan y recuperarla cuando terminan, y controlar el intercambio entre la memoria principal y el disco cuando la primera es demasiado pequea para contener todos los procesos.
Francisco Javier Rufo Mendo
7. GESTIN DE MEMORIA
Francisco Javier Rufo Mendo
Los sistemas de administracin de memoria se
pueden dividir en dos clases, los que trasladan procesos entre la memoria y el disco durante la ejecucin (intercambio y paginacin) y los que no lo hacen. El intercambio y la paginacin son en buena medida situaciones causadas por la falta de suficiente memoria principal para contener todos los programas a la vez.
7.1. MONOPROGRAMACIN
Francisco Javier Rufo Mendo
El esquema de administracin de memoria ms
sencillo posible es ejecutar slo un programa a la vez, compartiendo la memoria entre ese programa y el sistema operativo. Slo se puede ejecutar un proceso a la vez.
En muchas ocasiones es deseable poder
ejecutar varios procesos a la vez. Esto implica que cuando un proceso est bloqueado, otro puede usar la CPU, por lo que aumenta el aprovechamiento de la misma. La forma ms simple consiste en dividir la memoria en n particiones fijas, posiblemente de distinto tamao. Al llegar un trabajo, se puede colocar en la cola de la particin ms pequea que pueda contenerlo, o tener una nica cola.
Francisco Javier Rufo Mendo
7.2. MULTIPROGRAMACIN CON PARTICIONES FIJAS
Francisco Javier Rufo Mendo
Relocalizacin: La capacidad de cargar y ejecutar programas
en un lugar arbitrario se conoce con el trmino de programa reubicable y la idea consiste en traducir las direcciones que conoce el programador por las verdaderas direcciones que el programa ocupa en la memoria. Proteccin: Debe evitarse que los procesos accedan al espacio de memoria de otros procesos. Una solucin consiste en usar dos registros (base y lmite) que determinan dnde comienza el espacio de memoria del proceso y hasta dnde llega.
Francisco Javier Rufo Mendo
El principal inconveniente es que se desaprovecha el
espacio no utilizado de cada particin fragmentacin interna. Tambin se introducen dos problemas que hay que resolver:
El nmero y tamao de los procesos de la
memoria vara en el tiempo, por lo que tambin lo harn las particiones de memoria. Mejora el uso de la memoria, aunque complica su control. Se puede llevar a cabo la unin de todos los huecos en un nico hueco ms grande moviendo los procesos al espacio ms bajo tanto como sea posible dentro del espacio de direccionamiento compactacin.
Francisco Javier Rufo Mendo
MULTIPROGRAMACIN CON PARTICIONES VARIABLES
Para lograr una asignacin eficaz, es necesario seguir
algn tipo de algoritmo de seleccin de particiones: Un primer proceso podra consistir en elegir la primera particin libre que sea de igual o mayor tamao. Uno mejor seria rastrear toda la memoria, buscar aquella particin de entre las libres, que al cargar el proceso deje el menor hueco. El peor mtodo sera al igual que el caso anterior pero con el mayor hueco posible.
Mapa de bits: La memoria se divide en unidades de asignacin
de un tamao determinado y a cada unidad se le asigna un bit, que ser 0 si la unidad est libre y 1 si est ocupada. En general este mtodo es de bsqueda lenta y no muy utilizado. Listas: Consiste en conservar en memoria una lista enlazada de segmentos asignados y libres.
Francisco Javier Rufo Mendo
Las maneras ms extendidas para llevar a cabo el
control del uso de la memoria son:
Cuando un programa era demasiado grande
para coger en memoria, se divida el programa en fragmentos, denominados superposiciones. El intercambio de superposiciones se llevaba a cabo de forma automtica por el SO, pero era el programador quien debera efectuar la divisin. La memoria virtual surgi en 1961, y permite que el programa exceda la cantidad de memoria fsica disponible.
Francisco Javier Rufo Mendo
7.3. MEMORIA VIRTUAL
La gestin de memoria paginada es una gestin
basada en la asignacin de memoria fsica no contigua, es decir, que las partes de un proceso lgico puedan estar situadas en reas no contiguas de la memoria fsica. La memoria principal se divide en un conjunto de marcos de igual tamao. Cada proceso se divide en una serie de pginas del mismo tamao que los marcos. Un proceso se carga situando todas sus pginas en marcos libres pero no necesariamente contiguos. Dado que cada pgina se corresponde con su bloque, el desplazamiento dentro de la pgina ser el mismo que dentro del bloque.
Francisco Javier Rufo Mendo
PAGINACIN
Francisco Javier Rufo Mendo
El sistema operativo mantiene una tabla de
pginas para cada proceso, la cual muestra la posicin del marco de cada pgina del proceso. Dentro del programa, cada direccin lgica constar de un nmero de pgina y de un desplazamiento dentro de la pgina. Cuando se solicita cargar un proceso de tamao t el SO debe asignar e bloques, donde e se obtiene dividiendo t entre el tamao de pgina, que viene definido por el hardware. El SO asigna un nmero entero de bloques. Si el tamao del proceso no es mltiplo entero del tamao de pgina se produce una fragmentacin interna.
Francisco Javier Rufo Mendo
Para evitar tener tablas muy grandes, se dividen en
trozos ms pequeos. Estas tablas constituyen tablas de segundo nivel, y estarn referenciadas por una de nivel superior que ser la nica que deber permanecer en memoria tablas multinivel. Cuando se recibe una direccin, se extrae la primera parte que har de ndice en la tabla de primer nivel para localizar la entrada correspondiente que sealar el marco donde est almacenada la tabla de segundo nivel. La segunda parte indicar el ndice en esa tabla de segundo nivel, donde localiza el marco de la pgina buscada, el cual junto al desplazamiento conforma la direccin fsica que se enva a la memoria.
Francisco Javier Rufo Mendo
ALGORITMOS DE REEMPLAZO DE PGINA
Algoritmo de reemplazo de pginas ptimo: Cada
pgina lleva una etiqueta con el nmero de instrucciones que falta para que sea referenciada. Es imposible de implementar. Pgina de uso no reciente (NRU): Pretende sacar de la memoria a la pgina que hace ms tiempo que no se referencia. Algoritmo FIFO: Se hace vctima a la pgina que lleve ms tiempo en memoria. Pgina usada hace ms tiempo (LRU): Intenta hacer vctima a la pgina que hace ms tiempo que no se referencia.
Francisco Javier Rufo Mendo
El objetivo de los algoritmos es hacer vctima a una
pgina que no se vaya a necesitar en poco tiempo. Algunos de los algoritmos ms comunes son:
En este caso, cada proceso se divide en una serie de segmentos.
No es necesario que todos los segmentos de todos los programas tengan la misma longitud, aunque existe una longitud mxima de segmento. Un proceso se carga situando todos sus segmentos en particiones dinmicas que no tienen por qu ser contiguas. Se puede definir un segmento como un agrupamiento lgico de la informacin. Los segmentos no tienen por qu ser del mismo tamao, ni contiguos, aunque s la informacin que contienen. Mientras que la paginacin es transparente al programador, la segmentacin es generalmente visible y se proporciona como una comodidad para la organizacin de los programas y datos. El usuario indicar la direccin lgica mediante dos nmeros, el nmero del segmento y el nmero del desplazamiento. No existir fragmentacin interna, pero s se necesita compactacin.
Francisco Javier Rufo Mendo
SEGMENTACIN
Francisco Javier Rufo Mendo
Cuando se quiere cargar un proceso de forma
segmentada, el SO asigna memoria para los segmentos requeridos. Dichos segmentos podrn ir fsicamente separados y por ello el sistema tendr que anotar la base o comienzo de cada segmento, as como su tamao. El conjunto de estos pares de nmeros (base y lmite) formar una tabla llamada tabla de segmentos. Mediante dicha tabla se traducirn los nmeros de segmento y desplazamiento a una direccin fsica: el nmero de segmento se utiliza como ndice en la tabla de donde se obtendrn la base y el lmite del segmento. Existen sistemas que combinan la paginacin y la segmentacin. De estas formas de combinacin surgen la paginacin segmentada y la segmentacin paginada.