Está en la página 1de 8

Facultad de Ingeniería

Carrera Profesional de Ingeniería de Sistemas e


Informática

Sistemas operativos

Algoritmo de Ostrich

Integrantes
GALLEGOS ALVARADO CARLOS ALBERTO
GOMERO ARIAS ALEX WALTER
SANCHEZ ASTORAY VLADIMIR HENER
LAURA OCHOA VICTOR

Lima – Perú
2018
Introducción

En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo,


traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto
de procesos o hilos de ejecución en un sistema concurrente que compiten por
recursos del sistema o bien se comunican entre ellos.1 A diferencia de otros
problemas de concurrencia de procesos, no existe una solución general para los
interbloqueos.

Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas,


por parte de dos o más procesos. En la vida real, un ejemplo puede ser el de dos
niños que intentan jugar al arco y flecha, uno toma el arco, el otro la flecha.
Ninguno puede jugar hasta que alguno libere lo que tomó.

Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre
los procesos antes de la asignación de recursos. Para cada petición de recursos,
el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde
puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los
pedidos de recursos solamente si se asegura que quedará en un estado seguro.
Para que el sistema sea capaz de decidir si el siguiente estado será seguro o
inseguro, debe saber por adelantado y en cualquier momento el número y tipo
de todos los recursos en existencia, disponibles y requeridos. Existen varios
algoritmos para evitar bloqueos mutuos.

Los bloqueos mutuos pueden prevenirse asegurando que no suceda alguna de


las condiciones También conocidas como condiciones de Coffman por su
primera descripción en 1971 en un artículo escrito por E. G. Coffman.

Estas condiciones deben cumplirse simultáneamente y no son totalmente


independientes entre ellas.
Contenido

Que es el Algoritmo de Avestruz


El algoritmo del avestruz es un concepto informático para denominar el
procedimiento de algunos sistemas operativos. Esta teoría, acuñada por Andrew
S. Tanenbaum, señala que dichos sistemas, en lugar de enfrentar el problema
de los bloqueos mutuos asumen que estos nunca ocurrirán.

Por otro lado, también se puede definir como un algoritmo que esconde la cabeza
en la tierra y pretender que no existe problema alguno. La justificación de este
método es que, si el interbloqueo se presenta con una frecuencia baja en
comparación con los fallos del sistema por otras razones (errores en el sistema
operativo, fallos en el hardware, etc.), no tiene sentido tomar medidas para evitar
el problema a costa de reducir el rendimiento del sistema. Un ejemplo es el
sistema operativo Unix

Funcionamiento del Algoritmo de Avestruz


Las computadoras para gestionar el multiproceso: el usuario ejecuta un
programa y luego abre otro, y la máquina tiene que ponerse pendiente de los
dos, dedicando un poco de atención a cada uno, como a dos hijos de edad
parecida a los que hay que tratar con la debida equidad.

El sistema le dedica un poco de tiempo a cada proceso, lo que se llama el


quantum. Transcurrido éste, le deja de prestar atención y se pone con el otro,
continuando así con todos los programas que, en un momento dado, se
encuentren abiertos. Cada programa ocupa un fragmento de memoria y,
dependiendo de la cantidad de ésta que tengamos, podremos poner más o
menos programas a funcionar simultáneamente.

Para que sirve el Algoritmo de Avestruz


Según explica Tanenbaum en su libro sobre Sistemas Operativos, un conjunto
de procesos se interbloquean cuando cada uno de ellos espera un suceso que
sólo otro proceso del conjunto puede producir, pero que a su vez necesita de la
ocurrencia de otro suceso que también produce otro proceso del conjunto. Bajo
estas condiciones, los procesos interbloqueados se quedan en una espera
indefinida, aguardando a que el uno le diga algo al otro y a que el otro le diga
algo al uno. Una tarde me presenté en casa con un paquete de indios de plástico,
que incluían al gran jefe con las piernas preparadas para montar a caballo, un
fiero guerrero que portaba un fusil obtenido quizás de algún rostro pálido y una
tienda cónica en la que guarecerse de noche. Los niños obviaron a los demás
muñecos y tomaron estas tres cosas, cada uno una. Para continuar su
inescrutable juego necesitaban de lo que tenían los otros dos, y comenzó así
una pelea y un tira y afloja que aún podría seguir. Una de las soluciones de las
que informa Tanenbaum para resolver el interbloqueo es “Desentenderse
completamente del problema.

Justificando a los avestruces


Hay que comprender que esto ocurre porque las condiciones impuestas por las
demás estrategias resultan demasiado onerosas el conocimiento previo resulta
insuficiente, o los bloqueos simplemente pueden presentarse ante recursos
externos y no controlados por el sistema operativo.

Ignorar la posibilidad de un bloqueo cuando su probabilidad es suficientemente


baja será preferible para los usuarios (y programadores) ante la disyuntiva de
afrontar restricciones para la forma y conveniencia de solicitar recursos.

Enfrentando a los avestruces


La realidad del computo marca que es el programador de aplicaciones quien
debe prever las situaciones de carrera, bloqueo e inanición en su código.

El sistema operativo empleara ciertos mecanismos para asegurar la seguridad


en general entre los componentes del sistema, pero para muchas tareas, esto
recae en las manos del programador.

Una posible salida ante la presencia del algoritmo del avestruz es adoptar un
método defensivo de programar. Un ejemplo de esto seria que los programas
soliciten un recurso, pero, en vez de solicitarlo por medio de una llamada
bloqueante, hacerlo por medio de una llamada bloqueante, hacerlo por medio de
una llamada no bloqueante y en caso de fallar esta, esperar un tiempo aleatorio
e intentarlo e intentarlo nuevamente acceder al recurso un numero dado de
veces, y tras n intentos, abortar limpiamente el proceso y notificar al usuario
(evitando un bloqueo mutuo circular indefinido).

Existe dos estrategias principales para tratar el interbloqueo:

1- Usar un protocolo que garantice que el sistema nunca entre en un estado


de interbloqueo.
2- Permitir que el sistema entre en interbloqueo y luego se recupere.

Algoritmo de Avestruz para Ingenieros y Matemáticos


La asignación de recursos puede verse desde el punto de vista matemático. Es
un problema con un planteamiento de origen, y hay varias estrategias distintas
(los mecanismos y algoritmos descritos en esta sección). Puede no ser perfectos,
pero el problema no ha demostrado ser intratable. Y un bloqueo es claramente
un error.

Una situación de excepción inaceptable, los matemáticos en nuestro árbol


genealógico académico nos llaman a no ignorar este problema a resolverlo sin
importar la complejidad computacional.

Los ingenieros mas aterrizados en el mundo real tienen como parte básica de su
formación si el evitar efectos nocivos, pero también contemplan el calculo de
costos, la probabilidad de impacto los umbrales de tolerancia, para un ingeniero,
si un sistema típico corre riesgo de caer en un bloqueo mutuo con una
probabilidad dejando inservibles a dos procesos en un sistema. Pero debe
también considerar no solo las fallas en hardware y en los diferentes
componentes del sistema operativo, sino que en todos los demás programas que
corren en espacio de usuario y considerando que prevenir el bloqueo conlleva
un costo adicional en complejidad para el desarrollo o en rendimiento del
sistema, no debe sorprender a nadie que los ingenieros se inclinen por adoptar
la estrategia del avestruz.

En que Consiste el Algoritmo del Avestruz


Consiste en esconder la cabeza y fingir que no pasa nada, es decir, describe la
estrategia utilizada en el tratamiento de interbloqueos, en la cual se ignoran los
problemas potenciales con base en el hecho de que pueden ser extremadamente
raros; si al estudiar la probabilidad de bloqueos en el sistema, se llega a la
conclusión de que esta es muy baja, no se invertirán mayores recursos en
implementar técnicas de detección y corrección de bloqueos.

Esta estrategia puede generar distintas reacciones


Los matemáticos la encuentran totalmente inaceptable y dicen que los
interbloqueos se deben prevenir a toda costa; los ingenieros preguntan con qué
frecuencia se espera el problema, con que frecuencia falla el sistema por otras
razones y que tan grave es un interbloqueo.

Para que este contraste sea mas especifico, considere un sistema operativo que
bloquea al proceso llamador cuando no se puede llevar a cabo una llamada al
sistema open en un dispositivo físico, como una unidad de CD-ROM o una
impresora, debido a que el dispositivo esta muy ocupado. Por lo general es
responsabilidad del driver (controlador) de dispositivos decidir qué acción tomar
bajo tales circunstancias. Bloquear o devolver una clave de error son dos
posibilidades obvias. Si un proceso abre exitosamente la unidad de CD-ROM y
otro la impresora y después cada proceso trata de abrir el otro recurso y se
bloquea en el intento, tenemos un interbloqueo. Pocos sistemas actuales
detectaran esto.

Las estrategias usuales para el manejo de los bloqueos


 Algoritmo de Avestruz:
- Ignorar el problema.
 Detección:
- Permitir que ocurran los bloqueos, detectarlos e intentar recuperarse
de ellos.
 Prevención:
- Hacer que los bloqueos sean imposibles desde el punto de vista
estructural.
 Evitarlos:
- Evitar los bloqueos mediante la asignación cuidadosa de los recursos.

Conclusiones

- Nosotros concluimos que el algoritmo de avestruz es un método de


ignorar los problemas en los sistemas operativos de un interbloqueo.

Bibliografía
1. Silva, M. (2015).Sistemas Operativos. Buenos Aires: AlfaOmega.
2. Tanenbaum, A. (2009).Sistemas Operativos Modernos. Tercera edición.
Buenos Aires: Prentice Hall.
3. Tanembaum, A. (1996).Sistemas Operativos Distribuidos. Naucalpa,
México: Prentice Hall

También podría gustarte