Estrategias Usadas - HigorAlves/Smart-Elevator Wiki

#FIFO - First in First Out

Em Ciência da Computação, FIFO (acrônimo para First In, First Out, que em português significa primeiro a entrar, primeiro a sair) refere-se a estruturas de dados do tipo fila.

As listas são amplamente utilizadas em programação para implementar filas de espera. Em uma fila de tipo FIFO os elementos vão sendo colocados na fila e retirados (ou processados) por ordem de chegada. A ideia fundamental da fila é que só podemos inserir um novo elemento no final da fila e só podemos retirar o elemento do início.

Como exemplo de aplicação para filas, pode-se citar a fila de processos de um sistema operacional. Nela, é estabelecido um tempo t a ser usado por cada um dos processos. Se durante a execução de um processo o tempo passa de 0 a t, este é posto na fila e o processo seguinte é executado. Se o processo seguinte não terminar de ser executado no tempo t, ele é posto na fila e o processo subsequente é executado, e assim por diante até todos os processos serem executados.

Em termos de controle de estoque, refere-se a um método de armazenamento onde os itens são consumidos por ordem de chegada.

#Shortest Job First - SJF

SJF (Shortest Job First, em portugues Processo mais curto primeiro) ou SJN (shortest job next, em português Processo mais próximo primeiro) é um algoritmo de escalonamento que executa, dentre processos igualmente importantes, o mais curto primeiro.

O escalonador SJF funciona a partir de um conceito bem simples: os processos menores terão prioridade, ou seja, serão executados primeiro. Isso tem como resultado um tempo médio mínimo de espera para cada conjunto de processos a serem executados.

O cálculo de cada tempo médio é feito a partir da próxima alocação de CPU, ou seja, o processo que utilizar a CPU por menos tempo será executado primeiro. Existem dois esquemas já conhecidos desse tipo de escalonamento:

Preemptivo

Uma vez a CPU atribuída a um processo, este não pode ser interrompida: O emprego deste algoritmo é vantajoso devido à sua simplicidade e também porque maximiza o rendimento do processo (em termos de número de processos de execução para conclusão em um determinado período de tempo). Ele também minimiza a quantidade média de tempo que cada processo tem que esperar até que a sua execução esteja completa. No entanto, ele tem o potencial de starvation para processos que requerem um longo período de tempo, se os processos curtos são continuamente adicionados.

Desvantagem:Podemos dizer que é uma desvantagem, pelo fato do SJF preemptivo (podemos associar o termo preemptivo como prioridade, que na verdade não deixa de ser), é o bloqueio por tempo indefinido ou starvation (podemos associar o termo starvation como estagnação, que na verdade não deixa de ser). Um algoritmo de escalonamento por prioridade (preemptivo) pode deixar que alguns processos de baixa prioridade fiquem esperando indefinidamente pela CPU.

Dizem, que quando o IBM 7094 do MIT foi desligado em 1973, encontraram um processo de baixa prioridade que tinha sido submetido (DISPATCHER) em 1967 e que ainda não tinha sido executado