Unidad 5 Gestion de Memoria

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 18

5.

1
Gestión de Memoria

Versión 1.1. REPÚBLICA DOMINICANA. 2019.


Dirección Virtual
virtual.itsc.edu.do

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.

Importancia de la Gestión de Memoria


En un sistema multiprogramado resulta vital una gestión efectiva de la memoria.
Si sólo hay unos pocos procesos en memoria, entonces la mayor parte del tiempo
estarán esperando a la E/S y el procesador estará desocupado.
Por ello, hace falta repartir eficientemente la memoria para meter tantos procesos
como sea posible.

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

1. Atender las solicitudes de memoria de los procesos (asignaciones y


liberaciones)
2. Protección de la memoria

La protección de la memoria es necesaria, no solo para garantizar que pueda


ejecutarse cualquier proceso, también para establecer límites de uso. Sucede que, si
se ejecutan varios programas de manera simultánea, todos deben estar escritos en
la RAM, ello incluye el código y los datos del Sistema Operativo; hay que evitar
entonces que un proceso dañe el código de otro o modifique la ubicación del propio.

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.

La gestión de la memoria ha de garantizar también que pueda localizarse, de


manera unívoca, el código de cualquier proceso para ejecutarle o eliminarlo.

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.

Carga de Programas en la Memoria Principal


La tarea central de cualquier sistema de gestión de memoria es traer los programas
a memoria principal para su ejecución en el procesador.
En casi todos los sistemas multiprogramados modernos, esta tarea supone un
esquema sofisticado 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.

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ás simples 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ás sencillo si se consideran en primer
lugar estas dos técnicas, sin tener en cuenta la memoria virtual.

Carga de Programas en la Memoria


Principal
Partición fija:
En la mayoría de los esquemas de
gestión de memoria, se puede suponer que el
sistema operativo ocupa una parte fija de
memoria principal y que el resto de la memoria
está disponible para ser usado por varios
procesos.

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.

Desventajas de Paginación Fija:

 Un programa puede ser demasiado grande para caber en la partición.


 En este caso, el programador debe diseñar el programa con superposiciones,
para que sólo parte del programa esté en memoria principal a la vez.
 Cuando se necesita un módulo que no está presente, el programa de usuario
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á una partición
completa. Este fenómeno, en el que se malgasta el espacio interno de una
partición cuando el bloque de datos cargado sea más pequeño que la partición,
se denomina fragmentación interna.
 Puesto que los tamaños de partición se programan en el momento de la
generación del sistema, los trabajos pequeños no hacen un uso eficiente del
espacio de las particiones.
 El número de particiones especificadas en el momento de la generación del
sistema limita el número de procesos activos (no suspendidos) del sistema.
 En un entorno en el que los requisitos básicos de almacenamiento de todos los
procesos se conocen de antemano, puede ser una técnica razonable, pero, en la
mayoría de los casos, ineficiente.

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 asigna exactamente
tanta memoria como necesita y no más

Ventajas

No hay desperdicio, pues la partición tiene exactamente el tamaño necesario

8
Desventajas Figura No. 2
Efectos de la partición variable dinámica

 Este método comienza bien,


pero, finalmente, desemboca en
una situación en la que hay un
gran número de huecos
pequeños en memoria.

 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 se fragmenta cada
vez más, a diferencia de la
fragmentación interna, que se
comentó anteriormente.

Fuente:http://sistemasoperativos2015-
i.blogspot.com/2015/05/particiones-fijas-y-
dinamicas.html

Partición Dinámica: Condensación de huecos

Al terminar un trabajo se puede comprobar si el almacenamiento liberado colinda


con otras áreas libres de almacenamiento. Si es así se registra en la lista de
almacenamiento libre uniendo huecos libres. Esto se conoce como Condensación.

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

Estrategias de colocación en memoria:


 Estrategia del mejor ajuste: Un trabajo que entre en el sistema se colocará
en el hueco de memoria principal en el que deje la menor cantidad de espacio
sin utilizar. Intuitivamente esta es la estrategia más atractiva.

 Estrategia del primer ajuste: Un trabajo que entre en el sistema se colocará


en el primer hueco disponible que sea lo bastante grande para contenerlo.
Ventaja: Permite decidir rá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 grande el hueco
restante es, a menudo, también grande pudiendo contener un nuevo trabajo o
proceso relativamente grande.

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)

Paginación Simple: Resumen


Se puede comprobar que la paginación simple, tal y como se describe, es similar a la
partición estática. Las diferencias están en que, con paginación, las particiones son
algo más pequeñas, un programa puede ocupar más de 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
necesitarán pocas páginas, mientras que los procesos grandes necesitarán más.
Cuando se introduce un proceso en memoria, se cargan todas sus páginas en los
marcos libres y se rellena su tabla de páginas. Esta técnica resuelve la mayoría de
los problemas inherentes a la partición.

12
Segmentación Simple

En este caso, el programa y sus


datos asociados se dividen en un
conjunto de segmentos.

No es necesario que todos los


segmentos de todos los
Segmentación Simple programas tengan la misma
longitud, aunque existe una
longitud máxima de segmento.

Como en la paginación, una


dirección lógica segmentada
consta de dos partes, en este
caso un número de segmento y
un desplazamiento.

 Como consecuencia del empleo de segmentos de distinto tamaño, la


segmentación resulta similar a la partición dinámica.
 En ausencia de un esquema de superposición o del uso de memoria virtual,
sería necesario 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, con
segmentació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ón
dinámica, sufre de fragmentación externa.
 Sin embargo, debido a que los procesos se dividen en un conjunto de partes
más pequeñas, la fragmentación externa será menor.
 Otra consecuencia del tamaño desigual de los segmentos es que no hay una
correspondencia simple entre las direcciones lógicas y las direcciones físicas.
 De forma análoga a la paginación, un esquema de segmentación simple hará
uso de una tabla de segmentos para cada proceso y una lista de bloques libres
en memoria principal.
 Cada entrada de tabla de segmentos tendría que contener la dirección de
comienzo del segmento correspondiente en memoria principal.
La entrada deberá proporcionar también la longitud del segmento para asegurar
que no se usan direcciones no válidas.

13
Memoria Virtual
Concepto

El término memoria virtual se refiere a la capacidad para obtener acceso a


direcciones en un espacio de almacenamiento (secundario) mucho mayor que el
disponible en el almacenamiento primario.

Clave del Concepto


Disociación de las direcciones a que hace referencia un proceso en ejecución de las
direcciones disponibles en el almacenamiento.

Memoria
Física

Archivo de
caché del Memoria
sistema
Virtual

Disco

Estructuras de Hardware y de Control


Cuando se compararon la paginación y segmentación simple, por un lado, con la
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. Esto
quiere decir que un proceso puede cargarse y descargarse de memoria
principal de forma que ocupe regiones diferentes en instantes diferentes a lo
largo de su ejecución.
14
 Un proceso puede dividirse en varias partes (páginas o segmentos) y no es
necesario que estas partes se encuentren contiguas en memoria principal
durante la ejecución. Esto es posible por la combinación de la traducción
dinámica de direcciones en tiempo de ejecución y el uso de una tabla de
páginas o de segmentos.
Si estas dos características están presentes, no será necesario que todas las páginas
o todos los segmentos de un proceso estén en memoria durante la ejecución.

Paso bajo un esquema de memoria virtual:

El sistema operativo comienza trayendo sólo unos pocos fragmentos, incluido el


fragmento que contiene el comienzo del programa

Se llamará conjunto residente del proceso a la parte de un proceso que está


realmente en memoria principal,

Cuando el proceso se ejecuta, todo irá sobre ruedas mientras todas las referencias
a memoria estén en posiciones que pertenezcan al conjunto residente.

A través de la tabla de páginass o de segmentos, el procesador siempre es capaz de


determinar si esto es así.

Pasos bajo un esquema de memoria virtual (parte 2)

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.

Después de haber emitido la solicitud de E/S, el sistema operativo puede


despachar otro proceso para que se ejecute mientras se realiza la operación
de E/S.

Una vez que el fragmento deseado se ha traído a memoria principal y se ha


emitido la interrupción de E/S, se devuelve el control al sistema operativo,
que coloca el proceso afectado en el estado de Listo.

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

Paginación Segmentación Memoria Virtual Memoria Virtual


Simple Simple Paginada Segmentada

La memoria La memoria La memoria principal La memoria principal


principal está principal no está está dividida en trozos no está dividida.
dividida en trozos dividida. pequeños de tamaño
El programador
pequeños de fijo llamado marcos. El
El programador especifica al
tamaño fijo compilador o el
especifica al compilador los
llamado marcos. El sistema gestor de
compilador los segmentos del
compilador o el memoria dividen los
segmentos del programa (es decir,
sistema gestor de programas en
programa (es el programador toma
memoria dividen páginas.
decir, el la decisión).
los programas en
programador toma Fragmentación interna
páginas. Fragmentación
la decisión). en los marcos.
externa.
Fragmentación
No hay No hay fragmentación
interna en los El sistema operativo
fragmentación externa.
marcos. debe mantener una
interna.
El sistema operativo tabla de segmentos
No hay
Fragmentación debe mantener una para cada proceso
fragmentación
externa. tabla de páginas para indicando la dirección
externa.
cada proceso, indicado de carga y la longitud
El sistema
El sistema en qué marco está de cada segmento.
operativo debe
operativo debe cada página.
mantener una El sistema operativo
mantener una
tabla de El sistema operativo debe mantener una
tabla de páginas
segmentos para debe mantener una lista de huecos libres
para cada proceso,
cada proceso lista de marcos libres. en memoria principal.
indicado en qué
indicando la
marco está cada El procesador emplea El procesador emplea
dirección de carga
página. número de página y números de
y la longitud de
desplazamiento para segmento y
El sistema cada segmento.
calcular las direcciones desplazamiento para
operativo debe
El sistema absolutas. calcular las
mantener una lista
operativo debe direcciones
de marcos libres. Para que el proceso se
mantener una lista absolutas.
ejecute, no hace falta
El procesador de huecos libres en
que todas sus páginas Para que el proceso
emplea número de memoria principal.
estén en marcos de se ejecute, no hace
página y
El procesador memoria principal. Las falta que todos sus
desplazamiento
emplea números páginas se leerán segmentos estén en
para calcular las
de segmento y cuando se necesiten. memoria principal.
direcciones
desplazamiento La carga de una Los segmentos se
absolutas.
para calcular las página en memoria leerán cuando se
Todas las páginas direcciones principal puede exigir necesiten. La carga
de un proceso absolutas. descargar otra al de un segmento en
deben estar en disco. memoria principal
Todos los
memoria principal puede requerir
segmentos de un
para que el descargar uno o más
proceso deben
proceso ejecute, a segmentos al disco.
estar en memoria
menos que se use
principal para que
superposición.
el proceso ejecute,
a menos que se
use superposición.

17
BIBLIOGRAFIA

• Ida M. Flynn. Sistemas operativos. Sexta Edición, Editorial Cengage Learning.


2011
• Silberschatz, Abraham Galvin, Peter. Sistema Operativos.
Ed. Pearson.
• Stalling, William. Sistemas Operativos. Ed. Prentice-Hall.
• Silberschatz Galvin Gagne, Fundamentos de Sistemas Operativos, Séptima Edición, Mc
Graw Hill
• Instituto Puig Castellar de Santa Coloma de Gramenet: Enlace a los apuntes de sistemas
operativos
https://elpuig.xeill.net/Members/vcarceler/c1/didactica/apuntes/ud3/na7

18

También podría gustarte