Unidad 5 Gestion de Memoria
Unidad 5 Gestion de Memoria
Unidad 5 Gestion de Memoria
1
Gestión de Memoria
By María Mena
Figura No. 1
DESARROLLO DEL PROGRAMA Gestión de Memoria
Contenido de la Unidad:
• Introducción
• Gestión de la memoria principal
• Direccionamiento
• Asignación de direcciones
• Jerarquía de almacenamiento
• Técnicas básicas: recubrimientos,
intercambio Fuente: https://tegui.me/os-x-la-gestion-
memoria-ram/
• Gestión de memoria contigua
• Memoria Virtual
• Paginación
• Segmentación paginada
• Políticas de asignación de marcos de páginas
• Políticas de reemplazamiento de páginas
• Hiperpaginación
• Técnicas mixtas
• Asignación de memoria
• Consideraciones del diseño
• Tendencias actuales
Introducción
Gestión de la memoria. Proceso de un programa en ejecución, su código
naturalmente, debe estar en la Memoria RAM. Por tanto, cualquier proceso siempre
requerirá una determinada cantidad de memoria. En ocasiones, es suficiente con
escribir el código directamente en la RAM y configurar los registros adecuados en el
procesador para que este lo ejecute.
En esta situación el proceso solo ocupará aquella porción de memoria en la que está
escrito y se conoce como asignación estática de memoria.
En un sistema monoprogramado, la memoria principal se divide en dos partes:
Una parte para el sistema operativo (monitor residente, núcleo)
Otra parte para el programa que se ejecuta en ese instante.
2
En un sistema multiprogramado, la parte de "usuario" de la memoria debe
subdividirse aún más para hacer sitio a varios procesos.
La tarea de subdivisión la lleva a cabo dinámicamente el sistema operativo y se
conoce como gestión de memoria.
Características
Sin embargo, no son pocas las ocasiones en las que un proceso debe modificar de
manera dinámica la cantidad de memoria que maneja; piensa por ejemplo en un
programa que emplee listas o arreglos dinámicos, o alguno que se emplee para
codificar o decodificar multimedia o para compresión de datos. La memoria es uno
de los más valiosos recursos del hardware y también ha de tenerse en cuenta que
un proceso no debería ocupar toda la RAM. La gestión de memoria, es otro de los
componentes vitales de un Sistema Operativo moderno.
Funciones
Mapa de la memoria
Este mapa se establece al momento de diseñar el Sistema Operativo y se supone
que ningún proceso pueda modificarle directamente.
3
Requisitos
Compartición
Organización
Protección
Lógica
Requisitos
de la Organización
Reubicación
Gestión de Física
Memoria
Reubicación
El programador no puede conocer por adelantado qué otros programas residirán en
memoria en el momento de la ejecución del programa.
Un objetivo de todo S.O. es poder cargar y descargar los procesos activos en la
memoria principal para maximizar el uso del procesador, manteniendo una gran
reserva de procesos listos para ejecutar.
Una vez que un programa haya sido descargado al disco, se limitará a declarar que,
cuando vuelva a ser cargado, debe situarse en la misma región de memoria principal
que antes.
Así, se sabe antes de tiempo dónde debe situarse un programa 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 del programa para dicho proceso.
Puesto que el sistema operativo gestiona la memoria y es responsable de traer el
proceso a memoria principal, estas direcciones deben ser fáciles de conseguir.
El procesador debe ocuparse de las referencias a memoria dentro del programa.
Las instrucciones de bifurcación deben contener la dirección que haga referencia a la
instrucción que se vaya a ejecutar a continuación.
Las instrucciones que hagan referencia a datos deben contener la dirección del byte
o de la palabra de datos referenciada.
4
Protección
Cada proceso debe protegerse contra interferencias no deseadas de otros procesos,
tanto accidentales como intencionadas.
El código de un proceso no puede hacer referencia a posiciones de memoria de otros
procesos, con fines de lectura o escritura, sin permiso.
Hasta cierto punto, satisfacer las exigencias de reubicación aumenta la dificultad de
satisfacción de las exigencias de protección. Puesto que se desconoce la ubicación de
un programa en memoria principal, es imposible 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ón para asegurar que sólo hacen referencia al
espacio de memoria destinado a dicho proceso.
Necesidades de Protección
Normalmente, un proceso de usuario no puede acceder a ninguna parte del sistema
operativo, tanto programa como datos.
El programa de un proceso no puede en general bifurcar hacia una instrucción de
otro proceso.
Además, sin un acuerdo especial, el programa de un proceso no puede acceder al
área de datos de otro proceso.
El procesador debe ser capaz de abandonar tales instrucciones en el momento de la
ejecución.
Compartición
Cualquier mecanismo de protección que se implemente debe tener la flexibilidad de
permitir el acceso de varios procesos a la misma zona de memoria principal.
Por ejemplo, si una serie de procesos están ejecutando el mismo programa,
resultaría beneficioso permitir a cada proceso que acceda a la misma copia del
programa, en lugar de tener cada uno su propia copia aparte.
Los procesos que cooperan en una tarea pueden necesitar acceso compartido a la
misma estructura de datos.
El sistema de gestión de memoria debe, por tanto, permitir accesos controlados a
las áreas compartidas de la memoria, sin comprometer la protección básica.
5
Organización Lógica
De forma casi invariable, la memoria principal de un sistema informático se organiza
como un espacio de direcciones lineal o unidimensional que consta de una secuencia
de bytes o palabras.
La memoria secundaria, a nivel físico, se organiza de forma similar.
Esta organización refleja fielmente el hardware de la máquina, no se corresponde
con la forma en la que los programas están construidos habitualmente.
La mayoría de los programas se organizan en módulos, algunos de los cuales no son
modificables (sólo lectura, sólo ejecución) y otros contienen datos que se pueden
modificar.
Si el sistema operativo y el hardware del computador pueden tratar de forma
efectiva los programas de usuario y los datos en forma de módulos de algún tipo, se
conseguirá una serie de ventajas, tales como:
Los módulos pueden escribirse y compilarse independientemente, 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 distintos módulos.
Es posible introducir mecanismos por medio de los cuales los procesos puedan
compartir módulos. La ventaja de ofrecer compartición a nivel de módulo es
que esto se corresponde con la visión del problema que tiene el usuario y, por
tanto, es fácil para 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.
Organización Física
Una memoria secundaria de gran capacidad puede permitir un almacenamiento a
largo plazo de programas y datos, al tiempo que una memoria 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 entre la
memoria principal y la secundaria tiene un gran interés en el sistema. La
responsabilidad de este flujo podría asignarse al programador, pero esto es
impracticable e indeseable, debido a dos razones:
La memoria principal disponible para un programa y sus datos puede ser
insuficiente. En este caso, el programador emplea una práctica conocida como
superposición, en la cual el programa y los datos se organizan de tal forma
que puede haber varios módulos asignados a la misma región de memoria,
con un programa principal responsable del intercambio de los módulos según
6
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 de
memoria debe ser responsabilidad del sistema operativo. Esta tarea es la
esencia de la gestión de memoria.
7
El esquema más sencillo de gestión de la memoria disponible es dividirla en regiones
con límites fijos.
Pueden ser particiones del mismo tamaño o de distinto tamaño.
Ventajas
8
Desventajas Figura No. 2
Efectos de la partición variable dinámica
Fuente:http://sistemasoperativos2015-
i.blogspot.com/2015/05/particiones-fijas-y-
dinamicas.html
9
Partición dinámica: Compactación del Almacenamiento
Implica trasladar todas las áreas ocupadas de almacenamiento a algún extremo de la
memoria principal.
Inconvenientes de la
Compactación del
Almacenamiento
Consume recursos del sistema
que podrían utilizarse de forma
productiva.
El sistema debe detener todas
sus actividades mientras
compacta, ocasionando
tiempos de respuesta
irregulares para usuarios
interactivo y podría ser
devastador en sistemas de tiempo real.
Implica reubicar los trabajos que están en el almacenamiento.
Puede requerirse con demasiada frecuencia. Con una combinación normal de trabajos
que cambia rápidamente a menudo es necesario compactar, los recursos de sistema
que se consuman quizás no justifiquen las ventajas de la compactación
10
Paginación Simple Figura No. 3 Figura
Asignación de Páginas de Procesos a Marcos Libres
Tanto las particiones de tamaño fijo
como las de tamaño variable hacen
un uso ineficiente de la
memoria; las primeras generan
fragmentación interna,
mientras que las segundas
originan fragmentación
externa.
Supóngase, no obstante, que la
memoria principal se encuentra
particionada en trozos iguales
de tamaño fijo relativamente
pequeños y que cada proceso
está dividido también en
pequeños trozos de tamaño fijo
y del mismo tamaño que los de
memoria.
En tal caso, los trozos del
proceso, conocidos como páginas, Fuente:
https://cursos.clavijero.edu.mx/cursos/182_so/modulo3/contenid
pueden asignarse a los trozos os/tema3.2.4.html?opc=1
libres de memoria, conocidos
como marcos o marcos de página.
11
Asignación de Páginas de Procesos a Marcos Libres
En el ejemplo anterior, las cinco páginas del proceso D se cargan en 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áginas contiene una entrada por cada página del proceso, por lo que
la tabla se indexa fácilmente por número de página (comenzando en la página 0)
12
Segmentación Simple
13
Memoria Virtual
Concepto
Memoria
Física
Archivo de
caché del Memoria
sistema
Virtual
Disco
Cuando el proceso se ejecuta, todo irá sobre ruedas mientras todas las referencias
a memoria estén en posiciones que pertenezcan al conjunto residente.
Para que la ejecución de este proceso siga más tarde, el sistema operativo
necesita traer a memoria principal el fragmento del proceso que contiene la
dirección lógica que provocó el fallo de acceso.
Para ello, el sistema operativo emite una solicitud de Lectura de E/S a disco.
15
Ventajas del uso de memoria virtual:
Se pueden conservar más procesos en memoria principal. Puesto que se van a
cargar sólo algunos fragmentos de un proceso particular, habrá sitio para más
procesos.
Esto conduce a una utilización más eficiente del procesador, puesto que es más
probable que, por lo menos, uno de los numerosos procesos esté en estado Listo 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 el esquema que se
ha expuesto, un programador debe ser consciente de cuánta memoria tiene
disponible.
Si el programa que está escribiendo es demasiado grande, el programador debe
idear formas de estructurar el programa en fragmentos que puedan cargarse de
forma separada con algún tipo de estrategia de superposición.
Con una memoria virtual basada en paginación o segmentación, este trabajo queda
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 de almacenamiento en
disco. El sistema operativo cargará automáticamente en memoria principal los
fragmentos de un proceso cuando los necesita.
16
Memoria Virtual: Comparación
Características de la paginación y la segmentación
17
BIBLIOGRAFIA
18