Pelo que eu entendi, o escalonamento é um agendamento de tarefas.
Se escolher FIFO, quem chegar primeiro, vai ter acesso aos recursos solicitados.
Se escolher SJF, quem consumir menos recursos vai ter acesso aos recursos primeiro.
Imagine a fila de um caixa, onde o recurso é dinheiro e as pessoas os “processos” (grosso modo).
Quem chega primeiro tem acesso ao recursos/dinheiro enquanto houver no caixa eletrônico.
Veja, o atendimento é First In, First Out/ FIFO/FCFS (tudo a mesma coisa - chega 1º, recebe 1º se houver cash)
Agora imagine que você tenha 100 reais e tem que comprar o máximo de itens, assim, você vai procurar os itens, +baratos, ou seja, que consomem menos recursos (usa SFC - sua lista de prioridades é baixo consumo de recursos).
Ambos os processos não podem ser interrompidos (não preemptivos).
Seria basicamente o seguinte, entrou na FIFO só sai quando quiser, não pode ser interrompido, o mesmo para o SJF.
Um processo preemptivos é aquele que pode ser reiniciado de onde parou.
Ex.: você inicia um processo: construir uma casa, se faltar recurso, você para a obra, quando tiver recursos, continua a obra de onde parou.
Pior.: alguém entra em um hospital, e precisa receber tratamento contínuo por duas horas, ou seja, o processo não pode ser interrompido, pois se faltar recurso o paciente morre.
Pode parecer estranho tais exemplos para SO, entretanto, a analogia é válida.
Basicamente, o escalonamento já foi definido, sendo ele FCSF(FIFO) e SJF(menor consumo).
Como eu entendo as atividades:
Para Fifo:
I) chegou 1º, se tiver recursos leva;
Para o menor consumo, você teria que:
I) pegar cada processo;
II) pegar cada requisição dos processos e somar os custos;
III) ordenar os processos pelo menor custo. (vide sort, comparable e comparator em java)
Para ambos os escalonamentos acima:
I) usar o algoritmo do banqueiro e distribuir os recursos, enquanto dispuser;
II) se um processo solicitar recursos e o banqueiro(sistema/memória) não dispuser, dizer que a operação é insegura(retorna false);
III) se retorna false, o processo deve ser cancelado ou colocado em fila de espera;
IV) retornou true, o processo deve ser iniciado e vai segurar os recursos enquanto estiver ativo;
V) depois que o processo encerrar suas atividades, ele deve liberar os recursos alocados.
Para o semáforo, vai ter que ver o conceito dele, no sentido bloqueado e desbloqueado, libera recurso, aguarda recurso.
Veja: https://pt.wikipedia.org/wiki/Sistema_operacional_de_tempo-real#Sem.C3.A1foros_bin.C3.A1rios
Quanto aos tempos, veja os vídeos que indiquei, pois ele usa um timer aleatório, poderia ser 1, segundo, ou um dia, o importante é que enquanto o timer estiver ativo, simbológicamente significa que os recursos estão alocados.
Quando o timer encerrar, simbológicamente significa que o processo encerrou, ,ai o banqueiro/Momoria/SO recebe os recursos de volta e os processo que estavam na fila, podem iniciar suas tarefas caso hája recurso disponível.
Está é minha interpretação, mas não posso dizer que é 100%, pois teria que dedicar +tempo.
Basicamente é um sistema de agendamento, que distribui recursos de acordo com o tipo de estratégia de distribuição adotada.
Leia as fontes que indiquei, bem como os vídeos.
Lembre, o timer é uma simbologia, para um processo em execução.
Enquanto estiver em execução, os recursos, estão ocupados.
Tem um ciclo ai:
(semáforo) Tem recurso -> libera recurso -> inicia processo -> fim processo -> libera Recurso/restabelece recurso.
Não Tem recurso -> cancela processo, ou vai pra fila, é uma decisão do SO (“qual o critério de cancelamento do SO?”).
Esta matéria só vai cair pra mim no final do curso, pois entrei no segundo período de ADS, por isso, a ajuda é deficitária.
Procure trabalhar com o nível conceitual, pois saber o que deve ser feito é tão importante quanto saber como deve ser feito.
Novamente: esperar por participantes know how sobre o tema.
Bons estudos e bola pra frente.