Como el algoritmo de Banker que usa algún tipo de tabla como asignación, solicitud, disponible todo eso para comprender cuál es el estado del sistema. De manera similar, si desea comprender el estado del sistema en lugar de usar esas tablas, en realidad las tablas son muy fáciles de representar y comprender, pero incluso podría representar la misma información en el gráfico. Ese gráfico se llama Gráfico de asignación de recursos (RAG) .
Entonces, el gráfico de asignación de recursos nos explica cuál es el estado del sistema en términos de procesos y recursos . Como cuántos recursos hay disponibles, cuántos se asignan y cuál es la solicitud de cada proceso. Todo se puede representar en términos del diagrama. Una de las ventajas de tener un diagrama es que, a veces, es posible ver un interbloqueo directamente usando RAG, pero es posible que no pueda saberlo mirando la tabla. Pero las tablas son mejores si el sistema contiene muchos procesos y recursos y Graph es mejor si el sistema contiene menos cantidad de procesos y recursos.
Sabemos que cualquier gráfico contiene vértices y aristas. Entonces RAG también contiene vértices y aristas. En RAG los vértices son de dos tipos:
1. Vértice de proceso: cada proceso se representará como un vértice de proceso. Generalmente, el proceso se representará con un círculo.
2. Vértice de recursos: cada recurso se representará como un vértice de recursos. También es de dos tipos:
- Recurso de tipo de instancia única: se representa como un cuadro, dentro del cuadro, habrá un punto. Entonces, la cantidad de puntos indica cuántas instancias están presentes de cada tipo de recurso.
- Recurso de tipo de instancia de múltiples recursos: también se representa como un cuadro, dentro del cuadro, habrá muchos puntos presentes.
Ahora llegando a los bordes de RAG. Hay dos tipos de bordes en RAG:
1. Asignar borde: si ya asigna un recurso a un proceso, se llama Asignar borde.
2. Solicitar borde: significa que en el futuro el proceso podría necesitar algún recurso para completar la ejecución, que se llama borde de solicitud.
Entonces, si un proceso está usando un recurso, se dibuja una flecha desde el Node del recurso hasta el Node del proceso. Si un proceso solicita un recurso, se dibuja una flecha desde el Node del proceso hasta el Node del recurso.
Ejemplo 1 (instancias únicas RAG) –
Si hay un ciclo en el Gráfico de asignación de recursos y cada recurso en el ciclo proporciona solo una instancia, entonces los procesos estarán en punto muerto. Por ejemplo, si el proceso P1 tiene el recurso R1, el proceso P2 tiene el recurso R2 y el proceso P1 está esperando a R2 y el proceso P2 está esperando a R1, entonces el proceso P1 y el proceso P2 estarán en interbloqueo.
Aquí hay otro ejemplo, que muestra los procesos P1 y P2 adquiriendo los recursos R1 y R2 mientras que el proceso P3 está esperando para adquirir ambos recursos. En este ejemplo, no hay interbloqueo porque no hay dependencia circular.
Entonces, el ciclo en el tipo de recurso de instancia única es la condición suficiente para el punto muerto.
Ejemplo 2 (RAG de múltiples instancias) –
Del ejemplo anterior, no es posible decir que el RAG está en un estado seguro o en un estado inseguro. Entonces, para ver el estado de este RAG, construyamos la array de asignación y la array de solicitud.
- El número total de procesos son tres; P1, P2 y P3 y el número total de recursos son dos; R1 y R2.
- Para construir la array de asignación, simplemente vaya a los recursos y vea a qué proceso se asigna.
- R1 se asigna a P1, por lo tanto, escriba 1 en la array de asignación y, de manera similar, R2 se asigna tanto a P2 como a P3 y para el elemento restante solo escriba 0.
- Para conocer la array de solicitud, debe ir al proceso y ver los bordes salientes.
- P1 está solicitando el recurso R2, así que escribe 1 en la array y, de manera similar, P2 solicita R1 y para el elemento restante escribe 0.
Array de asignación –
Solicitar array –
Así que ahora el recurso disponible es = (0, 0).
Comprobación de interbloqueo (seguro o no) –
Por lo tanto, no hay interbloqueo en este RAG. Aunque hay un ciclo, todavía no hay interbloqueo. Por lo tanto, en el ciclo de recursos de instancias múltiples no hay una condición suficiente para el interbloqueo.
El ejemplo anterior es el mismo que el ejemplo anterior, excepto que el proceso P3 solicita el recurso R1.
Entonces la tabla queda como se muestra a continuación.
Entonces, el recurso disponible es = (0, 0), pero los requisitos son (0, 1), (1, 0) y (1, 0). Por lo tanto, no puede cumplir con ningún requisito. Por lo tanto, está en punto muerto. .
Por lo tanto, cada ciclo en un gráfico de tipo de recurso de instancias múltiples no es un punto muerto, si tiene que haber un punto muerto, tiene que haber un ciclo. Entonces, en el caso de RAG con tipo de recurso de instancias múltiples, el ciclo es necesario. condición de interbloqueo, pero no suficiente.
Preguntas de GATE CS Corner
Practicar las siguientes preguntas lo ayudará a evaluar su conocimiento. Todas las preguntas se han hecho en GATE en años anteriores o en pruebas simuladas de GATE. Es muy recomendable que los practiques.
Referencia:
A. Silberschatz, P. Galvin, G. Gagne, » Conceptos de sistemas operativos (8.ª edición) «, Wiley India Pvt. Limitado.
Este artículo es una contribución de Samit Mandal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA