logo

Algoritmo bancario en el sistema operativo (SO)

Es un algoritmo bancario utilizado para evitar el punto muerto y asignar recursos de forma segura a cada proceso del sistema informático. El ' Estado-S' examina todas las pruebas o actividades posibles antes de decidir si se debe permitir la asignación a cada proceso. También ayuda al sistema operativo a compartir con éxito los recursos entre todos los procesos. El algoritmo bancario recibe su nombre porque comprueba si a una persona se le debe otorgar un préstamo o no para ayudar al sistema bancario a simular de forma segura la asignación de recursos. En esta sección aprenderemos los Algoritmo bancario en detalle. Además, resolveremos problemas basados ​​en la Algoritmo bancario . Para comprender el algoritmo del banquero, primero veremos un ejemplo real del mismo.

Supongamos que el número de titulares de cuentas en un banco en particular es 'n' y que el dinero total en un banco es 'T'. Si el titular de una cuenta solicita un préstamo; Primero, el banco resta el monto del préstamo del efectivo total y luego estima que la diferencia de efectivo es mayor que T para aprobar el monto del préstamo. Estos pasos se toman porque si otra persona solicita un préstamo o retira alguna cantidad del banco, ayuda al banco a administrar y operar todo sin ninguna restricción en la funcionalidad del sistema bancario.

Del mismo modo, funciona en un Sistema operativo . Cuando se crea un nuevo proceso en un sistema informático, el proceso debe proporcionar todo tipo de información al sistema operativo, como procesos próximos, solicitudes de recursos, conteos y retrasos. Según estos criterios, el sistema operativo decide qué secuencia de proceso debe ejecutarse o esperarse para que no se produzca un punto muerto en un sistema. Por ello, también se le conoce como algoritmo para evitar interbloqueos o detección de interbloqueo en el sistema operativo.

Ventajas

Las siguientes son las características esenciales del algoritmo del banquero:

  1. Contiene diversos recursos que cumplen con los requisitos de cada proceso.
  2. Cada proceso debe proporcionar información al sistema operativo sobre las próximas solicitudes de recursos, la cantidad de recursos y durante cuánto tiempo se retendrán los recursos.
  3. Ayuda al sistema operativo a gestionar y controlar las solicitudes de proceso para cada tipo de recurso en el sistema informático.
  4. El algoritmo tiene un atributo de recurso máximo que indica que cada proceso puede contener la cantidad máxima de recursos en un sistema.

Desventajas

  1. Requiere una cantidad fija de procesos y no se pueden iniciar procesos adicionales en el sistema mientras se ejecuta el proceso.
  2. El algoritmo ya no permite que los procesos intercambien sus necesidades máximas mientras procesan sus tareas.
  3. Cada proceso debe conocer e indicar de antemano su requisito máximo de recursos para el sistema.
  4. Se puede conceder el número de solicitudes de recursos en un tiempo finito, pero el plazo para asignar los recursos es de un año.

Cuando se trabaja con el algoritmo de un banquero, éste solicita saber tres cosas:

  1. Cuánto puede solicitar cada proceso por cada recurso del sistema. Se denota por el [ MÁXIMO ] pedido.
  2. Cuánto cada proceso contiene actualmente cada recurso en un sistema. Se denota por el [ ASIGNADO ] recurso.
  3. Representa el número de cada recurso actualmente disponible en el sistema. Se denota por el [ DISPONIBLE ] recurso.

A continuación se detallan los términos importantes de las estructuras de datos que se aplican en el algoritmo bancario:

Supongamos que n es el número de procesos y m es el número de cada tipo de recurso utilizado en un sistema informático.

cuerda para ello
    Disponible: Es un array de longitud 'm' que define cada tipo de recurso disponible en el sistema. Cuando Disponible[j] = K, significa que 'K' instancias de Recursos tipo R[j] están disponibles en el sistema.Máximo:Es una matriz [n x m] que indica que cada proceso P[i] puede almacenar el número máximo de recursos R[j] (de cada tipo) en un sistema.Asignación:Es una matriz de mx n órdenes que indica el tipo de recursos asignados actualmente a cada proceso en el sistema. Cuando Asignación [i, j] = K, significa que al proceso P[i] se le asignan actualmente K instancias de Recursos tipo R[j] en el sistema.Necesidad:Es una secuencia matricial de M x N que representa el número de recursos restantes para cada proceso. Cuando la Necesidad[i] [j] = k, entonces el proceso P[i] puede requerir K instancias más de recursos tipo Rj para completar el trabajo asignado.
    Nedd[i][j] = Max[i][j] - Asignación[i][j].Finalizar: Es el vector del orden metro . Incluye un valor booleano (verdadero/falso) que indica si el proceso ha sido asignado a los recursos solicitados y todos los recursos se han liberado después de finalizar su tarea.

El Algoritmo Bancario es la combinación del algoritmo de seguridad y el algoritmo de solicitud de recursos para controlar los procesos y evitar interbloqueos en un sistema:

Algoritmo de seguridad

Es un algoritmo de seguridad que se utiliza para comprobar si un sistema está en un estado seguro o si sigue la secuencia segura en un algoritmo bancario:

1. Hay dos vectores wok y Finalizar de longitud m y n en un algoritmo de seguridad.

Inicializar: Trabajo = Disponible
Finalizar[i] = falso; para I = 0, 1, 2, 3, 4… n - 1.

2. Verificar el estado de disponibilidad de cada tipo de recursos [i], como por ejemplo:

Necesito[yo]<= work
Finalizar[i] == falso
Si la i no existe, vaya al paso 4.

3. Trabajo = Trabajo +Asignación(i) // para obtener una nueva asignación de recursos

Finalizar[i] = verdadero

Vaya al paso 2 para verificar el estado de disponibilidad de recursos para el siguiente proceso.

4. Si Finalizar[i] == verdadero; significa que el sistema es seguro para todos los procesos.

Algoritmo de solicitud de recursos

Un algoritmo de solicitud de recursos verifica cómo se comportará un sistema cuando un proceso realiza cada tipo de solicitud de recursos en un sistema como una matriz de solicitudes.

Creemos una matriz de solicitud de recursos R [i] para cada proceso P [i]. Si la solicitud de recursosi[j] igual a 'K', lo que significa que el proceso P[i] requiere 'k' instancias de Recursos tipo R[j] en el sistema.

1. Cuando el número de recursos solicitados de cada tipo es menor que el Necesidad recursos, vaya al paso 2 y si la condición falla, significa que el proceso P[i] excede su reclamo máximo para el recurso. Como sugiere la expresión:

Si Solicitud(i)<= need
Vaya al paso 2;

2. Y cuando el número de recursos solicitados de cada tipo sea menor que el recurso disponible para cada proceso, pase al paso (3). Como sugiere la expresión:

Si Solicitud(i)<= available
De lo contrario, el proceso P[i] debe esperar el recurso ya que no está disponible para su uso.

3. Cuando el recurso solicitado se asigna al proceso cambiando de estado:

bash divide la cadena por delimitador

Disponible = Disponible - Solicitar
Asignación(i) = Asignación(i) + Solicitud (i)
Necesidadi= Necesidadi- Pedidoi

Cuando el estado de asignación de recursos es seguro, sus recursos se asignan al proceso P(i). Y si el nuevo estado no es seguro, el Proceso P (i) tiene que esperar cada tipo de Solicitud R(i) y restaurar el antiguo estado de asignación de recursos.

Ejemplo: Considere un sistema que contiene cinco procesos P1, P2, P3, P4, P5 y los tres tipos de recursos A, B y C. Los siguientes son los tipos de recursos: A tiene 10, B tiene 5 y el tipo de recurso C tiene 7 instancias.

Proceso Asignación
A B C
máx.
A B C
Disponible
A B C
P1 0 1 0 7 5 3 3 3 2
P2 2 0 0 3 2 2
P3 3 0 2 9 0 2
P4 2 1 1 2 2 2
P5 0 0 2 4 3 3

Responda las siguientes preguntas utilizando el algoritmo del banquero:

  1. ¿Cuál es la referencia de la matriz de necesidades?
  2. Determinar si el sistema es seguro o no.
  3. ¿Qué pasará si la solicitud de recurso (1, 0, 0) para el proceso P1 puede el sistema aceptar esta solicitud inmediatamente?

Años. 2: El contexto de la matriz de necesidades es el siguiente:

Necesidad [i] = Máx. [i] - Asignación [i]
Necesidad de P1: (7, 5, 3) - (0, 1, 0) = 7, 4, 3
Necesidad de P2: (3, 2, 2) - (2, 0, 0) = 1, 2, 2
Necesidad de P3: (9, 0, 2) - (3, 0, 2) = 6, 0, 0
Necesidad de P4: (2, 2, 2) - (2, 1, 1) = 0, 1, 1
Necesidad de P5: (4, 3, 3) - (0, 0, 2) = 4, 3, 1

Proceso Necesidad
A B C
P1 7 4 3
P2 1 2 2
P3 6 0 0
P4 0 1 1
P5 4 3 1

Por lo tanto, creamos la matriz de contexto de necesidad.

Respuesta. 2: Aplicar el algoritmo del banquero:

Los recursos disponibles de A, B y C son 3, 3 y 2.

Ahora comprobamos si cada tipo de solicitud de recurso está disponible para cada proceso.

Paso 1: Para el proceso P1:

Necesidad<= available< p>

7, 4, 3<= 2 3, condition is FALSO .

Entonces, examinamos otro proceso, P2.

inicialización de la lista de Python

Paso 2: Para el proceso P2:

Necesidad<= available< p>

1, 2, 2<= 2 3, condition verdadero

Nuevo disponible = disponible + Asignación

(3, 3, 2) + (2, 0, 0) => 5, 3, 2

De manera similar, examinamos otro proceso P3.

Paso 3: Para el proceso P3:

Necesidad P3<= available< p>

6, 0, 0<= 2 5, 3, condition is FALSO .

De manera similar, examinamos otro proceso, P4.

Etapa 4: Para el proceso P4:

Necesidad P4<= available< p>

0, 1, 1<= 2 5, 3, condition is verdadero

Nuevo recurso disponible = Disponible + Asignación

5, 3, 2 + 2, 1, 1 => 7, 4, 3

De manera similar, examinamos otro proceso P5.

Paso 5: Para el proceso P5:

Necesidad P5<= available< p>

4, 3, 1<= 3 7, 4, condition is verdadero

Nuevo recurso disponible = Disponible + Asignación

7, 4, 3 + 0, 0, 2 => 7, 4, 5

Ahora, examinamos nuevamente cada tipo de solicitud de recursos para los procesos P1 y P3.

Paso 6: Para el proceso P1:

Necesidad P1<= available< p>

7, 4, 3<= 5 7, 4, condition is verdadero

Nuevo recurso disponible = Disponible + Asignación

7, 4, 5 + 0, 1, 0 => 7, 5, 5

Entonces, examinamos otro proceso P2.

Paso 7: Para el proceso P3:

Necesidad P3<= available< p>

6, 0, 0<= 5 7, 5, condition is true< p>

Nuevo recurso disponible = Disponible + Asignación

7, 5, 5 + 3, 0, 2 => 10, 5, 7

Por lo tanto, ejecutamos el algoritmo bancario para encontrar el estado seguro y la secuencia segura como P2, P4, P5, P1 y P3.

Años. 3: Para conceder la Solicitud (1, 0, 2), primero tenemos que comprobar que Pedido<= available< strong>, es decir (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>


pitón __dict__