memoria

Anuncio
Sistemas Operativos
Clase 7: detección de interbloqueos y
administración de memoria.
Resumen: interbloqueos
Cuando proceso solicita un recurso no disponible, el
proceso pasa a estado de espera; pero es posible que
nunca cambie de estado ya que dicho recurso
solicitado no puede ser liberado debido a que lo tiene
otro proceso en espera.
Si sucede lo anterior, decimos que hay un interbloqueo
o bloqueo mutuo.
Resumen: interbloqueos
Las condiciones necesarias para la existencia de
interbloqueos son:
•
•
•
•
Exclusión mutua.
Retención y espera.
No expropiación.
Espera circular.
Resumen: interbloqueos
Básicamente existen tres formas de tratar con los
interbloqueos:
• Prevenirlos o no permitir que sucedan.
• Evadirlos al solicitar información a los procesos.
• Permitir que sucedan.
Resumen: interbloqueos
Si permitimos que sucedan los interbloqueos, en
ocasiones es necesario conocer cuándo ha sucedido
un interbloqueo, y de esta forma tomar alguna acción:
• Informar.
• Expropiar.
• Interrumpir.
Resumen: interbloqueos
La detección de interbloqueos se realiza con ayuda del
grafo de asignación de recursos o grafo de
interbloqueos.
El grafo de asignación de recursos es una
“instantánea” del sistema, en donde los nodos
representan recursos o procesos y las aristas la
asignación o solicitud de recursos.
Detección de interbloqueos
El grafo de asignación de recursos, nos permite
determinar la existencia de un bloqueo mutuo cuando
existen ciclos en el grafo; sin embargo:
• Un bloqueo mutuo se refleja en un ciclo en el
grafo,
• Pero la existencia de un ciclo, no necesariamente
indica la existencia de un bloqueo mutuo.
Detección de interbloqueos
Algoritmo de detección de ciclos en grafos:
P = Conjunto de todos los procesos.
S = 
D = Conjunto de los procesos no bloqueados.
Mientras (D!= )
{
q = Un elemento de D;
Reducir q;
S <- q;
Calcular nuevamente D;
}
Si (P=S) No hay bloqueo mutuo
Otro Hay bloqueo mutuo de los procesos P – S.
Detección de interbloqueos
Otro método para la detección de interbloqueos es
con matrices; dados p = |P| y r = |R|, definimos:
• Matriz de asignación Ap
x r. Cada elemento a[i, j] representa las
instancias asignadas del recurso j al proceso i.
•
Matriz de solicitud Sp x r. s[i, j] indica las instancias solicitadas del recurso j por el
proceso i.
•
Vector de instancias Er. E[j] indica el número de instancias del recurso j.
Detección de interbloqueos
• Vector de instancias disponibles Dr. D[j] indica el número de
instancias no asignadas del recurso j.
La idea es hacer operaciones con las matrices considerando las siguientes restricciones:
Asignación:
Solicitud:
Detección de interbloqueos
Al igual que son el grafo, la idea es hacer reducción:
P = Conjunto de todos los procesos.
Q = 
Salir = FALSO;
Mientras (!Salir)
{
Buscar i  Q tal que  j, s[i, j]  D[j];
si (existe i)
{
Reducir i,  j D[j] = D[j] + a[i, j];
Q <- i;
}
otro Salir = TRUE;
}
Si (P=S) No hay bloqueo mutuo
Otro Hay bloqueo mutuo de los procesos P – Q.
Administración de la memoria
Algunos conceptos importantes:
•
•
•
•
•
•
•
•
Dirección base.
Límite.
Desplazamiento (offset).
Espacio de direcciones lógico.
Espacio de direcciones físico.
Dirección virtual.
Montaje dinámico y estático de bibliotecas.
Intercambio (memoria virtual).
Administración de memoria
El manejo de memoria dentro de un microprocesador
se basa en:
• Segmentación.
 Segmentación pura o simple.
 Segmentación con descriptores.
• Paginación.
Administración de la memoria
Uno de los recursos más importantes en una
computadora es la memoria, ya que los procesos y sus
datos ahí se almacenan durante su ejecución.
El sistema operativo se debe encargar del reparto
eficiente y transparente de la memoria.
Recordemos que un sistema operativo puede ser
monotarea o multitarea, lo cual define la manera en
que la memoria sea repartida.
Administración de la memoria
En un sistema monotarea, la memoria se divide en dos
partes:
• Una zona de memoria para el sistema operativo.
• Y una zona de memoria para el proceso y los datos
del usuario.
Por lo que la gestión o administración de memoria no
resulta tan complicada.
Administración de la memoria
• Sin embargo, en un sistema multitarea o
multiproceso, la administración de memoria resulta
un poco más complicada.
• El SO debe asegurarse de que cada proceso “crea”
que tiene la maquina para el solo.
• La repartición debe ser tal, que puedan entrar la
mayor cantidad de procesos posibles.
Administración de la memoria
Independiente de la administración de memoria que se
contemple, esta debe cumplir determinados objetivos:
•
•
•
•
Cada proceso debe tener su propio espacio lógico.
Protección entre procesos.
Permitir que los procesos compartan memoria.
Soporte a las distintas regiones de memoria de un
proceso.
• Maximizar el rendimiento (multiprogramación).
• Proporciona mapas de memoria muy grandes.
Administración de la memoria
¿Qué requisitos debe cumplir un gestor de memoria?
• Reubicación.
• Protección.
• Compartición.
Administración de la memoria
Los mecanismos de gestión de memoria son los
siguientes:
•
•
•
•
•
•
Partición fija.
Partición dinámica.
Paginación simple.
Segmentación simple.
Memoria virtual paginada.
Memoria virtual segmentada.
Administración de la memoria
Partición fija
Este esquema de administración, divide la memoria en
bloques que pueden ser de igual tamaño o de diferente
tamaño, de tal manera que cada bloque posee una
longitud fija.
El ubicar un proceso en la memoria es extremadamente
fácil, ya que mientras haya una partición se podrá
acomodar un proceso en ella.
Administración de la memoria
Partición fija
Es sencillo de implementar y no sobrecarga al SO,
además es posible sacar algún proceso de alguna
partición para dársela a otro. Sin embargo:
• Para una partición fija, es posible no ubicar cualquier
programa, ya que depende del tamaño.
• Un programa pequeño desperdiciaría toda la
partición, fragmentación interna.
• Limita el número de procesos.
Administración de la memoria
Partición fija
La solución a los problemas anteriores, consiste en
proponer diferentes bloques de memoria para
acomodar los procesos según su tamaño. Esto permite
dos tipos de asignación:
• Una fila de procesos por cada tamaño.
• Una fila de procesos para todos los bloques.
Administración de la memoria
Partición fija
Aun con el cambio anterior, el esquema no es optimo,
ya que pueden haber bloques de memoria
desperdiciados, cuando no se tienen procesos de todos
los tamaños. Esto genera cambios en el gestor de
memoria; por ejemplo:
• Proponer esquemas de intercambio.
• Acomodar procesos en particiones de mayor
tamaño.
Administración de la memoria
Partición dinámica
• Este esquema asigna la cantidad de memoria que se
necesita y no más de la debida.
• Sin embargo, a medida que pasa el tiempo, el
proceso de asignación y liberación de memoria
produce que se creen huecos de memoria,
fragmentación externa.
• Es necesario un proceso de compactación de
memoria a fin de eliminar la fragmentación. Este
proceso requiere tiempo de CPU.
Administración de la memoria
Partición dinámica
Para la ubicar un proceso o datos en la memoria, este
esquema de administración ofrece tres algoritmos:
• Mejor ajuste.
• Primer ajuste.
• Peor ajuste.
Administración de la memoria
Partición dinámica
La eficiencia de cada algoritmo depende de la
secuencia de solicitudes de memoria; sin embargo,
podemos mencionar que:
• Primer ajuste: es el más sencillo y el más rápido, y
generalmente es mejor que todos.
• Mejor ajuste: reduce fragmentación interna, pero no
es tan rápido como el anterior..
Administración de la memoria
Partición dinámica:
• Peor ajuste: tiene el peor desempeño, ya que llena la
memoria con pequeños bloques que al ser liberados,
requieren una mayor compactación.
Administración de la memoria
Paginación simple
En general las técnicas de partición tienen malos
resultados debido a la fragmentación, aunque en
general su implementación es relativamente simple.
La idea de la paginación es dividir la memoria en
bloques de memoria de menor tamaño, de esta forma
un proceso también se vera divido en bloques del
mismo tamaño que la memoria.
Administración de la memoria
Paginación simple
De esta manera, los trozos de memoria en los que se
encuentra dividido un proceso, se le conoce como
página, mientras que los trozos libres se conocen como
marcos de página.
Esto permite que la fragmentación interna solo se
presente en la última página mientras que, no existe
fragmentación externa.
Administración de la memoria
Paginación simple
La paginación simple es muy semejante al esquema de
partición, las diferencias son:
• Las paginas son mucho mas pequeñas que los
bloques de memoria.
• Las paginas no tienen por que ser contiguas, como lo
serian los bloques de memoria.
Administración de la memoria
Paginación simple
El direccionamiento de la paginación es relativamente
simple, además permite que este sea muy sencillo
traducir una dirección lógica en una dirección física.
Administración de la memoria
Segmentación simple
En este esquema, un programa y sus datos se dividen
en segmentos. Un segmento es un bloque de memoria
que puede ser de cualquier tamaño; puede medir unos
cuantos bytes hasta varios megabytes.
A diferencia de la paginación, para acceder a cualquier
dirección de memoria, solo hace falta la dirección
lógica.
Administración de la memoria
Segmentación simple
Podemos comparar este esquema con el de partición
dinámica (posee fragmentación externa), pero hay
ligeras diferencias; por ejemplo, un programa podría
ocupar más de una partición, tal y como sucede en
paginación.
La segmentación no es transparente al programador, ya
que debe manejar los bloques de memoria que le son
asignados.
Administración de la memoria
Segmentación simple
Generalmente las dirección lógicas se componen de:
Número de segmento : Desplazamiento
El método para convertir una dirección lógica en una
dirección física es el siguiente:
Administración de la memoria
Segmentación simple
Algunos beneficios son:
•
•
•
•
Simplifica el uso de estructuras de datos grandes.
Permite recompilar y cargar programas.
Permite que los procesos compartan.
Es sencillo implementar esquemas de protección.
Fin de clase 7
Descargar