Sie sind auf Seite 1von 36

Gestin de Memoria

Introduccin Paginacin Segmentacin Memoria virtual Clase 6 Sistemas Operativos

Introduccin

Para que un proceso pueda ejecutarse debe estar ubicado en la memoria principal del ordenador. La memoria principal de una computadora es un recurso escaso y se utiliza la memoria secundaria como una extensin de sta.

La administracin de la memoria principal es vital, el desempeo de todo sistema depende de 2 cosas: Cunta memoria esta disponible. Cmo se utilizan mientras se procesan los trabajos o tareas. Sistema con monoprogramacin: La memoria principal es divida entre el S.O. y el proceso en ejecucin. Sistema con multiprogramacin: La memoria principal es dividida en dos partes: Una parte para el sistema operativo El resto repartida entre los procesos en ejecucin Sistema de gestin o administracin de memoria: Es la parte del S.O. que lleva a cabo, dinmicamente, las tareas de reparto y control de la memoria.

Gestin de Memoria
La gestin de la memoria implica varias tareas, una de ellas es llevar un registro de qu zonas estn libres (es decir, no estn siendo utilizadas por ningn proceso), y qu zonas estn ocupadas por qu procesos. Otra tarea importante surge en sistemas en los que no todos los procesos, o no todo el cdigo y datos de un proceso, se ubican en la memoria principal. En estos sistemas, a menudo se debe pasar parte, o la totalidad del cdigo y datos de un proceso, de memoria a disco, o viceversa; siendo el sistema operativo responsable de esta tarea. De esta forma se libera al usuario de realizar estas transferencias de informacin, de las cuales no es consciente.

Requisitos deseables a cumplir por cualquier poltica de administracin de memoria: Reubicacin Proteccin Comparticin Organizacin lgica de los programas Organizacin fsica Maximizar el rendimiento Mapas de memoria de los procesos

Particin de la memoria
Particiones

fijas o estticas Particiones de igual tamao: Proceso con tamao menor o igual al de la particin, puede cargarse en cualquier particin libre. Los procesos bloqueados, pueden suspenderse, y traer nuevos procesos a las particiones. Multiprogramacin limitado por nmero de particiones. Presenta Fragmentacin Interna, es cuando el proceso no ocupa toda la particin. El uso de la memoria es extremadamente ineficiente. Hay una tabla para indicar particiones ocupadas y libres.

Particiones fijas de igual tamao


Sistema Operativo 8MB
8MB 8MB

Sistema Operativo 8MB


P1 - 8MB

P2 - 7MB P3 - 8MB
P4 - 8MB P5 - 4MB P6 - 8MB
P7 - 3MB

8MB
8MB 8MB 8MB 8MB

Fragmentacin Interna

Particiones de distintos tamaos:conforme llega el proceso se le va asignando una particion de acuerdo al tamao del proceso. Mejora los problemas anteriores.

Usa algoritmo de ubicacin para particiones:


Una cola por particin. - Cada proceso se asigna a una cola en funcin de su tamao. - Minimiza la fragmentacin interna. - No es ptimo desde el punto de vista global, existen particiones sin usar y otras con grandes colas.

Una nica cola para todos los procesos. - Al cargar un proceso en memoria se selecciona la particin ms pequea disponible. - Cuando se libera una particin se asigna al primer proceso que cabe en ella.

Algoritmo de ubicacin para particiones fijas de distinto tamao

Ya no pueden entrar a otra particion

Particiones

variables o dinmicas: Particiones variables en nmero y longitud. Al proceso se le asigna la memoria que necesita. Presenta Fragmentacin Externa, al haber suficiente memoria libre para un proceso, pero se encuentra dividida en varios huecos o fragmentos no adyacentes. Compactacin: Desplaza a las particiones ocupadas, dejando toda la memoria libre de manera contigua, para formar un nico bloque de mayor tamao. - Consume mucho tiempo, desperdiciando tiempo del procesador. - Necesita la capacidad de reubicacin dinmica.

marcos

Aca no entraria un proceso mayor a 6M y se soluciona con una compactacion

Paginacin
Permite que el espacio de direcciones fsicas de un proceso no sea contiguo. Tcnica que soluciona la fragmentacin externa.

Mtodo bsico: La memoria fsica se divide en bloques de tamao fijo llamados marcos(tamaos iguales). La memoria lgica tambin se divide en bloques del mismo tamao llamados pginas. Para un funcionamiento ptimo el tamao de la pgina y el marco debe ser potencia de 2. Cuando se va a efectuar un proceso, todas sus paginas se cargan desde el almacn de respaldo en cualquier marco de memoria disponible. La memoria logica se dividen en paginas de 1M, cada pagina se traslada a la memoria fisica ocupando el tamao correspondiente, y no en grupo osea toda la memoria fisica

El almacn de respaldo se divide en bloques de tamao fijo del mismo tamao que los marcos. Cada direccin generada por la CPU se divide en dos partes: un numero de pgina (p) y un desplazamiento de pagina (d). El numero de pagina se emplea como ndice en una tabla de paginas.

La tabla de pginas contiene la direccin base de cada pgina en memoria fsica; esta direccin base se combina con el desplazamiento de pgina para definir la direccin de memoria fsica que se enva a la unidad de memoria.

Si el tamao del espacio de direcciones lgicas es 2m y el tamao de pgina es 2n unidades de direccionamiento (bytes o palabras) entonces los m - n bits de mayor peso de cada direccin lgica designarn el nmero de pgina, mientras los n bits de menor peso indicarn el desplazamiento de pgina. Por tanto la direccin lgica tiene la estructura:

Donde p es un ndice de la tabla de pginas y d es el desplazamiento dentro de la pgina.

Direcciones de 16 bits y tamao de pgina de 4kbytes

Hardware de paginacin

Desplazamien to o tamao

Ejemplo: Mapear(ubicar paginas en la memoria fisica) un proceso en memoria principal, se conoce su tabla de pagina, cada pgina tiene 4bytes y la memoria fsica es de 32bytes.
marco

Nro de marcos=32/4=8marcos

Ejemplo: Para un tamao de pgina de 4 bytes y una memoria fsica de 32 bytes, observar el desplazamiento dentro de la pgina.

Paginacin - Marcos Libres

No ordenar la lista de marcos

Pginas compartidas: La paginacin permite compartir memoria entre distintos procesos. Estos procesos deberan tener la misma memoria fsica apuntada en sus respectivas tablas de pginas. La comparticin de cdigo, exige que el cdigo sea reentrante, es decir, no puede modificarse a s mismo, por lo tanto nunca cambia durante la ejecucin.

Ejemplo: Considere 3 usuarios, cada uno ejecutando un editor de texto compuesto por 150KB de cdigo y 50KB de espacio de datos. Segn se observa la parte del cdigo puede ser compartido por los 3 procesos.

Pginas compartidas

Segmentacin
En segmentacin, un programa y sus datos asociados se dividen en un conjunto de segmentos, de distintos tamaos pero con una longitud mxima de segmento. Elimina la fragmentacin interna pero sufre de fragmentacin externa. Mientras la paginacin es transparente al programador la segmentacin es visible, dndole comodidad para la organizacin de sus programas y datos. Un segmento es una unidad lgica, que puede ser: Programa principal, Procedimientos, Funciones, Mtodos, Objetos, Variables locales, variables globales, Bloque comn, Pila, Tabla de smbolos, Arreglos, etc.

Es un esquema de gestin de memoria que soporta la visin de la memoria que tienen los usuarios. Un espacio de direcciones lgicas es un conjunto de segmentos que tienen un nombre y una longitud. Las direcciones especifican el nombre del segmento como el desplazamiento dentro del mismo. Por tanto, el usuario especifica cada direccin mediante dos valores: un nombre de segmento y un desplazamiento. Para simplificar la implementacin, los segmentos se enumeran y se hace referencia a ellos por un nmero de segmento, en lugar de un nombre de segmento. As una direccin lgica estar compuesta por la pareja: <nmero-de-segmento, desplazamiento>

Hardware de segmentacin

Ejemplo: Existen 5 segmentos numerado del 0 al 4. Los segmentos se almacenan en la memoria fsica. La tabla de segmentos tiene una entrada distinta para cada segmento, donde se indica la direccin inicial del segmento en la memoria fsica (la base) y la longitud de dicho segmento (el lmite). As, el segmento 2 tiene 400 bytes de longitud y comienza en la ubicacin 4300. Por lo tanto, una referencia al byte 53 del segmento 2, se mapea en la localidad 4300 + 53 = 4353. Una referencia al byte 852 del segmento 3, se mapea en 3200 (base para el segmento 3) + 852 = 4052. Una referencia al byte 1222 del segmento 0 provoca una interrupcin hacia el S.O. porque este segmento solo tiene 1000 bytes de longitud.

Segmentos compartidos: Los segmentos son compartidos, cuando las entradas en las tablas de segmentos de procesos diferentes apuntan a la misma direccin de memoria fsica. La comparticin ocurre al nivel de Segmentos. Con esto cualquier informacin puede ser compartida si esta definida como un segmento. Varios segmentos pueden ser compartidos. Ejemplo: Considere el caso del editor de textos de un sistema de tiempo compartido. En lugar de cargar varias copias del cdigo del editor, este ser cargado una sola vez, as los procesos que necesiten usarlo, tendrn en sus tablas de segmento apuntadores a la misma direccin de memoria donde est cargado el cdigo.

Segmentos compartidos

Memoria Virtual
La memoria virtual, es una tcnica que proporciona la simulacin de un espacio de memoria mayor que la memoria fsica de una mquina. Esto permite crear los programas sin tener en cuenta el tamao exacto de la memoria fsica. Permite ejecutar procesos parcialmente cargados en memoria principal, mientras el resto est almacenado en disco, que son referenciados fcilmente. Se utiliza el disco como almacn secundario de procesos, liberando al programador la preocupacin de que sus programas quepan en memoria. La idea es mantener en memoria principal slo los fragmentos de cada proceso que se estn utilizando.

Importancia: Al examinar programas reales se observa que en muchos casos, no se requiere el programa completo: Cdigo que maneja condiciones de error poco comn y casi nunca se ejecuta. En muchos casos se reserva ms memoria de la necesaria (vectores, tablas, etc...) Opciones y funciones del programa que se usan con muy poca frecuencia (copias de seguridad, listados especficos, etc...) El S.O. selecciona automticamente qu fragmentos del proceso residen en memoria principal.

Ventaja: Antes se consideraba solo la posibilidad de mantener la totalidad del proceso en memoria para ejecutarlo. En los casos donde se necesita todo el programa, es probable que no se requiera todo al mismo tiempo. Como cada programa de usuario ocupara menos memoria fsica, podran ejecutarse ms programas al mismo tiempo, aumentando la utilizacin de la CPU y la productividad, pero sin incrementar el tiempo de respuesta. Se requerira menos E/S para cargar o intercambiar cada uno de los programas de usuario, por lo que se ejecutaran ms rpido.

Memoria Virtual

Ejercicios
1.- Mapear en memoria usando paginacin, se conocen las tablas de paginas, cada marco es de 4bytes y la memoria fsica es de 64bytes.

2.- Dado la siguiente tabla de segmentos, realizar el mapeo en la memoria principal.

3.- En un sistemas con paginacin, la memoria fsica tiene 32 bytes, est dividido en 16 marcos, adems se tiene de dato el sgte grfico. Segn esto responda: - Cul es el tamao de las pginas? - Cul es el tamao de la memoria lgica? - Elabore la tabla de pginas para el proceso - Ubique grficamente las pginas en la memoria fsica - Indique la lista final de marcos libres
0 1 2 3 5 10 8 6
Quedan disponibles Tabla de paginacion

Bibliografa
Tanenbaum Andrew S. & Woodhull Albert S. Sistemas Operativos: Diseo e implementacin. Tanenbaum Andrew S. & Escalona Roberto Sistemas operativos modernos. Silberchatz Galvin, Sistemas Operativos, Mexico, Pearson, 1999, 5 Ed. Pablo Ruiz Murquiz, Sistemas Operativos, Alqua, 2004, 0.5 Ver.

Ing. Leoncio Armas Castro


c12115@utp.edu.pe

Das könnte Ihnen auch gefallen