Subido por Santiago Maraz

Diseño de sistemas operativos TPN°3 - GRUPO10

Anuncio
DISEÑO DE SISTEMAS OPERATIVOS
PROFESORA: EVELINA WULF
UNIDAD N° 3: INTERBLOQUEO
GRUPO 10
UNIDAD N° 3: INTERBLOQUEO.
ÍNDICE.
BLOQUEO DE DOS FACES ........................................................................................................ 2
INTERBLOQUEOS DE COMUNICACIONES .............................................................................. 3
BLOQUEO ACTIVO ...................................................................................................................... 6
INANICIÓN .................................................................................................................................... 7
BIBLIOGRAFÍA .............................................................................................................................. 8
1
DISEÑO DE SISTEMAS OPERATIVOS
PROFESORA: EVELINA WULF
UNIDAD N° 3: INTERBLOQUEO
GRUPO 10
UNIDAD N° 3: INTERBLOQUEO.
BLOQUEO DE DOS FACES
Hay un peligro de interbloqueo cuando muchos procesos se ejecutan al mismo
tiempo, aunque hoy en día se conocen varios algoritmos de interbloqueo que son
excelentes para situaciones específicas (pero no así para casos en general).
Un caso conocido por muchos sistemas de base de datos es cuando se solicitan con
frecuencia bloqueos sobre varios registros para luego poder hacer actualizaciones sobre
esos registros bloqueados. Este método se lo conoce cómo bloqueo de dos fases, y
su accionar en cada fase sería:
1° FASE: El proceso trata de bloquear los registros que necesita, uno a la vez.
2° FASE: Realiza las actualizaciones y libera los bloqueos.
Mientras transcurre la primera fase, si un registro bloqueado llegase a ser requerido,
el proceso libera todos sus bloqueos y la primera fase se reinicia. Este método es
parecido a solicitar todos los recursos antes de realizar algo irreversible. Existen
versiones donde el interbloqueo ocurre porque no se liberan los bloqueos y el reinicio
no sucede.
VENTAJAS
- Garantiza la seriabilidad y la
correcta ejecución de los procesos
que no se consiguen con métodos
simples.
DESVENTAJAS
- Bloquea
los elementos que podrían ser
desbloqueados tras su uso ocupados hasta la
segunda fase, impidiendo que otros procesos que
los necesiten los utilicen.
- El rendimiento de este protocolo se degrada
conforme aumenta el grado de concurrencia.
Cómo se mencionó antes, este método no puede aplicarse en forma general.
Podemos mencionar un ejemplo: en sistemas de tiempo real y sistemas de control de
procesos, no es aceptable terminar un proceso a la mitad debido a que un recurso no
está disponible. Tampoco se permite el reinicio si el proceso ya ha leído o escrito
mensajes en la red. Una gran cantidad de aplicaciones no pueden estructurarse de esta
manera.
2
DISEÑO DE SISTEMAS OPERATIVOS
PROFESORA: EVELINA WULF
UNIDAD N° 3: INTERBLOQUEO
GRUPO 10
El método es funcional en situaciones donde las cosas se hayan ordenado con
cuidado por el programador, permitiendo que el programa pueda detenerse en cualquier
momento de la primera fase para luego reiniciarse.
INTERBLOQUEOS DE COMUNICACIONES
Sabemos que los interbloqueos de recursos son el tipo de interbloqueo más
común: un proceso desea algo que otro proceso tiene y debe esperar a que este lo
libere.
Pero hay otros tipos de interbloqueo, cómo los que ocurren en los sistemas de
comunicación dónde los procesos se comunican a través del envío de mensajes. Una
situación común sería la siguiente:
Si se llega perder el mensaje de petición entonces A se bloquea en espera de la
respuesta, B se bloquea en espera de una petición; y sucede un interbloqueo dónde hay
un conjunto de procesos en el que cada proceso está bloqueado en espera de un evento
que sólo otro proceso puede provocar, a este caso se lo conoce cómo interbloqueo de
comunicación. No hay recursos involucrados a la vista ya que A no está en posesión
de un recurso que B quiere ni viceversa.
Los interbloqueos de comunicación no se pueden evitar mediante el
ordenamiento de recursos, ni por una programación cuidadosa (ya que no hay
momentos en los que se puede posponer una petición). Entonces usaremos los tiempos
de espera para anular el interbloqueo.
Cómo ejemplo de interbloqueo de comunicación veamos que pasa en el caso de
las redes de interconexión, específicamente en el Encaminamiento (routing), que tiene
como objetivo determinar la ruta que debe seguir un mensaje desde el origen hasta el
destino. Una red bien diseñada debe estar libre de interbloqueos.
El interbloqueo en una red provoca que los paquetes no puedan avanzar hacia
su destino porque cada uno estará esperando en un enlace a que otro paquete deje
disponible un buffer de entrada. Esto no debe ocurrir porque los enlaces bloqueados
forman un ciclo.
3
DISEÑO DE SISTEMAS OPERATIVOS
PROFESORA: EVELINA WULF
UNIDAD N° 3: INTERBLOQUEO
GRUPO 10
Vamos a poder evitar que ocurra un interbloqueo restringiendo cómo se
adquirieren los canales. Por ejemplo, en orden dimensional y aportando recursos
adicionales como los canales virtuales, que asocian cada enlace físico con más de un
buffer de entrada, es decir son canales adicionales (virtuales) que van a proporcionar
una vía de escape en situaciones que provocan interbloqueo y no aumentan el número
de enlaces en la red.
Un esquema de malla 2D aplicando canales virtuales se vería de la siguiente
manera:
José Francisco Duato Marín realizó un desarrollo teórico posterior sobre las
condiciones necesarias y suficientes que deben cumplir los algoritmos de
encaminamiento para evitar el deadlock. Su aportación básica es la demostración de
4
DISEÑO DE SISTEMAS OPERATIVOS
PROFESORA: EVELINA WULF
UNIDAD N° 3: INTERBLOQUEO
GRUPO 10
que no es necesario eliminar todas las dependencias cíclicas del grafo de dependencia
de canales para obtener un algoritmo libre de interbloqueos siempre que los mensajes
puedan encontrar rutas alternativas hacia el nodo destino que no estén involucradas en
dependencias cíclicas.
Desde luego que, si el mensaje original no se perdió y la respuesta tiene demora,
el receptor destinado puede recibir el mensaje más de una vez. Veamos un sistema de
pago electrónico en el que el mensaje contiene instrucciones para realizar un pago. Es
evidente que no se debe repetir numerosas veces, sólo porque la red es lenta o el tiempo
de espera es corto. Definimos protocolo como el término que se emplea para denominar
al conjunto de normas y pautas para guiar una acción. No todos los interbloqueos
ocurren en los sistemas de comunicaciones, ni todas las redes son interbloqueos de
comunicación y pueden suceder interbloqueos de recursos.
Vemos el ejemplo de la figura, cuya visión es muy general de una red de Internet
formado por dos tipos de computadoras: hosts (servidores) y enrutadores. El host es
una computadora de usuario, ya sea la PC de alguien en su hogar, o de una empresa o
un servidor corporativo y el enrutador es una computadora de comunicaciones
especializada que desplaza paquetes de datos desde el origen hasta el destino. Cada
host está conectado a uno o más enrutadores, ya sea mediante una línea DSL, conexión
de TV por cable, LAN, línea de marcación telefónica, red inalámbrica, fibra óptica.
Cuando llega un paquete a un enrutador proveniente de uno de sus hosts, se
coloca en un búfer para transmitirlo a continuación a otro enrutador, y después a otro
hasta que llega al destino. Estos búferes son recursos y hay un número finito de ellos.
Cada enrutador sólo tiene ocho búferes, pero en la realidad tiene millones. Suponga que
todos los paquetes en el enrutador A necesitan ir a B, que todos los paquetes en B
necesitan ir a C, que todos los paquetes en C necesitan ir a D y todos los paquetes en
D necesitan ir a A. Ningún paquete se puede mover debido a que no hay búfer al otro
5
DISEÑO DE SISTEMAS OPERATIVOS
PROFESORA: EVELINA WULF
UNIDAD N° 3: INTERBLOQUEO
GRUPO 10
extremo y tenemos un interbloqueo de recursos clásico, aunque a la mitad de un sistema
de comunicaciones.
BLOQUEO ACTIVO
En ciertas situaciones se utiliza el sondeo, que se refiere a que está ocupado y
en espera. Esta estrategia se utiliza a menudo cuando se va a usar la exclusión mutua
por un tiempo muy corto.
Imaginemos un par de procesos en la siguiente situación:
Cada uno de los procesos necesita dos recursos y ambos utilizan la primitiva de
sondeo entrar_region para tratar de adquirir los bloqueos necesarios. Si el proceso A se
ejecuta primero y adquiere el recurso_1 y después se ejecuta el proceso B y adquiere
el recurso_2, sin importar quién se ejecute a continuación, no progresará más, pero
ninguno de los procesos se bloqueará. Sólo utiliza su quantum de CPU una y otra vez
sin progresar, pero sin bloquearse tampoco. Por ende, no tenemos un interbloqueo, pero
tenemos algo funcionalmente equivalente al interbloqueo: el bloqueo activo (livelock).
Podemos encontrar varios casos de bloqueo activo en algunos sistemas, por
ejemplo: el número total de procesos permitidos se determina con base en el número
de entradas en la tabla de procesos por lo que las entradas de la tabla de procesos son
recursos finitos. Si una operación fork falla debido a que la tabla está llena, un método
razonable para el programa que realiza la operación fork es esperar un tiempo aleatorio
y probar de nuevo. Ahora suponga que un sistema UNIX tiene 100 entradas de
procesos. Se ejecutan diez programas cada uno de los cuales necesita crear 12
(sub)procesos. Una vez que cada proceso ha creado 9 procesos, los 10 procesos
originales y los 90 procesos nuevos han agotado la tabla. Cada uno de los 10 procesos
originales ahora se encuentra en un ciclo sin fin, bifurcando y fallando: un interbloqueo.
La probabilidad de que esto ocurra es minúscula, pero podría ocurrir.
Otro caso donde ocurre el bloqueo activo es por ejemplo en el número máximo
de archivos abiertos que está restringido de manera similar por el tamaño de la tabla de
nodos-i. por lo que ocurre un problema similar cuando se llena. El espacio de
intercambio en el disco es otro recurso limitado. De hecho, casi todas las tablas en el
sistema operativo representan un recurso finito.
6
DISEÑO DE SISTEMAS OPERATIVOS
PROFESORA: EVELINA WULF
UNIDAD N° 3: INTERBLOQUEO
GRUPO 10
La mayoría de los sistemas operativos, incluyendo UNIX y Windows, sólo ignoran
el problema suponiendo que la mayoría de los usuarios preferirán un bloqueo activo
ocasional en vez de una regla que restrinja a todos los usuarios a un solo proceso, un
solo archivo abierto y a sólo una cosa de todo. Si estos problemas se pudieran eliminar
sin costo no habría mucha discusión. El problema es que el precio es alto, en su mayor
parte en términos de imponer restricciones inconvenientes en los procesos.
Vale la pena mencionar que algunas personas no hacen una distinción entre la
inanición y el interbloqueo, ya que en ambos casos no hay un progreso positivo. Otras
sienten que son fundamentalmente distintos. ya que un proceso podría programarse
fácilmente para tratar de hacer algo n veces y, si todo fallara, probar otra cosa. Un
proceso bloqueado no tiene esa opción.
INANICIÓN
En un sistema multitarea cómo Linux, las peticiones de recursos por parte de los
procesos e hilos ocurren todo el tiempo, por lo cual es necesario definir una política para
la asignación de dichos recursos. La inanición (en inglés, starvation) es un problema
que ocurre cuando, por defecto de la política elegida, una petición de recursos queda
esperando indefinidamente por ser atendida. Por esta razón es que la inanición también
es conocida como bloqueo indefinido.
La inanición y el interbloqueo están relacionados e incluso suelen tener las
mismas consecuencias, pero las causas son diferentes y por lo tanto es conveniente no
confundir los conceptos: un conjunto de procesos está en interbloqueo si cada proceso
está esperando un recurso que sólo puede liberar o generar otro proceso del conjunto;
en cambio, un proceso sufre de inanición cuando directamente nunca llega su turno de
utilizar algún recurso o de ser atendido.
Esta problemática la podemos encontrar, por ejemplo, en las planificaciones de
procesos basadas en prioridades ya que un proceso de muy baja prioridad podría
quedar esperando sin llegar a ejecutar si constantemente llegan procesos con una
prioridad mayor.
Para este ejemplo podríamos evitar la inanición usando alguna política del tipo
FIFO, en la cual todo proceso en algún momento será ejecutado; o con la
implementación de mecanismos cómo el envejecimiento (aging), que consiste en
aumentar gradualmente la prioridad de los procesos que esperan mucho tiempo en el
sistema.
7
DISEÑO DE SISTEMAS OPERATIVOS
PROFESORA: EVELINA WULF
UNIDAD N° 3: INTERBLOQUEO
GRUPO 10
Bibliografía
Silberschatz A., P. G. (2006). Fundamentos de Sistemas Operativos (7° Edición). Madrid,
España: McGraw-Hill Interamericana.
Espinosa, C. C. (s.f.). Repositorio Universitario Institucional de Recursos Abiertos. Obtenido de
https://ruidera.uclm.es/xmlui/bitstream/handle/10578/6317/CCT0024CAP10.pdf?seq
uence=1&isAllowed=y
Expósito Singh D. y otros. (Julio de 2012). OPENCOURSEWARE Universidad Carlos III de Madrid.
Obtenido de http://ocw.uc3m.es/ingenieria-informatica/arquitectura-decomputadores-ii/materiales-de-clasee/mc-f-005
Pardo, F. (21 de Julio de 2017). SimuRed Simulador de redes de multicomputadores. Obtenido
de http://simured.uv.es/doc/simured.pdf
Carretero Pérez J., & otros., y. (2000). Sistemas operativos: una visión aplicada. Madrid,
España: McGraw-Hill Interamericana.
Tanenbaum, A. S. (2009). Sistemas Operativos Modernos (3° Edición). México: Pearson
Educación.
8
Descargar