Uploaded by jose andres auyon

Lab 4 Versión 2 Sistemas operativos - José Auyon

advertisement
José Andrés Auyón Cóbar 201579
Sistemas Operativos
Catedrático: Juan Luis Garcia Zarceño
Semestre 1, 2024
Creación y carga
Ejercicio 1:
Desarrollo del programa:
1. Utiliza dos procesos en bucles infinitos para simular la adquisición de dos recursos.
2. Uno de los procesos invierte el orden de adquisición de recursos, lo que conducirá a un
deadlock.
Preguntas:
1. Describe cómo funciona un algoritmo de detección de deadlock y cómo se relaciona con la
concurrencia en sistemas operativos.
Algoritmo de Detección de Deadlock:
Un algoritmo de detección de deadlock examina el grafo de asignación de recursos y espera
en un sistema para identificar si existe un ciclo. El grafo de asignación representa las
relaciones de solicitudes y asignaciones entre procesos y recursos. Si se encuentra un ciclo en
este grafo, se asume que hay un deadlock.
Relación con la concurrencia en sistemas operativos:
En sistemas operativos concurrentes, múltiples procesos compiten por recursos compartidos.
La detección de deadlock es esencial para evitar situaciones donde los procesos quedan
atrapados en un estado donde ninguno puede avanzar. Los algoritmos de detección permiten a
los sistemas operativos gestionar eficientemente los recursos y prevenir bloqueos
permanentes.
2. ¿Qué estrategias podrían implementarse para prevenir deadlocks en sistemas
concurrentes más complejos que el ejemplo proporcionado?
Estrategias para Prevenir Deadlocks:
- Asignación ordenada de recursos: Define un orden para adquirir recursos y requiere que
los procesos los adquieran en ese orden específico.
- Asignación por lotes: Permite que los procesos adquieran todos sus recursos de una vez,
reduciendo la posibilidad de deadlock.
- Protocolo de exclusión mutua: Introduce un protocolo que asegura que los procesos
adquieran recursos de manera exclusiva y los liberen de manera ordenada.
3. Explica cómo se podría modificar el código para introducir una situación de
interbloqueo más sutil que no sea tan evidente como la inversión de recursos.
Introducir una Situación de Interbloqueo Más Sutil:
Puedes modificar el código permitiendo que los procesos intenten adquirir ambos recursos de
manera concurrente pero en un orden diferente. Esto podría llevar a una situación en la que
ambos procesos estén esperando a que el otro libere un recurso antes de continuar. La clave
es crear una dependencia cíclica más sutil entre los procesos.
4. ¿Qué métodos de detección y resolución de deadlocks conoces y cómo se aplican en
sistemas operativos modernos?
Métodos de Detección y Resolución de Deadlocks:
- Detección: Algoritmo del banquero, algoritmo de grafo de asignación de recursos.
- Resolución: Liberación de recursos, terminación de procesos.
Aplicación en Sistemas Operativos Modernos:
- Los sistemas operativos modernos implementan algoritmos de detección para identificar
deadlocks antes de que se conviertan en problemas críticos.
- La resolución implica tomar medidas como liberar recursos para evitar o salir de
situaciones de deadlock.
- Sistemas operativos utilizan técnicas preventivas y correctivas para minimizar la
posibilidad de deadlocks y garantizar la estabilidad del sistema.
Ejercicio 2:
Implementación del problema de los filósofos cenando:
1. Utiliza hilos y semáforos en C.
2. Evita deadlock sincronizando el acceso a los tenedores.
Preguntas:
1. ¿Cuáles son las limitaciones del enfoque de solución con semáforos en el problema de
los filósofos cenando? ¿Se pueden mejorar estas soluciones?
Limitaciones:
- Deadlock: Aunque el uso de semáforos ayuda a evitar deadlock en situaciones típicas, aún
puede ocurrir en casos específicos, como la competencia por recursos limitados.
- Hambre: Un filósofo podría pasar largos periodos sin obtener los tenedores si otros
filósofos siempre adquieren los tenedores antes.
Posibles mejoras:
- Uso de Tiempo Limitado: Introducir un límite de tiempo para que un filósofo mantenga
un tenedor antes de liberarlo si no ha podido adquirir el segundo tenedor.
- Cambio de Estrategia: Permitir que los filósofos cambien su estrategia y suelten los
tenedores si no pueden adquirir ambos, evitando bloqueos prolongados.
2. Describe un escenario en el que la implementación actual podría conducir a un
deadlock y propón una solución alternativa para evitarlo.
Escenario de Deadlock:
- Si todos los filósofos intentan adquirir su tenedor izquierdo al mismo tiempo y luego
esperan para adquirir el tenedor derecho, podría ocurrir un deadlock.
Solución Alternativa:
- Introducir un protocolo que evite que todos los filósofos adquieran tenedores al mismo
tiempo. Podría ser algo así como introducir un orden específico para que los filósofos
adquieran los tenedores o permitir que solo un número limitado de filósofos adquieran
tenedores simultáneamente.
3. ¿Qué diferencias clave existen entre la solución con semáforos y otras técnicas de
concurrencia, como monitores o variables de condición?
Semáforos:
- Permiten el control de acceso a recursos compartidos mediante la espera o liberación de
semáforos.
- Los semáforos no llevan información sobre qué hilo o proceso posee el recurso.
Monitores:
- Agrupan datos y operaciones en un solo objeto.
- Proporcionan mecanismos integrados para controlar el acceso a los datos y garantizar
exclusión mutua.
Variables de Condición:
- Permiten que los hilos esperen eventos específicos.
- Utilizadas junto con cerrojos, permiten la sincronización de acceso a recursos
compartidos.
4. ¿Cómo se puede garantizar la equidad en la asignación de recursos en el problema de
los filósofos cenando?
Garantizar Equidad:
- Orden de Adquisición: Introducir un orden específico para que los filósofos adquieran
los tenedores puede garantizar una asignación más equitativa.
- Tiempo Limitado: Introducir un límite de tiempo para que un filósofo mantenga un
tenedor antes de liberarlo si no ha podido adquirir el segundo tenedor, evitando la
monopolización de los recursos.
La equidad en la asignación de recursos implica evitar que un filósofo tenga una ventaja
injusta sobre otros en la adquisición de tenedores, asegurando que todos tengan
oportunidades similares.
Ejercicio 3:
Implementación del algoritmo del banquero:
1. Simula procesos que solicitan y liberan recursos dinámicamente.
2. Evita deadlock según el algoritmo del banquero.
Al correr el programa en proceso 1:
Para el proceso 2:
En proceso 3:
Preguntas:
¿Qué requisitos deben cumplirse para que un sistema esté en un estado seguro según el
algoritmo del banquero? ¿Por qué es importante?
Para que un sistema esté en un estado seguro según el algoritmo del banquero, se deben
cumplir las siguientes condiciones:
1. La cantidad de recursos solicitados por un proceso no puede exceder la cantidad de
recursos disponibles.
- Esto garantiza que, incluso si todos los procesos solicitan recursos al mismo tiempo, el
sistema aún puede satisfacer al menos uno de esos procesos.
2. La cantidad de recursos necesarios para completar la ejecución de un proceso no puede
exceder la suma de los recursos disponibles y los recursos actualmente asignados a otros
procesos.
- Esto asegura que, incluso si todos los procesos solicitan recursos adicionales, todavía haya
suficientes recursos en el sistema para que al menos uno de los procesos complete su
ejecución.
Es importante mantener el sistema en un estado seguro porque esto garantiza que siempre
haya una secuencia segura de asignación de recursos que evita los deadlocks. Un estado
seguro significa que, aunque todos los procesos soliciten recursos al mismo tiempo, el
sistema puede asignarlos de manera que no se produzca un deadlock.
Explica cómo se pueden detectar ciclos de espera en un grafo de asignación de recursos y
cómo esto se relaciona con la posibilidad de un deadlock.
En un grafo de asignación de recursos, los nodos representan procesos y recursos, y las
aristas representan asignaciones. Un ciclo en este grafo indica la posibilidad de un deadlock,
ya que significa que hay un conjunto de procesos y recursos que están mutuamente
bloqueados, esperándose unos a otros.
La detección de ciclos de espera se puede realizar utilizando algoritmos de detección de
ciclos, como el algoritmo de detección de ciclos en un grafo dirigido. Si se encuentra un ciclo
en el grafo de asignación de recursos, significa que existe una cadena de procesos esperando
recursos que forman un ciclo, lo que podría conducir a un deadlock.
¿Cómo afectaría una implementación incorrecta del algoritmo del banquero al sistema?
Proporciona ejemplos concretos.
Una implementación incorrecta del algoritmo del banquero podría llevar a situaciones de
asignación inseguras que podrían resultar en deadlocks. Por ejemplo, si no se verifica
adecuadamente la seguridad antes de realizar asignaciones, podría ocurrir una asignación que
lleve a un estado inseguro. Aquí hay un ejemplo simple:
Supongamos que hay dos procesos (P1 y P2) y dos tipos de recursos (A y B). Inicialmente, el
sistema tiene 1 recurso A y 1 recurso B.
1. P1 solicita 1 recurso A y 1 recurso B. El sistema verifica y concede la solicitud.
2. P2 solicita 1 recurso A y 1 recurso B. El sistema verifica y concede la solicitud.
3. P1 solicita 1 recurso A y 1 recurso B. El sistema, sin verificar la seguridad, concede la
solicitud.
4. P2 solicita 1 recurso A y 1 recurso B. El sistema no puede satisfacer la solicitud, y ambos
procesos quedan bloqueados en espera del otro.
Este escenario conduce a un deadlock debido a una asignación incorrecta que viola las
condiciones del algoritmo del banquero.
¿Cuál es la complejidad computacional del algoritmo del banquero y cómo podría impactar
en sistemas con un gran número de procesos y recursos?
La complejidad computacional del algoritmo del banquero es O(n^2 m), donde "n" es el
número de procesos y "m" es el número de recursos. Esto se debe a que, en el peor caso, el
algoritmo debe realizar verificaciones de seguridad para cada combinación de procesos y
recursos.
En sistemas con un gran número de procesos y recursos, la complejidad del algoritmo del
banquero puede tener un impacto significativo en el rendimiento del sistema. A medida que
tanto el número de procesos como el número de recursos aumentan, el tiempo necesario para
realizar todas las verificaciones de seguridad puede volverse considerable, afectando la
capacidad de respuesta del sistema en situaciones de alta carga.
Es posible que en sistemas muy grandes, se prefieran enfoques alternativos que ofrezcan un
rendimiento más eficiente, aunque con concesiones en términos de complejidad y garantías
de seguridad.
Download