O algoritmo de escalonamento que proporciona os menores tempos médios de execução e de espera é conhecido como menor tarefa primeiro, ou SJF (Shortest Job First). Consiste em atribuir o processador à menor (mais curta) tarefa da fila de tarefas prontas.
Tipos básicos
Um Escalonador de Processos é um subsistema do Sistema Operacional responsável por decidir o momento em que cada processo obterá a CPU. É utilizado algoritmos de escalonamento que estabelecem a lógica de tal decisão.
Escalonamento de processos é o ato de realizar o chaveamento dos processos ativos, de acordo com regras bem estabelecidas, de forma que todos os processos tenham chance de utilizar a UCP. O escalonador é a parte do SO encarregada de decidir entre os processos prontos, qual será colocado em execução.
Starvation:Situação em que um processo nunca consegue executar sua região crítica e acessar o recurso compartilhado. Quando um processo tem baixa prioridade também pode nunca ser escolhido. Filas FIFO eliminam esse problema.
Um sistema operacional é responsável pelo gerenciamento de todo o hardware do seu computador. ... Outro papel do sistema operacional é garantir que um programa não interfira no outro. Ou seja, o sistema operacional atua como um grande gerente de recursos.
Uma condição de corrida ocorre quando dois threads acessam uma variável compartilhada ao mesmo tempo. O primeiro segmento lê a variável, e o segundo thread lê o mesmo valor da variável.
Resumindo, podemos dizer que uma race condition nada mais é do que uma corrida para ver qual requisição chega primeiro no servidor e é processada. Sendo assim, é uma condição que pode ser explorada de diversas formas por um atacante habilidoso.
A sincronia de processos permite gerenciar o acesso concorrente a recursos do sistema operacional de forma controlada por parte dos processos, de maneira que um recurso não seja modificado em simultâneo, ou que os processos não fiquem em espera que o recurso seja libertado.
Deadlock (interbloqueio, blocagem, impasse), no contexto de sistemas operacionais (SO), refere-se a uma situação em que ocorre um impasse, e dois ou mais processos ficam impedidos de continuar suas execuções - ou seja, ficam bloqueados, esperando uns pelos outros.
Existem quatro condições para a ocorrência de deadlock:
As formas de tratamento de Deadlock:
Uma maneira de evitar deadlocks é impedir que ao menos uma das condições para sua existência ocorra:
Dicas para evitar deadlocks:
Exclusão mútua (também conhecida pelo acrônimo mutex para mutual exclusion, o termo em inglês) é uma técnica usada em programação concorrente para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado, acesso esse denominado por seção crítica.
Deadlock não é um conceito exclusivo de banco de dados, mas sim de aplicações concorrentes. Em poucas palavras: É uma situação em que duas ou mais ações concorrentes estão cada uma esperando que a outra termine, e, portanto, isto nunca ocorre.
O monitor consiste de um conjunto de procedimentos para permitir a manipulação de um recurso compartilhado, uma trava de exclusão mútua, as variáveis associadas ao recurso e uma invariante que define as premissas para evitar disputa de recursos.
Em programação concorrente, uma região crítica - também conhecida por seção crítica ou secção crítica - é uma área de código de um algoritmo que acessa um recurso compartilhado que não pode ser acedido concorrentemente por mais de uma linha de execução.
Condições de disputa: ocorre quando dois processos acessam “simultaneamente” os dados compartilhados entre eles. Podemos evitar essa disputa, proibindo que mais de um processo leia e escreva simultaneamente em uma área de dados compartilhada, isto é o que se chama de exclusão mútua. ...
Sincronização condicional é uma situação onde o acesso ao recurso compartilhado exige a sincronização de processos vinculada a uma condição de acesso. Um recurso pode não se encontrar pronto para uso devido a uma condição específica.
Região crítica
Espera ocupada é um modelo de programação paralela caracterizado por testes repetidos de um condição que impedem o progresso de um processo e que só pode ser alterada por outro processo.
Busy wait = espera ativa ou espera ocupada. Basicamente o que essas soluções fazem é: Quando um processo quer entrar na sua R.C. ele verifica se a entrada é permitida. Se não for, ele espera em um laço (improdutivo) até que o acesso seja liberado.
Como as primitivas sleep e wakeup resolvem problemas de acesso concorrente em regiões críticas? As primeiras tentativas de resolver o problema de race condition utilizavam espera ocupada, i.e., os processos ficavam em estado de espera até que fossem habilitados a utilizar uma região crítica.
O bloco de controle de processo ou bloco de controlo do processo (em inglês: Process control block ou PCB) é uma estrutura de dados no núcleo do sistema operacional que serve para armazenar a informação necessária para tratar um determinado processo.