O sistema operacional é o software mais fundamental que roda em um computador. É responsável por gerenciar a memória e os processos do computador, além de proteger os detalhes do hardware dos programas aplicativos que o utilizam. O sistema operacional de um computador também garante alocação justa de recursos para usuários e programas, em oposição à distribuição igual entre processos. Um sistema de agendamento justo permite que um processo use a CPU enquanto o outro está aguardando na fila. Como resultado, cada encadeamento obtém acesso suficiente a recursos limitados, impedindo as duas condições mais comuns que atrasariam o processo: Deadlock e Starvation. Ambos são conceitos relacionados nos quais os processos não têm acesso aos recursos. Este artigo destaca alguns pontos-chave comparando os dois em várias frentes.
O impasse é uma condição em que um conjunto de encadeamentos é bloqueado porque cada processo que contém um recurso está tentando acessar outros recursos que estão sendo retidos por outro processo, impedindo eventualmente um agendamento justo do sistema. Uma situação de impasse surge quando as quatro condições a seguir são verdadeiras: Exclusão mútua significa que apenas um processo pode acessar um recurso por vez; Nenhuma condição de preempção significa que um recurso só pode ser liberado voluntariamente pelo processo que o mantém; Espera e espera significa que um processo que mantém recursos pode solicitar recursos adicionais mantidos por outros processos e; Espera circular significa que dois ou mais processos estão presos em uma cadeia circular esperando que cada processo libere seus respectivos recursos.
A fome é uma condição que surge quando um processo entra no período de espera indefinidamente, pois um processo de baixa prioridade nunca tem a chance de acessar o recurso devido a um fluxo constante de processos de alta prioridade acessando o mesmo recurso. É um problema de gerenciamento de recursos porque um processo não recebe acesso ao recurso necessário, empurrando o processo para um período de espera indefinido. Isso acontece porque o recurso necessário nunca é alocado para o processo, causando o processo de falta de recursos, daí o nome. A melhor maneira de evitar a fome é usar a técnica de envelhecimento, que aumenta gradualmente a prioridade dos processos que estão no período de espera por um longo tempo, a fim de garantir um sistema de agendamento justo..
Tanto deadlock quanto inanição são conceitos relacionados que impedem um agendamento justo do sistema em que os processos são impedidos de obter acesso aos recursos. Deadlock, como o nome sugere, refere-se a uma condição em que um conjunto de threads ou processos é bloqueado porque cada processo está aguardando para adquirir um recurso que está sendo mantido por outro processo, resultando em uma situação de deadlock em que os programas deixam de funcionar. A fome, por outro lado, é acionada por um impasse que faz com que um processo congele, porque um processo de baixa prioridade tem acesso negado a um recurso que é alocado para um processo de alta prioridade..
Um impasse refere-se a uma condição específica que ocorre quando um encadeamento ou processo entra em um período de espera porque o recurso do sistema solicitado está sendo retido por outro processo, que, por sua vez, aguarda que outro processo libere seu recurso, criando um impasse. Isso é causado pela má utilização de recursos. A fome é uma condição de adiamento indefinido, em que um processo de baixa prioridade tem acesso negado aos recursos necessários porque os recursos estão sendo alocados para outro processo de alta prioridade. É um problema de gerenciamento de recursos que força o sistema a alocar recursos apenas para processos de alta prioridade.
O impasse é a forma definitiva de privação causada quando as quatro condições a seguir ocorrem simultaneamente: exclusão mútua, sem preempção, espera e espera e espera circular. Uma condição de conflito ocorre apenas em sistemas nos quais todas as quatro condições são verdadeiras. A fome ocorre com base em condições diferentes, como quando não há recursos suficientes para dar a volta e a prioridade dos processos começa a ficar mais baixa ou quando os processos começam a entregar recursos para outros processos sem controle. Se um processo de baixa prioridade solicitar um recurso reservado para os processos de maior prioridade, o processo passará fome para sempre. A fome também ocorre quando os recursos são alocados arbitrariamente, fazendo com que os processos esperem por um longo período de tempo.
A fome pode ser evitada usando um algoritmo de agendamento adequado com fila de prioridade que de fato também use a técnica de envelhecimento - uma técnica de agendamento que adiciona o fator de envelhecimento à prioridade de cada solicitação, o que significa que aumenta o nível de prioridade dos processos de baixa prioridade que estavam aguardando por muito tempo. Também fornecer mais recursos aos programas deve evitar o congestionamento contínuo de recursos. Para impedir que o sistema entre em um impasse, os processos devem ter acesso negado a um ou mais recursos enquanto aguardam simultaneamente por outros e apenas um processo deve ter permissão para acessar um recurso por vez.
Tanto deadlock quanto inanição são conceitos relacionados em sistemas operacionais de multiprocessamento ou sistemas distribuídos que causam um ou mais encadeamentos ou processos na espera pelos recursos de que eles precisam. Impasse é uma situação que surge quando um ou mais processos solicitam acesso ao mesmo recurso, causando o congelamento do processo, enquanto a privação é causada por impasse, que leva o processo a um estado de adiamento indefinido porque os processos têm acesso negado a um recurso mantido por um recurso. processo de alta prioridade e precisa esperar para sempre.