algoritmo de avestruz - Ostrich algorithm
Em ciência da computação , o algoritmo de avestruz é uma estratégia de ignorar os problemas que a base que eles podem ser extremamente raro. É nomeado para o efeito avestruz que é definido como "furar a cabeça na areia e fingir que não há nenhum problema." Ele é usado quando é mais rentável para permitir que o problema de ocorrer do que para tentar a sua prevenção.
Use com impasses
Esta abordagem pode ser usada para lidar com os impasses em programação concorrente se eles são acreditados para ser muito raro e o custo de detecção ou prevenção é alto. Por exemplo, se cada PC impasses uma vez por 10 anos, a uma reinicialização pode ser menos doloroso do que as restrições necessárias para impedi-lo.
Um conjunto de processos está num impasse , se cada processo no conjunto está à espera de um evento que só outro processo no conjunto pode causar. Normalmente o evento é a liberação de um recurso actualmente detida e nenhum dos processos pode executar, liberar recursos e ser despertado.
O algoritmo Ostrich finge não há nenhum problema e é razoável para usar se os impasses ocorrem muito raramente e o custo da sua prevenção seria elevado. Os UNIX e do Windows sistemas operacionais tomar essa atitude.
Embora a utilização do algoritmo da avestruz é um dos métodos de lidar com bloqueios , outros métodos eficazes existir tal como a prevenção dinâmico, o algoritmo do banqueiro , a detecção e recuperação, e de prevenção.
Trade-offs
Embora eficiente, utilizando o algoritmo de avestruz comercializa correção por conveniência. No entanto, desde o algoritmo directamente lida com casos extremos, não é uma grande trade-off. Na verdade, o método mais simples e mais utilizada para se recuperar de um impasse é uma reinicialização.
Alguns algoritmos com fraco desempenho pior caso são comumente usados porque eles só apresentam um fraco desempenho em casos artificiais que não ocorrem na prática; Exemplos típicos são o algoritmo simplex e o algoritmo de tipo-inferência para ML padrão . Questões como estouro de inteiros em linguagens de programação com inteiros de largura fixa também são freqüentemente ignorados porque ocorrem apenas em casos excepcionais que não sejam devidas por insumos práticos.
Referências
- algoritmo de avestruz
- Non-Hard Locking Read-Write Locker
- impasses
- Impasse Basics + Modeling + Ostrich Algorithm