so05gestióndememoria
TRANSCRIPT
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 1/37
Funciones de los Sistemas
OperativosGestión de Memoria
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 2/37
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 3/37
Gestión de Memoria: Introducción
• En un sistema multiprogramadoresulta vital una gestión efectiva de lamemoria.
• Si sólo hay unos pocos procesos enmemoria, entonces la mayor parte deltiempo estarán esperando a la E/S y el
procesador estará desocupado.• Por ello, hace falta repartireficientemente la memoria para metertantos procesos como sea posible.
Importancia de la Gestión deMemoria
Importancia de la Gestión deMemoria
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 4/37
Gestión de Memoria: Requisitos
Requisitosde la
Gestión deMemoria
Requisitosde la
Gestión deMemoria
ReubicaciónReubicación
ProtecciónProtección
ComparticiónCompartición
OrganizaciónLógica
OrganizaciónLógica
OrganizaciónFísica
OrganizaciónFísica
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 5/37
Gestión de Memoria: Requisitos
• El programador no puede conocer por adelantado qué otros
programas residirán en memoria en el momento de laejecución del programa.
• Un objetivo de todo S.O. es poder cargar y descargar losprocesos activos en la memoria principal para maximizar eluso del procesador, manteniendo una gran reserva deprocesos listos para ejecutar.
• Una vez que un programa haya sido descargado al disco, selimitará a declarar que, cuando vuelva a ser cargado, debesituarse en la misma región de memoria principal que antes.
• Así, se sabe antes de tiempo dónde debe situarse unprograma y hay que permitir que el programa pueda moverse
en memoria principal como resultado de un intercambio.• El sistema operativo debe conocer la ubicación de la
información de control del proceso y de la pila de ejecución,así como el punto de partida para comenzar la ejecución delprograma para dicho proceso.
ReubicaciónReubicación
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 6/37
Gestión de Memoria: Requisitos
• Puesto que el sistema operativo gestiona lamemoria y es responsable de traer el procesoa memoria principal, estas direcciones debenser fáciles de conseguir.
• El procesador debe ocuparse de lasreferencias a memoria dentro del programa.• Las instrucciones de bifurcación deben
contener la dirección que haga referencia a lainstrucción que se vaya a ejecutar a
continuación.• Las instrucciones que hagan referencia a
datos deben contener la dirección del byte ode la palabra de datos referenciada.
ReubicaciónReubicación
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 7/37
Gestión de Memoria: Requisitos
• Cada proceso debe protegerse contra interferencias nodeseadas de otros procesos, tanto accidentales comointencionadas.
• El código de un proceso no puede hacer referencia aposiciones de memoria de otros procesos, con fines delectura o escritura, sin permiso.
• Hasta cierto punto, satisfacer las exigencias dereubicación aumenta la dificultad de satisfacción de lasexigencias de protección. Puesto que se desconoce laubicación de un programa en memoria principal, esimposible comprobar las direcciones absolutas durante
la compilación para asegurar la protección.• Por tanto, todas las referencias a memoria generadas por
un proceso deben comprobarse durante la ejecuciónpara asegurar que sólo hacen referencia al espacio dememoria destinado a dicho proceso.
ProtecciónProtección
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 8/37
Gestión de Memoria: Requisitos
• Normalmente, un proceso de usuario nopuede acceder a ninguna parte del sistemaoperativo, tanto programa como datos.
• El programa de un proceso no puede en
general bifurcar hacia una instrucción deotro proceso.• Además, sin un acuerdo especial, el
programa de un proceso no puede accederal área de datos de otro proceso.
• El procesador debe ser capaz de abandonartales instrucciones en el momento de laejecución.
Protección: Necesidades deProtecciónProtección: Necesidades deProtección
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 9/37
Gestión de Memoria: Requisitos
Compartición
• Cualquier mecanismo de protección que se implementedebe tener la flexibilidad de permitir el acceso de variosprocesos a la misma zona de memoria principal.
• Por ejemplo, si una serie de procesos están ejecutando elmismo programa, resultaría beneficioso permitir a cadaproceso que acceda a la misma copia del programa, enlugar de tener cada uno su propia copia aparte.
• Los procesos que cooperan en una tarea puedennecesitar acceso compartido a la misma estructura dedatos.
• El sistema de gestión de memoria debe, por tanto,permitir accesos controlados a las áreas compartidas dela memoria, sin comprometer la protección básica.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 10/37
Gestión de Memoria: Requisitos
Organización Lógica
• De forma casi invariable, la memoria principal de unsistema informático se organiza como un espaciode direcciones lineal o unidimensional que constade una secuencia de bytes o palabras.
• La memoria secundaria, a nivel físico, se organizade forma similar.
• Esta organización refleja fielmente el hardware de lamáquina, no se corresponde con la forma en la quelos programas están construidos habitualmente.
• La mayoría de los programas se organizan enmódulos, algunos de los cuales no sonmodificables (sólo lectura, sólo ejecución) y otroscontienen datos que se pueden modificar.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 11/37
Gestión de Memoria: Requisitos
Organización Lógica
• Si el sistema operativo y el hardware del computador pueden
tratar de forma efectiva los programas de usuario y los datosen forma de módulos de algún tipo, se conseguirá una seriede ventajas, tales como:
• Los módulos pueden escribirse y compilarseindependientemente, mientras que el sistema resuelve durante
la ejecución todas las referencias de un módulo a otro.• Con un escaso coste adicional, pueden otorgarse varios grados
de protección (sólo lectura, sólo ejecución) a los distintosmódulos.
• Es posible introducir mecanismos por medio de los cuales los
procesos puedan compartir módulos. La ventaja de ofrecercompartición a nivel de módulo es que esto se corresponde conla visión del problema que tiene el usuario y, por tanto, es fácilpara el usuario especificar la compartición que desea.
• La técnica de gestión de memoria que más fácilmente
satisface estas necesidades es la segmentación.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 12/37
Gestión de Memoria: Requisitos
Organización Física
• Una memoria secundaria de gran capacidad puede permitir unalmacenamiento a largo plazo de programas y datos, al tiempo que unamemoria principal pequeña mantiene los programas y datos de uso actual.
• En este esquema a dos niveles, la organización del flujo de información entrela memoria principal y la secundaria tiene un gran interés en el sistema. Laresponsabilidad de este flujo podría asignarse al programador, pero esto esimpracticable e indeseable, debido a dos razones:
• La memoria principal disponible para un programa y sus datos puede serinsuficiente. En este caso, el programador emplea una práctica conocida comosuperposición, en la cual el programa y los datos se organizan de tal forma quepuede haber varios módulos asignados a la misma región de memoria, con unprograma principal responsable del intercambio de los módulos según se necesite.Incluso con la ayuda de herramientas de compilación, la programación
superpuesta malgasta el tiempo del programador.• En un entorno multiprogramado, el programador no conoce durante la codificación
cuánto espacio habrá disponible o dónde estará este espacio.
• Está claro entonces que la tarea de mover información entre los dos niveles dememoria debe ser responsabilidad del sistema operativo. Esta tarea es laesencia de la gestión de memoria.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 13/37
Gestión de Memoria
Carga de Programas en la Memoria
Principal• La tarea central de cualquier sistema de gestión
de memoria es traer los programas a memoriaprincipal para su ejecución en el procesador.
• En casi todos los sistemas multiprogramadosmodernos, esta tarea supone un esquemasofisticado conocido como memoria virtual.
• La memoria virtual está, a su vez, basada en el
uso de una de dos técnicas básicas:segmentación y/o paginación.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 14/37
Gestión de Memoria: Carga de Programas en la Memoria
Principal
Técnicas para carga de Programas en
Memoria• Antes de ver estás técnicas de memoria virtual, se
debe preparar el terreno considerando técnicas mássimples que no requieren el uso de memoria virtual.
• Estas son:
• Partición fija
• Partición dinámica o variable
• Paginación simple• Segmentación simple
• El estudio de la memoria virtual resultará mássencillo si se consideran en primer lugar estas dostécnicas, sin tener en cuenta la memoria virtual.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 15/37
Gestión de Memoria: Carga de Programas en la Memoria
Principal
Partición fija:
• En la mayoría de losesquemas de gestión de
memoria, se puede suponerque el sistema operativoocupa una parte fija dememoria principal y que elresto de la memoria estádisponible para ser usado porvarios procesos.
• El esquema más sencillo degestión de la memoriadisponible es dividirla enregiones con límites fijos.
• Pueden ser particiones del
mismo tamaño o de distintotamaño.
Sistema Operativo
512k
512k
512k
512k
Sistema Operativo
512k
256k
768k
128k
384k
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 16/37
est n e emor a: arga e rogramas en a
Memoria Principal
•Un programa puede ser demasiado grande para caber en lapartición.•En este caso, el programador debe diseñar el programa consuperposiciones, para que sólo parte del programa esté en memoriaprincipal a la vez.
•Cuando se necesita un módulo que no está presente, el programa deusuario debe cargar dicho módulo en la partición del programa,superponiéndose a los programas y datos que se encuentren en ella.
•El uso de memoria principal es muy ineficiente.•Cualquier programa, sin importar lo pequeño que sea, ocupará unapartición completa. Este fenómeno, en el que se malgasta el espaciointerno de una partición cuando el bloque de datos cargado sea máspequeño que la partición, se denomina fragmentación interna .
•Puesto que los tamaños de partición se programan en el momento de lageneración del sistema, los trabajos pequeños no hacen un usoeficiente del espacio de las particiones.
•El número de particiones especificadas en el momento de lageneración del sistema limita el número de procesos activos (nosuspendidos) del sistema.
•En un entorno en el que los requisitos básicos de almacenamiento detodos los procesos se conocen de antemano, puede ser una técnicarazonable, pero, en la mayoría de los casos, ineficiente.
DesventajasdePaginación
Fija:
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 17/37
Gestión de Memoria: Carga de Programas en la Memoria Principal
• Particiones Dinámicas (variables) – Características
• Las particiones son variables en número y longitud.
• Cuando se trae un proceso a memoria principal, se le asignaexactamente tanta memoria como necesita y no más.
– Ventajas
• No hay desperdicio, pues la partición tiene exactamente el tamañonecesario.
– Desventajas• Este método comienza bien, pero, finalmente, desemboca en una
situación en la que hay un gran número de huecos pequeños enmemoria.
• Conforme pasa el tiempo, la memoria comienza a estar más
fragmentada y su rendimiento decae.• Este fenómeno se denomina fragmentación externa y se refiere al
hecho de que la memoria externa a todas las particiones sefragmenta cada vez más, a diferencia de la fragmentación interna,que se comentó anteriormente.
– Ver figura 6.4. Efectos de la partición variable dinámica.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 18/37
Gestión de Memoria: Carga de Programas en la Memoria
Principal: Efectos de la partición dinámica
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 19/37
Gestión de Memoria: Carga de Programas en la Memoria
Principal
8Partición Dinámica: Condensación de huecos
8Al terminar un trabajo se puede comprobar si el
almacenamiento liberado colinda con otras áreas libres dealmacenamiento. Si es así se registra en la lista dealmacenamiento libre uniendo huecos libres. Esto seconoce como Condensación.
Sistema Operativo
512k
Otros usuarios
Hueco de 2k
5k usuario A
Otros usuarios
Sistema Operativo
512k
Otros usuarios
Hueco de 2k
Hueco de 5k
Otros usuarios
Sistema Operativo
512k
Otros usuarios
Hueco de 7k
Otros usuarios
Usuario Atermina y libera
memoria
El S.O. combinahuecos adyacentes
y forma un huecoúnico más grande
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 20/37
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 21/37
Gestión de Memoria: Carga de Programas en la Memoria
Principal8Partición dinámica: Inconvenientes de la
Compactación del Almacenamiento8Consume recursos del sistema que podrían utilizarse de
forma productiva.
8El sistema debe detener todas sus actividades mientrascompacta, ocasionando tiempos de respuesta irregularespara usuarios interactivo y podría ser devastador en
sistemas de tiempo real.8 Implica reubicar los trabajos que están en el
almacenamiento.
8Puede requerirse con demasiada frecuencia. Con unacombinación normal de trabajos que cambia rápidamente amenudo es necesario compactar, los recursos de sistemaque se consuman quizás no justifiquen las ventajas de lacompactación
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 22/37
Gestión de Memoria: Carga de Programas en la Memoria
Principal
• Estrategia del mejor ajuste: Un trabajo queentre en el sistema se colocará en el huecode memoria principal en el que deje la menorcantidad de espacio sin utilizar.Intuitivamente esta es la estrategia másatractiva.
• Estrategia del primer ajuste: Un trabajo queentre en el sistema se colocará en el primerhueco disponible que sea lo bastante grandepara contenerlo. Ventaja: Permite decidirrápidamente donde se colocará un trabajo.
• Estrategia del peor ajuste: A primera vista es
extravagante, sin embargo tiene una ventaja:Al colocar el trabajo en el hueco más grandeel hueco restante es, a menudo, tambiéngrande pudiendo contener un nuevo trabajoo proceso relativamente grande.
Estrategias
decolocaciónen
memoria:
Estrategias
decolocaciónen
memoria:
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 23/37
Gestión de Memoria: Carga de Programas en la Memoria Principal
• Tanto las particiones de tamaño fijo comolas de tamaño variable hacen un usoineficiente de la memoria; las primerasgeneran fragmentación interna, mientras quelas segundas originan fragmentaciónexterna.
• Supóngase, no obstante, que la memoriaprincipal se encuentra particionada en trozosiguales de tamaño fijo relativamentepequeños y que cada proceso está divididotambién en pequeños trozos de tamaño fijo ydel mismo tamaño que los de memoria.
• En tal caso, los trozos del proceso,conocidos como páginas, pueden asignarsea los trozos libres de memoria, conocidoscomo marcos o marcos de página.
PaginaciónSimple
PaginaciónSimple
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 24/37
Gestión de Memoria:
Carga de Programas en la Memoria Principal:
Asignación de Páginas de Procesos a Marcos Libres (1/2)
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 25/37
Gestión de Memoria:
Carga de Programas en la Memoria Principal:
Asignación de Páginas de Procesos a Marcos Libres (2/2)
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 26/37
Gestión de Memoria:
Carga de Programas en la Memoria Principal:
Asignación de Páginas de Procesos a Marcos Libres
8En el ejemplo anterior, las cinco páginas del proceso D se carganen los marcos 4, 5, 6, 11 y 12. La figura abajo muestra las distintas
tablas de páginas en este instante. Cada tabla de páginascontiene una entrada por cada página del proceso, por lo que latabla se indexa fácilmente por número de página (comenzando enla página 0).
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 27/37
Gestión de Memoria: Carga de Programas en la Memoria
Principal
• Se puede comprobar que la paginación simple, tal ycomo se describe, es similar a la partición estática. Lasdiferencias están en que, con paginación, las particionesson algo más pequeñas, un programa puede ocupar másde una partición y éstas no tienen por qué estar
contiguas.• Mediante la paginación simple, la memoria principal se
divide en pequeños marcos del mismo tamaño.• Cada proceso se divide en páginas del tamaño del
marco; los procesos pequeños necesitaran pocas
páginas, mientras que los procesos grandes necesitaránmás.• Cuando se introduce un proceso en memoria, se cargan
todas sus páginas en los marcos libres y se rellena sutabla de páginas. Esta técnica resuelve la mayoría de losproblemas inherentes a la partición.
Paginación Simple: ResumenPaginación Simple: Resumen
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 28/37
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 29/37
Gestión de Memoria: Carga de Programas en la Memoria Principal
Segmentación Simple
Como consecuencia del empleo de segmentos de distinto tamaño, lasegmentación resulta similar a la partición dinámica.
En ausencia de un esquema de superposición o del uso de memoria virtual, seríanecesario cargar en memoria todos los segmentos de un programa para su
ejecución.
La diferencia, en comparación con la partición dinámica, radica en que, consegmentación, un programa puede ocupar más de una partición y éstas no tienen
por qué estar contiguas.
La segmentación elimina la fragmentación interna, pero, como la particióndinámica, sufre de fragmentación externa.
Sin embargo, debido a que los procesos se dividen en un conjunto de partes máspequeñas, la fragmentación externa será menor.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 30/37
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 31/37
Gestión de Memoria: Memoria Virtual
ConceptoConcepto
• El término memoria virtual se refiere a lacapacidad para obtener acceso a direccionesen un espacio de almacenamiento (secundario)
mucho mayor que el disponible en elalmacenamiento primario.
Clave del ConceptoClave del Concepto
• Disociación de las direcciones a que hacereferencia un proceso en ejecución de lasdirecciones disponibles en el almacenamiento.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 32/37
Gestión de Memoria: Memoria Virtual
MemoriaFísica
MemoriaFísica
Archivo
de cachédel
sistema
Archivo
de cachédel
sistema
DiscoDisco
MemoriaVirtualMemoriaVirtual
Gestión de Memoria Memoria Virtual
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 33/37
Gestión de Memoria: Memoria Virtual:
Estructuras de Hardware y de Control
• Cuando se compararon la paginación y segmentación simple por un lado, conla partición estática y dinámica por otro, se pusieron las bases de un avance
fundamental en la gestión de memoria.• Las claves de este avance son dos características de la paginación y la
segmentación: – Todas las referencias a memoria dentro de un proceso son direcciones lógicas
que se traducen dinámicamente a direcciones físicas durante la ejecución. Estoquiere decir que un proceso puede cargarse y descargarse de memoria principal
de forma que ocupe regiones diferentes en instantes diferentes a lo largo de suejecución.
– Un proceso puede dividirse en varias partes (páginas o segmentos) y no esnecesario que estas partes se encuentren contiguas en memoria principal durantela ejecución. Esto es posible por la combinación de la traducción dinámica dedirecciones en tiempo de ejecución y el uso de una tabla de páginas o desegmentos.
• Si estas dos características están presentes, no será necesario que todaslas páginas o todos los segmentos de un proceso estén en memoria durantela ejecución.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 34/37
Gestión de Memoria: Memoria Virtual:
Estructuras de Hardware y de Control
Pasos bajo un esquema de memoria virtual:
El sistema operativo comienza trayendo sólo unospocos fragmentos, incluido el fragmento que contieneel comienzo del programa.
Se llamará conjunto residente del proceso a la partede un proceso que está realmente en memoriaprincipal.
Cuando el proceso se ejecuta, todo irá sobre ruedasmientras todas las referencias a memoria estén enposiciones que pertenezcan al conjunto residente.
A través de la tabla de páginas o de segmentos, elprocesador siempre es capaz de determinar si esto es
así.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 35/37
G tió d M i M i Vi t l
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 36/37
Gestión de Memoria: Memoria Virtual:
Estructuras de Hardware y de Control
Ventajas del uso de memoria virtual:
• Se pueden conservar más procesos en memoria principal. Puesto que se van acargar sólo algunos fragmentos de un proceso particular, habrá sitio para másprocesos.
• Esto conduce a una utilización más eficiente del procesador, puesto que es másprobable que, por lo menos, uno de los numerosos procesos esté en estadoListo en un instante determinado.
• Es posible que un proceso sea más grande que toda la memoria principal. Se
elimina así una de las limitaciones más notorias de la programación. Sin elesquema que se ha expuesto, un programador debe ser consciente de cuántamemoria tiene disponible.
• Si el programa que está escribiendo es demasiado grande, el programador debeidear formas de estructurar el programa en fragmentos que puedan cargarse deforma separada con algún tipo de estrategia de superposición.
• Con una memoria virtual basada en paginación o segmentación, este trabajoqueda para el sistema operativo y el hardware. En lo que atañe al programador,se las arregla con una memoria enorme, dependiendo del tamaño dealmacenamiento en disco. El sistema operativo cargará automáticamente enmemoria principal los fragmentos de un proceso cuando los necesita.
• Se pueden conservar más procesos en memoria principal. Puesto que se van acargar sólo algunos fragmentos de un proceso particular, habrá sitio para másprocesos.
• Esto conduce a una utilización más eficiente del procesador, puesto que es másprobable que, por lo menos, uno de los numerosos procesos esté en estadoListo en un instante determinado.
• Es posible que un proceso sea más grande que toda la memoria principal. Se
elimina así una de las limitaciones más notorias de la programación. Sin elesquema que se ha expuesto, un programador debe ser consciente de cuántamemoria tiene disponible.
• Si el programa que está escribiendo es demasiado grande, el programador debeidear formas de estructurar el programa en fragmentos que puedan cargarse deforma separada con algún tipo de estrategia de superposición.
• Con una memoria virtual basada en paginación o segmentación, este trabajoqueda para el sistema operativo y el hardware. En lo que atañe al programador,se las arregla con una memoria enorme, dependiendo del tamaño dealmacenamiento en disco. El sistema operativo cargará automáticamente enmemoria principal los fragmentos de un proceso cuando los necesita.
8/18/2019 SO05GestióndeMemoria
http://slidepdf.com/reader/full/so05gestiondememoria 37/37
Gestión de Memoria: Memoria Virtual: Comparación