Revisão final do sistema operacional - classe 6 - impasse (2)

1. Prevenção de impasse

Evitar o deadlock também é uma estratégia preventiva com antecedência, que é evitar que o sistema entre em um estado inseguro durante a alocação dinâmica de recursos para evitar o deadlock.

1. Status de segurança do sistema

No método de prevenção de deadlock, o estado do sistema é dividido em estado seguro e estado inseguro.Quando o sistema está em um estado seguro, o deadlock pode ser evitado, e quando o sistema está em um estado inseguro, ele pode entrar em um estado de deadlock

2. Sequência de segurança

A chamada sequência segura significa que, se o sistema alocar recursos de acordo com essa sequência, cada processo pode ser concluído com sucesso. Enquanto uma sequência segura puder ser encontrada , o sistema estará em um estado seguro. Claro, pode haver várias sequências de segurança.

3. De um estado seguro para um estado inseguro

Se nenhuma sequência segura puder ser encontrada no sistema depois que os recursos forem alocados, o sistema entrará em um estado inseguro. Isso significa que todos os processos podem não ser executados sem problemas posteriormente.
Se o sistema estiver em um estado seguro, o deadlock não deve ocorrer. Se o sistema entrar em um estado inseguro, pode ocorrer um impasse. (O estado inseguro não significa necessariamente que ocorreu um impasse, mas deve estar em um estado inseguro quando ocorrer um impasse.)
Portanto, antes da alocação de recursos, é possível pré-julgar se esta alocação fará com que o sistema entre um estado inseguro, para decidir se permite a alocação de recursos. Essa também é a ideia central do "Algoritmo do Banqueiro".

Portanto, a questão é: qual é o algoritmo do banqueiro?

Deixe-me dar um exemplo para facilitar a compreensão:
neste momento você é um banqueiro de sucesso com 10 bilhões de fundos em suas mãos...

Neste momento, existem três empresas que querem pedir-lhe um empréstimo, nomeadamente a empresa B, a empresa A e a empresa T.

B: "Irmão, eu quero pegar emprestado até 7 bilhões"

A: "Irmão, eu quero pegar emprestado até 4 bilhões"

T: "Irmão, eu quero pegar emprestado até 5 bilhões"

Existe uma regra: se o dinheiro emprestado a uma empresa não atender aos requisitos máximos apresentados pela empresa, o dinheiro emprestado será em vão

Claro, você não quer que seu dinheiro seja desperdiçado, então você deve considerar como pedir emprestado para garantir que seus 10 bilhões não sejam desperdiçados.

requisito máximo já emprestado Emprestar no máximo
B 70 20 50
A 40 10 30
T 50 30 20

Neste momento, você ainda tem 4 bilhões em suas mãos...
Analise a sequência de segurança do empréstimo de dinheiro
Neste momento, B quer 3 bilhões emprestados de você, você se atreve a pedir emprestado?

Se você concorda: emprestou B 3 bilhões, então você ainda tem 1 bilhão na mão, a imagem acima é ligeiramente modificada, conforme mostrado abaixo:

requisito máximo já emprestado Emprestar no máximo
B 70 20+30=50 50-30=20
A 40 10 30
T 50 30 20

Se outra empresa se propõe a emprestar mais 2 bilhões, você estará morto, obviamente você não pode pedir emprestado e seu dinheiro é desperdiçado, então esse dinheiro não pode ser emprestado. inseguro

Neste momento, A quer pedir 2 bilhões emprestados de você, você se atreve a pedir emprestado?
Se você concorda: emprestou A 2 bilhões, então você ainda tem 2 bilhões na mão, a imagem acima é ligeiramente modificada, conforme mostrado abaixo:

requisito máximo já emprestado Emprestar no máximo
B 70 20 50
A 40 10+20=30 30-20=10
T 50 30 20

Em seguida, você pode emprestar todos os 2 bilhões para a empresa T. Quando ele devolver todo o dinheiro, ele terá 5 bilhões em mãos e então emprestará o dinheiro para a Empresa B. Quando devolver todo o dinheiro, terá 7 bilhões em mãos e, por fim, emprestará à empresa A. Assim você recebe todo o seu dinheiro de volta.

Portanto, esta sequência de empréstimo (sequência segura): T->B->A
verifica esta sequência por si só de acordo com as ideias acima: A->T->B

4. Algoritmo do banqueiro

O algoritmo do banqueiro foi projetado pelo estudioso holandês Dijkstra para o sistema bancário para garantir que, quando os bancos emitem empréstimos em dinheiro, não deixem de atender às necessidades de todos os clientes. Esse algoritmo foi posteriormente usado em sistemas operacionais para evitar impasses.
***Idéia central: ***Quando um processo faz uma aplicação de recursos, primeiro julgue se a alocação fará com que o sistema entre em um estado inseguro. Se entrar em um estado inseguro, a solicitação não será concedida temporariamente e o processo será bloqueado e aguardado primeiro.
1) Estrutura de dados:
① Vetor de recursos disponíveis Disponível. Uma matriz unidimensional com comprimento m e Disponível indica quantos
recursos ainda estão disponíveis.
② Matriz de demanda máxima Máx. Indica o número máximo de recursos requeridos por cada processo, matriz nxm.
③ Matriz de alocação Alocação. Indica quantos recursos foram alocados para cada processo, matriz nxm
④ matriz de demanda Need. A matriz indica quantos recursos cada processo precisa no máximo,
Max -Allocation=Need
⑤O vetor de requisição do processo P. Use uma matriz de um bit com comprimento m para indicar o número de vários recursos que o processo aplicou neste momento.

2) Passos do algoritmo:
Seja Request o vetor de requisição do processo Pi. Se Requesti[j]=K, significa que o processo Pi precisa de K recursos do tipo Rj. Quando o Pi envia uma solicitação de recurso, o sistema verifica conforme os seguintes passos:
①Se Requesti[j]≤Need[i,j] gate, vá para o passo ②; caso contrário, é considerado um erro, pois a quantidade de recursos que ele precisa excede o que anunciou o valor máximo.
②Se Requesti[j]≤Available[j], vá para o passo ③; caso contrário, significa que não há recursos Pi suficientes para esperar.
③O sistema aloca provisoriamente recursos para o processo Pi e modifica o valor na seguinte estrutura de dados
Disponível[j]=Disponível[j]-Requisição[j];
Alocação[i,j]=Alocação[i,j]+Requisição[ j];
Need[ij]=Need[i,j]-Request[j];
④O sistema executa o algoritmo de segurança para verificar se o sistema está em um estado seguro após a alocação de recursos. Se for seguro, o recurso é formalmente alocado ao processo Pi para completar a alocação; caso contrário, a alocação provisória é invalidada
, o estado original de alocação do recurso é restaurado e o processo Pi espera.

3) Algoritmo de segurança:
O algoritmo de segurança executado pelo sistema pode ser descrito da seguinte forma:
①Defina dois vetores:
a. Vetor Trabalho Trabalho, que indica o número de vários recursos que o sistema pode fornecer para o processo continuar em execução e contém m Quando o elemento começa a executar o algoritmo de segurança, Work=Available;
b.Finish: Indica se o sistema possui recursos suficientes alocados ao processo para completá-lo. No início, faça Finish[i]=false; quando houver recursos suficientes alocados para o processo, faça Finish[i]=true.
②Encontre um processo no conjunto de processos que possa satisfazer as seguintes condições
a.Finish[i]=false;
b. Need[i,j]≤Work[j];
se encontrado, execute a etapa ③, caso contrário, execute a etapa ④.
③ Após o processo Pi obter recursos, ele pode executar sem problemas até que seja concluído e libere os recursos alocados a ele, portanto, deve ser executado:
Work[j]=Work[j]+Allocation[i,j];
Finish[i ]= true;
volte para a etapa ②.
④ Se Finish[i]=true de todos os processos for satisfeito, isso significa que o sistema está em um estado seguro; caso contrário, o sistema está em um estado inseguro.
4) Exemplos de algoritmos de segurança
Algoritmo: Algoritmo do banqueiro (processo de elaboração de perguntas)

Questão:
insira a descrição da imagem aqui
Análise:
Assume 0, 6, 2, não é seguro da seguinte forma:
insira a descrição da imagem aqui
Assume 1, 1, 1, não é seguro da seguinte forma:
insira a descrição da imagem aqui
Assume 0, 4, 7, não é seguro da seguinte forma:
insira a descrição da imagem aqui
Assume 1, 4 , 0, é seguro da seguinte forma:
insira a descrição da imagem aqui

2. Detecção e liberação de deadlock

Se nem a prevenção de deadlock nem as medidas de prevenção de deadlock forem adotadas no sistema, é muito provável que ocorra um deadlock no sistema. Nesse caso, o sistema deve fornecer dois algoritmos:
1) Algoritmo de detecção de deadlock: é usado para detectar o estado do sistema e foi determinado se ocorreu um deadlock no sistema.
Para poder detectar deadlocks, o sistema deve:
①Usar algum tipo de estrutura de dados para salvar as informações de solicitação e alocação de recursos.
②Forneça um algoritmo que use as informações acima para detectar se o sistema entra em um estado de impasse.
Diagrama de alocação de recursos
Dois tipos de nós: nó de processo e nó de recurso (pode haver vários nós de recurso)
Dois tipos de arestas:
nó de processo -> nó de recurso: representa um nó de processo para solicitar um tipo de recurso.
Nó de recurso -> nó de processo: Significa que este tipo de recurso foi alocado para o nó de processo apontado.
Teoria do impasse: Se o gráfico de alocação de recursos do sistema for irredutível em um determinado momento, então o sistema está em impasse neste momento.
insira a descrição da imagem aqui
2) Algoritmo de liberação de impasse: Ao usar este algoritmo, o algoritmo pode liberar o sistema do impasse. Uma vez que um impasse é detectado, o impasse deve ser resolvido imediatamente.
Suplemento: Nem todos os processos no sistema estão em deadlock.Depois que o grafo é alocado com o algoritmo de detecção de deadlock, os processos que ainda estão conectados à borda são processos em deadlock.
O principal método para remover o impasse:
① método de privação de recursos.
Privar e alocar recursos ocupados por alguns bloqueios de processo em impasse para outros processos. Mas deve evitar que o processo suspenso fique sem recursos por muito tempo.
② Método de processo de revogação. A revogação forçada de alguns processos de impasse ou de todos os processos de impasse é simples e rude, mas o preço é relativamente alto.
③ Método de reversão do processo. Desative um ou mais processos em impasse o suficiente para evitar o impasse. Isso requer o registro das mensagens históricas do processo e a definição de um ponto de restauração.

Existe outro tipo de questão: No
insira a descrição da imagem aqui
meu entendimento: você não pode deixar os dois correrem juntos, rodar um a um, senão você não sabe se as coisas geradas são usadas em outro lugar, e qual delas você usar vai dar um impasse.
Pratique mais uma vez! ! !

Exemplo: Existem três processos concorrentes em um sistema que precisam todos de quatro recursos do mesmo tipo, então os recursos mínimos que definitivamente não causarão deadlock neste sistema são (B) A.9
B.10 C.11 D.12
insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_52030647/article/details/130753390
Recomendado
Clasificación