Вы находитесь на странице: 1из 45

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA

SISTEMAS OPERATIVOS
(Sesión 8)

Profesor: Mg. Mario Huapaya Chumpitaz


INDICE
UNIDAD III: ADMINISTRACION DE LA MEMORIA REAL

1. Conceptos de Memoria
2. Objetivos de la Memoria Real
3. Jerarquía de la Memoria
4. Modelo de proceso de memoria
5. Organización y Asignación de Memoria
Administración de memoria

Componentes de un SO

Admin de Admin de Admin de Admin de


Procesos Memoria Archivos I/O
Administración de memoria

Monitorear las partes de la memoria


se están utilizando y qué partes no

Administrador de
Memoria
Administrar el intercambio entre la
memoria principal y el disco
¿Que es Gestión de la Memoria?

 La parte del sistema operativo que administra la memoria se llama


administrador de memoria

 Consiste en llevar un registro de las partes de memoria que se estén


utilizando y aquellas que no

 Asignar espacio en memoria a los procesos cuando éstos la necesiten


y liberándola cuando terminen.
Funciones y operaciones del administrador de memoria

1. Reubicación. Permitir el recalculo de direcciones de memoria de


un proceso reubicado.

2. Protección. Evitar el acceso a posiciones de memoria sin el


permiso expreso. (no direcciones absolutas).

3. Compartición. Permitirá procesos diferentes acceder a la misma


porción de memoria.

4. Organización Lógica. Permitir que los programas se escriban


como módulos compilables y ejecutables por separado.

5. Organización Física. Permitir el intercambio de datos en la


memoria primaria y secundaria
Objetivos de la Gestión de Memoria

En sistemas con multiproceso, el S.O. debe “repartir” los recursos


entre los procesos existentes:
• Reparto de procesador: Gestión de procesos
• Reparto de memoria: Gestión de memoria

Los objetivos deseables en la administración de memoria son:


 Ofrecer a cada proceso un espacio lógico propio.
 Proporcionar protección entre los procesos.
 Permitir que los procesos compartan memoria.
 Dar soporte a las distintas regiones del proceso.
 Maximizar el rendimiento del sistema.
 Proporcionar a los procesos mapas de memoria muy
grandes.
Objetivos de la Gestión de Memoria

 Ofrecer a cada proceso un espacio lógico propio.


No se conoce la posición de memoria donde un programa se
ejecutará.
El código ejecutable genera referencias entre 0 y N.
Ejemplo: programa que copia un vector

0000 0000 LOAD R1, #1000


0004 Cabecera 0004 LOAD R2, #2000 • Sistema operativo en
…… 0008 LOAD R3, /1500
0096 0012 LOAD R4, [R1]
direcciones más altas
0100 LOAD R1, #1000 0016 STORE R4, [R2] • Programa se carga en
0104 LOAD R2, #2000 Ejecución 0020 INC R1 dirección 0
0108 LOAD R3, /1500 0024 INC R2
0112 LOAD R4, [R1] 0028 DEC R3 • Se le pasa el control al
0116 STORE R4, [R2] 0032 JNZ /12 programa
0120 INC R1 0036 ……………..
0124 INC R2 ……
0128 DEC R3
0132 JNZ /12
0136 …………….. Sistema Operativo

Archivo ejecutable S. O. Monoprogramación


Objetivos de la Gestión de Memoria

 Ofrecer a cada proceso un espacio lógico propio.


Reubicación
• Es un problema cuando el código tiene direcciones absolutas.
• En un sistema multiprogramación el SO debe tener la libertad
de ubicar al programa donde quiera.
• Consiste en traducir las direcciones lógicas de los programas
ejecutables a direcciones físicas.
Objetivos de la Gestión de Memoria
 Ofrecer a cada proceso un espacio lógico propio.
Reubicación
• La Reubicación crea espacios lógicos independientes para cada
proceso. Existen dos alternativas para la reubicación: (1)
Reubicación por hardware y (2) Reubicación por software.
(2) Reubicación por Software
(1) Reubicación por Hardware
• Traducción de direcciones durante la carga del
• Hardware (MMU) esta encargado de la traducción
programa
• El SO se encarga de:
• Programa en memoria distinto del ejecutable
-Almacenar la función de traducción por proceso
• Desventajas:
- Especificar al Hw la función de traducción del
- No permite mover un programa en
proceso
tiempo de ejecución
• El programa se carga en memoria sin modificar
- No asegura protección
Objetivos de la Gestión de Memoria

 Proporcionar protección entre procesos


• En sistemas monoprogramación se protege el SO.
• En sistemas multiprogramación, además del SO, también debe
haber protección entre los procesos.
• La traducción debe crear espacios disjuntos.
• Es necesario validar todas las direcciones que genera el
programa.
- La detección debe realizarla el hardware del procesador
lanzando una excepción.
- El tratamiento lo hace el SO en respuesta a la excepción
lanzada por el hw.
Objetivos de la Gestión de Memoria

 Permitir que los procesos


compartan memoria (memoria
compartida).
• Las direcciones lógicas de dos
o más procesos se
corresponden con la misma
dirección física.
• La memoria compartida está
bajo el control del SO.
• Los beneficios que se tienen
son:
- Procesos ejecutando un
mismo programa
comparten su código.
- Mecanismos de
comunicación entre
procesos muy rápido.
• Requiere asignación no
contigua
Objetivos de la Gestión de Memoria

 Problemas al compartir
memoria:
• Si una posición de la zona
de memoria tiene
referencia a otra posición
dentro de la misma zona
de memoria:
- En la zona de código
podría darse este caso
cuando se tiene una
condición de bifurcación.
- En la zona de datos
podría darse el caso
cuando se almacena una
lista con punteros.
Objetivos de la Gestión de Memoria

 Dar soporte a las distintas regiones del proceso (soporte de


regiones).
• El proceso presenta un mapa de memoria no homogéneo,
formado por:
- Conjunto de regiones con distintas características.
- Ejemplo: región de código no modificable.
• El mapa del proceso es dinámico.
- Regiones cambian de tamaño (p. ej. La pila).
- Se crean y destruyen regiones.
- Existen zonas sin asignar (huecos).
• La administración de memoria debe dar soporte a las
siguientes características:
- Detectar accesos no permitidos a una región.
- Detectar acceso a huecos.
• El SO debe guardar una tabla de regiones para cada proceso.
Objetivos de la Gestión de Memoria

 Maximizar el rendimiento del


sistema
• Reparto de memoria
maximizando el grado de
multiprogramación.
• Se “desperdicia” memoria
debido a:
- “Restos” inutilizables
(fragmentación).
- Tablas requeridas por el
gestor de memoria.
• Una menor fragmentación
implica tablas muy grandes.
• La solución es la Paginación.
• Otra estrategia para aumentar
el grado de multiprogramación
es el uso de memoria virtual.
Objetivos de la Gestión de Memoria

 Proporcionar a los procesos mapas de memoria muy grandes.


• Resuelto gracias al uso de memoria virtual.
• Antes se usaban los overlays
- Programa dividido en fases que se ejecutaban
sucesivamente.
- En cada momento solo hay una fase residente en
memoria.
- Cada fase realiza su labor y carga la siguiente.
- No es transparente para el programador
Objetivos de la Gestión de Memoria
Jerarquía de Memoria
 Jerarquía de memoria:
– Registros CPU del procesador
– Caché (memoria rápida)
– Memoria principal RAM
– Almacenamiento secundario (memoria virtual)
 Al bajar en la jerarquía más capacidad pero más lento es el dispositivo y más
barato.
 Administrador de memoria:
– Parte del S.O. que gestiona la memoria:
• Control de que partes de la memoria están utilizadas o libres.
• Asignar memoria a procesos y liberarla cuando terminan.
• Administrar intercambio entre memoria y disco (Memoria Virtual).
Jerarquía de Memoria

Memoria Virtual
 La memoria virtual es una técnica para proporcionar la
simulación de un espacio de memoria mucho mayor que la
memoria física de una máquina.
 Esto permite que los programas se hagan sin tener en cuenta el
tamaño exacto de la memoria física
Tiempo de Acceso a distintas memorias
Niveles de Gestión de Memoria

 Nivel de procesos. En este nivel se determina como se reparte el


espacio de memoria entre los procesos existentes. Se trata de un
nivel gestionado por el sistema operativo.
 Nivel de regiones. Establece como se reparte el espacio asignado al
proceso entre las regiones del mismo. Nuevamente, es un nivel
manejado por el sistema operativo.
 Nivel de datos dinámicos. La región de datos dinámicos o heap y la
pila, que mantienen en su interior diversos bloques de información
creados dinámicamente por el programa. Por tanto, se requiere una
estrategia de gestión que determine como se asigna y recupera el
espacio de la región para dar un adecuado soporte a esos bloques
de información. Este nivel esta gestionado por el propio lenguaje de
programación.
Modelo de memoria de un proceso

 El S.O. es el responsable de la gestión de memoria de cualquier


proceso.
 El mapa inicial de memoria de un proceso está relacionado con el
archivo ejecutable que generará el proceso
 ¿Cómo generar el mapa de memoria inicial a partir del ejecutable?
 ¿Cómo se organiza el mapa de memoria?
 ¿Cuáles son sus características básicas?
 ¿Qué operaciones se pueden realizar en el mapa de memoria?
Modelo de memoria de un proceso
 El mapa inicial de un proceso está muy vinculado con el archivo que
contiene el programa ejecutable.
 La generación de un archivo ejecutable puede dividirse en dos fases:

 Compilación:
Se asignan direcciones a
los símbolos definidos Módulo Módulo
Resuelve referencias a los fuente A fuente B

símbolos de cada módulo


Compilador
Genera módulo objeto
 Montaje (o enlace): Módulo Módulo
Bibliotecas
Resuelve referencias objeto A objeto B
entre módulos objeto
Montador
Resuelve referencias a
símbolos de bibliotecas Fichero
ejecutable
Genera resultado (archivo
ejecutable), que incluye
las bibliotecas usadas
Modelo de memoria de un proceso

 En la generación del archivo ejecutable intervienen las bibliotecas y


pueden ser de dos tipos:
• Estáticas:
- Se obtiene un ejecutable autocontenido.
- Ejecutables grandes.
- Código de biblioteca repetido en muchos ejecutables.
- Actualización de la biblioteca implica volver a montar.
• Dinámicas:
- Carga y montaje de la biblioteca en tiempo de ejecución.
- El ejecutable contiene: (1) el nombre de la biblioteca y (2)
rutina de carga y montaje en tiempo de ejecución.
- Se carga en la primera referencia que se haga a ella.
Modelo de memoria de un proceso
 Formato del ejecutable
• Como parte final del proceso de compilación y montaje, se genera
un archivo ejecutable que contiene el código máquina del programa.
Distintos fabricantes han usado diferentes formatos de archivos (p.
ej. ELF de Unix)
Modelo de memoria de un proceso

 El mapa de memoria de un proceso tiene las siguientes características:


• No es algo homogéneo.
• Esta formado por un conjunto de distintas regiones o segmentos.
• Región:
- Zona contigua de memoria tratada como unidad al proteger o
compartir.
- Tiene asociada una determinada información (“objeto de
memoria”).
• Cada región se caracteriza por:
- Dirección de comienzo y tamaño inicial.
- Soporte: donde se almacena su contenido inicial.
- Protección: lectura (r), escritura (w) y ejecución (x).
- Uso compartido o privado.
- Tamaño fijo o variable.
Modelo de memoria de un proceso
 Al crear el mapa de memoria desde el ejecutable las regiones de memoria
se corresponderán básicamente con las secciones del ejecutable más la
pila inicial del proceso.

Compartida, (r,x), T. Fijo, Soporte en


ejecutable

Privada, (r,w), T. Fijo, Soporte en


ejecutable
Privada, (r,w), T. Fijo, Sin Soporte

Privada, (r,w), T. Variable, Sin Soporte,


Crece hacia direcciones más bajas
Pila inicial, argumentos del programa
Modelo de memoria de un proceso
 Durante la ejecución de un proceso se crean
nuevas regiones, así el mapa de memoria
tiene un carácter dinámico. Algunas otras
regiones del mapa de memoria son:
• Región de Heap
- Soporte de memoria dinámica (malloc en C)
- Es: Privada, RW, Tam. Variable, Sin Soporte y
crece hacia direcciones más altas
• Archivo proyectado
- Región asociada al archivo proyectado
- Tam. Variable, Soporte en Archivo
- Protección y carácter compartido o privado
especificado en proyección.
• Memoria compartida
- Región asociada a la zona de memoria
compartida.
- Compartida, Tam. Variable, Sin Soporte y
Protección especificada en proyección.
• Pilas de threads
- Cada pila de thread corresponde con una
región
- Mismas características de la pila de proceso
• Carga de biblioteca dinámica
- Se crean regiones asociadas al código y datos
de la biblioteca.
Modelo de memoria de un proceso

 Durante la vida de un proceso, su mapa de memoria va


evolucionando y con él sus regiones. Existen cuatro operaciones
genéricas sobre dichas regiones:
• Crear región
- Se da de forma implícita al crear el mapa inicial, o por
solicitud del programa (p. ej. Proyectar un archivo).
• Eliminar región
- Se da implícitamente al terminar el proceso o por solicitud
del programa en tiempo de ejecución (p. ej. Desproyectar
un archivo).
• Cambiar de tamaño la región
- Se da implícitamente para la pila o por solicitud del heap.
• Duplicar la región
- Operación requerida por el servicio fork()
Esquema de memorias basados en asignación contigua

 Un esquema simple de administración de memoria consiste en


asignar a cada proceso una zona contigua de memoria para que
en ella resida su mapa de memoria.
 Dentro de este esquema se da la gestión contigua basada en
particiones dinámicas
• Cada vez que se crea un proceso el SO busca un hueco de
tamaño suficiente para el mapa.
• El SO reserva la parte del hueco necesaria para crear en ella
el mapa inicial del proceso
• Es necesario que el procesador tenga dos registros de
propósito especial para tratar las direcciones que generen
los programas.
Esquema de memorias basados en asignación contigua
 El hardware requerido típicamente son dos registros en el
procesador:
• Registro límite
- Para comprobar que cada dirección que genere el
proceso no es mayor que el valor almacenado. De ser así
se genera una excepción.
• Registro base
- Una vez comprobado el registro límite, el procesador le
sumará el valor de este registro a la dirección generada
por el programa, obteniéndose con ello la dirección física
Esquema de memorias basados en asignación contigua

 Gestión del SO
• Almacenar en el BCP los registros límite y base del proceso. Y
carga dichos registros cuando se activa un proceso.
• Mantiene información sobre el estado de ocupación de la
memoria
- Utiliza estructuras de datos que identifican huecos y zonas
asignadas
• Bajo este esquema se genera fragmentación externa:
- Se generan pequeños fragmentos libres entre zonas
asignadas.
- Posible solución : compactación. Sin embargo, este puede
ser un proceso muy costoso.
Esquema de memorias basados en asignación contigua

 Políticas de asignación de espacio


• Qué hueco usar para satisfacer una petición de memoria.
• Posibles políticas:
- Mejor ajuste
o Asignar el menor hueco con tamaño suficiente
o Requiere una lista ordenada por tamaño o buscar en
toda la lista
o Se generan nuevos espacios libres muy pequeños
- Peor ajuste
o Asignar el mayor hueco con tamaño suficiente
o Requiere una lista ordenada por tamaño o buscar en
toda la lista.
- Primer ajuste
o Asignar el primer hueco con tamaño suficiente.
o Suele ser la mejor política
Esquema de memorias basados en asignación contigua

 Valoración del esquema de asignación contigua


• Espacios lógicos independientes
- Se logra mediante los registros límite y base
• Protección
- El uso de los registros límite y base asegura que un proceso no
pueda acceder a la memoria de otros procesos o del sistema
operativo.
• Compartir memoria.
- No es posible
• Soporte de las regiones
- No existe
- Se reserva espacio para huecos
• Maximizar rendimiento y mapas grandes
- Mal aprovechamiento de memoria por fragmentación externa
- No permite memoria virtual
Organización Lógica de la Memoria

 La memoria principal es un
arreglo de palabras o bytes,
cada uno de los cuales tiene
una dirección (espacio de
direcciones).

 La interacción es lograda a
través de un conjunto de
lecturas y escrituras a
direcciones especificas
realizadas por los procesos.
Organización Lógica de la Memoria
 Para que un proceso se ejecute se requiere ubicarlo en
memoria principal junto con los datos que direcciona.
 Para optimizar el uso del computador se requiere tener
varios procesos en memoria principal. (grado de
multiprogramación)
Organización Lógica de la Memoria
 La memoria principal es
pequeña como para
acomodar todos los
programas y datos
permanentemente.
 Por lo que es necesario
implementar
mecanismos de memoria
virtual.
 La memoria virtual es
una técnica para dar la
ilusión de tener más
memoria que la memoria
principal.
Esquemas de Gestión de Memoria de Sistemas

 Memoria real
- Asignación contigua
- Segmentación

 Memoria virtual
- Paginación
- Segmentación paginada
Esquemas de Gestión de Memoria de Sistemas
Asignación contigua: Si bien la asignación contigua podría utilizarse tanto
en sistemas de memoria real como virtual, solamente se justifica su
utilización en sistemas de memoria real. En este caso, el proceso recibe
una única zona contigua de memoria principal, delimitada por una
dirección de comienzo y un tamaño o una dirección de final, como
muestra la figura
Esquemas de Gestión de Memoria de Sistemas
Segmentación: La segmentación es una extensión del sistema contiguo,
en el que se le asignan al proceso varias zonas o segmentos de memoria
principal contigua, típicamente, una por región.
Las operaciones de crear y duplicar una imagen requieren buscar, para
cada región del proceso, una zona libre de la memoria principal donde
quepa dicha región.
Esquemas de Gestión de Memoria de Sistemas
Memoria virtual. Paginación: El esquema de gestión basado en memoria
virtual es el utilizado prácticamente por la totalidad de los sistemas
operativos de propósito general actuales, como Windows o Linux.
La creación y duplicación de una imagen requiere la creación de la
correspondiente tabla de paginas y la creación de las regiones que tenga
la imagen. Eliminar la imagen consiste en eliminar la correspondiente
tabla de paginas, recuperando el espacio que ocupa. Además, hay que
eliminar las regiones que componen la imagen, recuperando los recursos
de almacenamiento que tengan asignados.
Esquemas de Gestión de Memoria de Sistemas
Compartir memoria: En un sistema con memoria virtual los procesos
pueden fácilmente compartir memoria. En efecto, como muestra la figura,
basta con que los procesos compartan una subtabla de segundo nivel.
Esquemas de Gestión de Memoria de Sistemas
Segmentación paginada: La segmentación paginada consiste en emplear
los dos mecanismos descritos anteriormente. Existe un primer nivel de
definición de segmentos, y un segundo nivel de paginación, estando cada
segmento paginado de forma individual. La figura muestra esta secuencia.
Ciclo de vida un programa
En general, las aplicaciones se desarrollan utilizando lenguajes de alto nivel,
dividiendo la funcionalidad en varios módulos (ficheros de código fuente), para
facilitar, de esta manera, un desarrollo incremental, el mantenimiento y la
reutilización del código.
Una vez preparados los módulos fuente, estos deben pasar por varias fases, como
muestra la figura, hasta que se carga el ejecutable en memoria formando la imagen
del correspondiente proceso:
 Compilación.
 Montaje o enlace.
 Carga.
 Ejecución.
Muchas Gracias!!!
mhuapaya.chu@gmail.com

Вам также может понравиться