logo

Algoritmo do banqueiro no sistema operacional (SO)

É um algoritmo bancário usado para evitar impasse e alocar recursos com segurança para cada processo no sistema de computador. O ' Estado S' examina todos os testes ou atividades possíveis antes de decidir se a alocação deve ser permitida para cada processo. Também ajuda o sistema operacional a compartilhar com sucesso os recursos entre todos os processos. O algoritmo do banqueiro tem esse nome porque verifica se uma pessoa deve ou não ser sancionada com um valor de empréstimo para ajudar o sistema bancário a simular com segurança a alocação de recursos. Nesta seção, aprenderemos o Algoritmo do Banqueiro em detalhe. Além disso, resolveremos problemas com base no Algoritmo do Banqueiro . Para entender primeiro o Algoritmo do Banqueiro, veremos um exemplo real dele.

Suponha que o número de correntistas em um determinado banco seja 'n' e que o dinheiro total em um banco seja 'T'. Se o titular da conta solicitar um empréstimo; primeiro, o banco subtrai o valor do empréstimo do caixa total e depois estima que a diferença de caixa é maior que T para aprovar o valor do empréstimo. Essas medidas são tomadas porque se outra pessoa solicitar um empréstimo ou sacar alguma quantia do banco, isso ajuda o banco a administrar e operar todas as coisas sem qualquer restrição na funcionalidade do sistema bancário.

Da mesma forma, funciona em um sistema operacional . Quando um novo processo é criado em um sistema de computador, o processo deve fornecer todos os tipos de informações ao sistema operacional, como processos futuros, solicitações de seus recursos, contagem deles e atrasos. Com base nesses critérios, o sistema operacional decide qual sequência de processos deve ser executada ou aguardada para que não ocorra deadlock no sistema. Portanto, também é conhecido como algoritmo para evitar impasses ou detecção de impasse no sistema operacional.

Vantagens

A seguir estão as características essenciais do algoritmo do Banker:

  1. Contém diversos recursos que atendem aos requisitos de cada processo.
  2. Cada processo deve fornecer informações ao sistema operacional sobre futuras solicitações de recursos, o número de recursos e por quanto tempo os recursos serão retidos.
  3. Ajuda o sistema operacional a gerenciar e controlar solicitações de processo para cada tipo de recurso no sistema de computador.
  4. O algoritmo possui um atributo Max Resource que representa que cada processo pode conter o número máximo de recursos em um sistema.

Desvantagens

  1. Requer um número fixo de processos e nenhum processo adicional pode ser iniciado no sistema durante a execução do processo.
  2. O algoritmo não permite mais que os processos troquem suas necessidades máximas durante o processamento de suas tarefas.
  3. Cada processo deve conhecer e declarar antecipadamente seus requisitos máximos de recursos para o sistema.
  4. O número de solicitações de recursos pode ser atendido em um tempo finito, mas o prazo para alocação dos recursos é de um ano.

Ao trabalhar com o algoritmo de um banqueiro, ele solicita saber três coisas:

  1. Quanto cada processo pode solicitar para cada recurso do sistema. É denotado por [ MÁX. ] solicitar.
  2. Quanto cada processo contém atualmente cada recurso em um sistema. É denotado por [ ALOCADO ] recurso.
  3. Representa o número de cada recurso atualmente disponível no sistema. É denotado por [ DISPONÍVEL ] recurso.

A seguir estão os termos importantes das estruturas de dados aplicados no algoritmo do banqueiro da seguinte forma:

Suponha que n seja o número de processos e m seja o número de cada tipo de recurso usado em um sistema de computador.

    Disponível: É um array de comprimento 'm' que define cada tipo de recurso disponível no sistema. Quando Disponível[j] = K, significa que 'K' instâncias de Recursos do tipo R[j] estão disponíveis no sistema.Máx.:É uma matriz [n x m] que indica que cada processo P[i] pode armazenar o número máximo de recursos R[j] (cada tipo) em um sistema.Alocação:É uma matriz de m x n pedidos que indica o tipo de recursos atualmente alocados para cada processo do sistema. Quando Alocação [i, j] = K, significa que o processo P[i] está atualmente alocado em K instâncias de recursos do tipo R[j] no sistema.Precisar:É uma sequência de matrizes M x N que representa o número de recursos restantes para cada processo. Quando Need[i] [j] = k, então o processo P[i] pode exigir K mais instâncias de recursos do tipo Rj para concluir o trabalho atribuído.
    Nedd[i][j] = Max[i][j] - Alocação[i][j].Terminar: É o vetor da ordem eu . Inclui um valor booleano (verdadeiro/falso) que indica se o processo foi alocado aos recursos solicitados e se todos os recursos foram liberados após o término de sua tarefa.

O Algoritmo do Banqueiro é a combinação do algoritmo de segurança e do algoritmo de solicitação de recursos para controlar os processos e evitar impasses em um sistema:

Algoritmo de Segurança

É um algoritmo de segurança usado para verificar se um sistema está ou não em um estado seguro ou segue a sequência segura no algoritmo de um banqueiro:

1. Existem dois vetores Wok e Terminar de comprimento m e n em um algoritmo de segurança.

Inicializar: Trabalho = Disponível
Concluir[i] = falso; para I = 0, 1, 2, 3, 4… n - 1.

2. Verifique o status de disponibilidade de cada tipo de recurso [i], como:

Preciso[eu]<= work
Concluir[i] == falso
Se o i não existir, vá para a etapa 4.

seletor de consultas

3. Work = Work +Allocation(i) // para obter nova alocação de recursos

Concluir[i] = verdadeiro

Vá para a etapa 2 para verificar o status da disponibilidade de recursos para o próximo processo.

4. Se Terminar[i] == verdadeiro; isso significa que o sistema é seguro para todos os processos.

Algoritmo de solicitação de recursos

Um algoritmo de solicitação de recurso verifica como um sistema se comportará quando um processo fizer cada tipo de solicitação de recurso em um sistema como uma matriz de solicitação.

Vamos criar uma matriz de solicitação de recursos R[i] para cada processo P[i]. Se a solicitação de recursoeu[j] igual a 'K', o que significa que o processo P[i] requer 'k' instâncias de recursos do tipo R[j] no sistema.

1. Quando o número de recursos solicitados de cada tipo é menor que o Precisar recursos, vá para a etapa 2 e se a condição falhar, o que significa que o processo P[i] excede sua reivindicação máxima para o recurso. Como a expressão sugere:

Se Solicitar(i)<= need
Vá para a etapa 2;

2. E quando o número de recursos solicitados de cada tipo for menor que o recurso disponível para cada processo, vá para a etapa (3). Como a expressão sugere:

Se Solicitar(i)<= available
Caso contrário, o processo P[i] deve aguardar o recurso, pois ele não está disponível para uso.

3. Quando o recurso solicitado é alocado ao processo alterando o estado:

Harald Baldr

Disponível = Disponível - Solicitação
Alocação(i) = Alocação(i) + Solicitação (i)
Precisareu= Necessidadeeu- Solicitareu

Quando o estado de alocação de recursos é seguro, seus recursos são alocados ao processo P(i). E se o novo estado não for seguro, o Processo P(i) terá que esperar por cada tipo de Solicitação R(i) e restaurar o antigo estado de alocação de recursos.

Exemplo: Considere um sistema que contém cinco processos P1, P2, P3, P4, P5 e os três tipos de recursos A, B e C. A seguir estão os tipos de recursos: A possui 10, B possui 5 e o tipo de recurso C possui 7 instâncias.

Processo Alocação
A B C
Máx.
A B C
Disponível
A B C
P1 0 1 0 7 5 3 3 3 2
P2 200 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 às seguintes perguntas usando o algoritmo do banqueiro:

  1. Qual é a referência da matriz de necessidades?
  2. Determine se o sistema é seguro ou não.
  3. O que acontecerá se a solicitação de recurso (1, 0, 0) para o processo P1 puder o sistema aceitar essa solicitação imediatamente?

Anos. 2: O contexto da matriz de necessidades é o seguinte:

Necessidade [i] = Max [i] - Alocação [i]
Necessidade de P1: (7, 5, 3) - (0, 1, 0) = 7, 4, 3
Necessidade de P2: (3, 2, 2) - (2, 0, 0) = 1, 2, 2
Necessidade de P3: (9, 0, 2) - (3, 0, 2) = 6, 0, 0
Necessidade de P4: (2, 2, 2) - (2, 1, 1) = 0, 1, 1
Necessidade de P5: (4, 3, 3) - (0, 0, 2) = 4, 3, 1

Processo Precisar
A B C
P1 7 4 3
P2 1 2 2
P3 6 0 0
P4 0 1 1
P5 4 3 1

Assim, criamos o contexto da matriz de necessidades.

Resp. 2: Aplique o Algoritmo do Banqueiro:

Os recursos disponíveis de A, B e C são 3, 3 e 2.

Agora verificamos se cada tipo de solicitação de recurso está disponível para cada processo.

Passo 1: Para o Processo P1:

Precisar<= available< p>

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

Então, examinamos outro processo, P2.

como gerar número aleatório em java

Passo 2: Para o Processo P2:

Precisar<= available< p>

1, 2, 2<= 2 3, condition verdadeiro

Novo disponível = disponível + Alocação

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

Da mesma forma, examinamos outro processo P3.

Etapa 3: Para o Processo P3:

Necessidade P3<= available< p>

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

Da mesma forma, examinamos outro processo, P4.

Passo 4: Para o Processo P4:

Necessidade P4<= available< p>

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

Novo recurso disponível = Disponível + Alocação

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

Da mesma forma, examinamos outro processo P5.

Etapa 5: Para o Processo P5:

Necessidade P5<= available< p>

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

Novo recurso disponível = Disponível + Alocação

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

Agora, examinaremos novamente cada tipo de solicitação de recurso para os processos P1 e P3.

Etapa 6: Para o Processo P1:

Necessidade P1<= available< p>

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

Novo recurso disponível = Disponível + Alocação

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

Então, examinamos outro processo P2.

Etapa 7: Para o Processo P3:

Necessidade P3<= available< p>

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

Novo recurso disponível = Disponível + Alocação

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

Conseqüentemente, executamos o algoritmo do banqueiro para encontrar o estado seguro e a sequência segura como P2, P4, P5, P1 e P3.

bytes python para string

Anos. 3: Para atender a Solicitação (1, 0, 2), primeiro temos que verificar se Solicitar<= available< strong>, isto é (1, 0, 2)<= (3, 3, 2), since the condition is true. so process p1 gets request immediately.< p>