Você está na página 1de 8

Curso Técnico em Informática Subsequente

T184-1ND – Sistemas Operacionais

Delano Borges Maia - 20211842649

Tucuruí-PA
2021
Curso Técnico em Informática Subsequente
T184-1ND – Sistemas Operacionais

Delano Borges Maia - 20211842649

Atividade avaliativa para obtenção


parcial de nota referente a disciplina
Sistemas ministrada pelo Professor:
Ronnaro dos Santos Jardim

Tucuruí-PA
2021
1. Introdução

Existem inúmeros recursos nos sistemas de computadores que se adéquam ao uso de


somente um processo a cada vez, como, por exemplo, impressoras, unidades de fita e entradas nas
tabelas internas do sistema. Caso dois ou mais processos quiserem escrever simultaneamente na
mesma impressora, haverá um impasse. Desse modo, todos os sistemas operacionais devem ter a
capacidade de garantir o acesso exclusivo de um processo a certos recursos, mesmo que seja
temporariamente [1].
O fenômeno de deadlock é encontrado em Sistemas Operacionais (SOs) e Sistemas de
Gerenciamento de Banco de Dados (SGBDs). Dentro do contexto de Sistemas Computacionais,
basicamente podemos dividir em quatro componentes: hardware, o SOs, os programas aplicativos e
os usuários. Os SOs são parte essencial que atua como intermediário entre o usuário e o hardware
de um computador. O SO é um programa de controle, isto é, é uma camada de software que
gerencia os recursos de um sistema de computação e apresenta uma interface de controle para o
ambiente de computação que permite aos usuários executarem programas. Além disso, o SO é um
alocador de recursos, isto é, um sistema de computação possui muitos recursos, tanto hardware
como software. O SO atua como gerente desses recursos, alocando-os entre os programas, conforme
necessário, para a execução das tarefas. Considerando-se que neste contexto há execução
simultânea de múltiplos processos (programas sendo executados), pode haver muitos pedidos de
recursos e, inclusive, pedidos conflitantes entre si [4].
Cabe ao SO decidir quais os pedidos devem ser atendidos para que o sistema de computação
possa operar de forma eficiente e justa. Portanto, um SO deve permitir o uso do sistema de
computação de forma conveniente e utilizar o hardware do computador de forma eficiente.
Em muitos casos, um processo não necessita apenas de acesso exclusivo a somente um
recurso, mas sim a vários. Por exemplo, dois processos querem gravar em CD um documento
obtido pelo scanner. O processo A está usando o scanner, enquanto o processo B, que é programado
diferentemente, está usando o gravador de CD. Então, o processo A pede para usar o gravador de
CD, mas a solicitação é negada até que o processo B o libere. Porém, ao invés de liberar o gravador
de CD, o processo B pede para usar o scanner. Nesse momento, ambos os processos ficam
bloqueados e assim ficarão para sempre. Essa situação é denominada deadlock [1].

2. Deadlock em sistemas operacionais

2.1) O que é Deadlock

Em computação, deadlock é um termo comum utilizado para descrever uma situação em que
o processo A fica bloqueado pelo sistema operacional esperando por dados do processo B, ao
mesmo tempo que processo B também fica bloqueado esperando por dados do processo. Na
verdade podem ocorrer deadlocks mesmo que exista apenas 1 processo envolvido, neste caso as
trheads do processo podem estar em deadlock [3].

O deadlock pode ocorrer em vários níveis, com bem mais do que apenas 2 processos
envolvidos. É possível que vários processos esperem por outros em cadeia, sendo algum processo
da cadeia espera por dados do processo que iniciou a cadeia. Por estes e outros motivos detectar um
deadlock é uma tarefa de alta complexidade, geralmente NÃO implementada pelos sistemas
operacionais. Em sistemas de banco de dados o deadlock também é bastante comum e vários fatores
devem ser considerados para minimizar a ocorrência dos mesmos [3].

2.2) Definição de deadlock

Figura 1. Exemplo de Deadlock

Fonte: www.univasf.edu.br/

Segundo Tanenbaum, deadlock pode ser definido como: “Um conjunto de processos estará
em situação de deadlock se todo processo pertencente ao conjunto estiver esperando por um evento
que somente um outro processo desse mesmo conjunto poderá fazer acontecer” [1, 2].

Deadlock é um fenômeno indesejável em que ocorre no sistemas onde o fluxo de


informações e/ou de materiais são permanentemente impedidos, isto é, o sistema torna-se bloqueado
aguardando por um evento que nunca irá ocorrer (CASSANDRAS, 1993) [4].

Em um sistema com intenso compartilhamento de um conjunto finito de recursos finitos


entre múltiplos processos sendo executados simultaneamente, a competição de recursos pelos
processos pode levar o sistema a um deadlock, conforme citado anteriormente. O deadlock pode
ocorrer quando dois ou mais processos competem por um número limitado de recursos equivalente
a situação em que processos aguardam a liberação de recursos utilizados por outros processos
(SANTOS FILHO, 2000) [4].

2.3) Condições para a ocorrência de deadlock

Nenhum processo consegue executar recurso que precisa, ou liberar recurso que está de
posse, ou ser acordado, pois o recurso que precisa está ocupado. Vale detalhar que recurso é uma
sequência de eventos necessários ao uso de um processo, assim pode ser dispositivos ou qualquer
item compartilhado [2].

Figura 2. Exemplo de Deadlock (a) e as quatro condições necessárias para a ocorrência do


deadlock.

Fonte: Kitagawa e Nakamoto.

As condições para se entrar no estado de Deadlock:

• Exclusão Mútua: todo recurso está ou associado a um único processo ou disponível;

• Posse e Espera: processos que retêm recursos podem solicitar novos recursos;

• Não Preempção: recursos concedidos previamente não podem ser forçosamente tomados;

• Espera Circular: deve haver uma cadeia circular de dois ou mais processos, na qual cada um
está à espera de recursos retido pelo membro seguinte dessa cadeia.

Todas essas condições devem ocorrer simultaneamente para que ocorra Deadlock. Se uma dessas
condições não ocorrer, não haverá deadlock.

2.4) Tratamento de deadlock

Ignorar por completo: Utilizar o Algoritmo Avestruz que é uma abordagem mais simples.
"Enterre a cabeça na areia e finja que nenhum problema ocorrerá.". Razoável se deadlocks ocorram
muito raramente. Essa abordagem não parece, mas é coerente já que tratamente de deadlock é muito
custoso e supondo que os usuários preferem um deadlock ocasional a uma regra restrigindo o
sistema a um único processo, e assim um único arquivo aberto, ou seja, um recurso de cada tipo [2].
Vale uma análise do cenário em que estamos e então avaliar e ponderar entre conveniência e
correção. Sistemas Operacionais de propósito geral como Windows e Unix adotam essa abordagem
pois em caso de deadlock o usuário terá abandonar o processo. Não gera tantos prejuízos quando
comparados com sistemas de propósito específico que são de alto risco, como por exemplo,
controladores de aviões, equipamentos médicos [2];

Detecção e Recuperação:

- Preempção: retirar um recurso de algum outro processo. Nesse método, cabe uma análise da
natureza do recurso;

- Restauração de Estado: armazenar pontos de verificação de processos periodicamente para que


esse estado salvo sirva para restaurar o processo se este é encontrado em estado de deadlock;

- Eliminação de Processos: forma mais grosseira mas mais simples de quebrar um deadlock é
eliminar um dos processos no ciclo de processos em deadlock, assim os outros processos
conseguirão seus recursos. Para eliminar o processo, escolher um que possa ser reexecutado desde o
início;

- Evitar Dinamicamente: alocação cuidadosa de recursos, avaliando a chance de tal ação resultar
ou não em deadlock;

- Prevenção: é atacar uma das condições necessárias para se ter o estado de deadlock. Segue como
acontece cada um dos possíveis ataques. Atacando:

- Exclusão Mútua (usar spool em tudo): recursos, como impressoras, podem fazer uso de spool: - o
daemon de impressora é o único que usa o recurso impressora; - desta forma deadlock envolvendo a
impressora é eliminado. Nem todos os dispositivos podem fazer parte de spool: Princípio: evtar
alocar um recurso quando ele não for absolutamente necessário; tenta assegurar que o menor
número possível de processos possa de fato requisitar o recurso.;

- Posse e Espera (requisitar inicialmente todos os recursos necessários): exige que todos os
processos requisitem os recursos antes iniciarem, assim um processo nunca tem que esperar aquilo
que precisa. O problema dessa mordomia é que podem não saber quantos e quais recursos vão
precisar no início da execução e assim dimensionar recursos que outros processos poderiam estar
usando. Uma variação desse tratamento é que o processo deveria desistir de todos os recursos para
então requisitar todos os que são imediamente necessário;

- Não Preempção (retomar recursos alocados): esta é uma opção inviável. considere um processo
de posse da impressora, então no meio da impressão esse recurso é passado a outro processo, e num
instante futuro retorna a impressora a força;

- Espera Circular: ordenação numérica dos recursos.

Existe também o cenário de Deadlock sem envolvimento de recursos. Isso é possível que
dois processos entre em situação de deadlock se cada um estiver esperando que o outro faça algo.
Pode ocorrer com semáforos quando cada processo executa um down() sobre dois semáforos
(mutéx, outro qualquer), se executados em ordem errada resulta em deadlock.

Considerações finais

Deadlock é um problema potencial em qualquer sistema operacional. Um estado de


deadlock ocorre quando dois ou mais processos estão esperando indefinidamente por um evento que
só pode ocorrer por um dos processos em espera. Existem alguns métodos para tratar deadlocks,
como, por exemplos, detecção e recuperação, evitar deadlock e prevenção de deadlock. Uma das
estratégias mais simples é ignorar a ocorrência de deadlock, essa estratégia é útil se, praticamente,
não existe a ocorrência de deadlock. Mas é necessário uma análise das necessidades da empresa,
para saber se é ou não útil a implantação das estratégias de tratamento de deadlocks, avaliando o
custo/benefício que essas implantações podem gerar [1].

Referencias
1. DEVMEDIA. Introdução ao Deadlock. Disponível em:
<https://www.devmedia.com.br/introducao-ao-deadlock/24794> Acesso em 19 Dez. 2021.

2. OFICINADANET. Sistemas Operacionais - O que é Deadlock? Disponível em:


<https://www.oficinadanet.com.br/post/12786-sistemas-operacionais-o-que-e-deadlock> Acesso em
19 Dez. 2021.
3. PALPITEDIGITAL. O que é deadlock? Disponível em: <https://www.palpitedigital.com/o-que-
e-deadlock/> Acesso em 19 Dez. 2021.
4. KITAGAWA, Nádja Sayuri Mizusaki e NAKAMOTO, Francisco Yastami. Deadlock: geração
automática de regras para SPFS. Disponível
em:<http://www.unifieo.br/files/0527sinnk.pdf>Acesso em 19 Dez. 2021.

Você também pode gostar