Gestão de processos:


Escalonamento de processos:


Um sistema operativo multiprogramado permite que mais do que um processo seja colocado em memória para execução e partilhe o CPU por multiplexagem temporal
A gestão de recursos de um CPU é normalmente conhecido por ESCALONAMENTO.
A política de escalonamento é determinada pela maneira que o computador vai ser usado, no entanto a maior parte dessas políticas usa um mecanismo de escalonamento comum. Estes mecanismos determinam como é que o tempo de CPU é repartido pelos vários processos e a ordem pela qual essa partilha é realizada. Também determina quais os processos a colocar ou a retirar de execução do processador.
- Mecanismos de escalonamento:
Um sistema operativo permite que mais do que um processo seja carregado para memória para futura execução e permite que esse processo partilhe o tempo de execução com outro processo usando um tempo de multiplexagem. Um sistema operativo é ele próprio um ou mais processos em execução permanente. Assim, tem que haver uma maneira de o sistema operativo e o processo de aplicação dividirem o CPU.
Um processo pode ter 3 estados: Ready, Running orBlocked. 

- Partilha de CPU voluntária/involuntária:

O ponto chave de um mecanismo de escalonamento é a maneira de como o escalonamento está involvido. A maneira mais simples é assumir que cada processo irá explicitamente invocar periodicamente o escalonamento partilhando voluntariamente o processador.
A multiplexagem pode ser executada de forma voluntária pelo o processo em execução, nesse caso o processo larga o CPU porque pediu um recurso, podendo o CPU ser utilizado por outros processos. Requisita o recurso ao gestor de recursos e passa ao estado de pronto (passa a ficar bloqueado se o recurso não estiver disponível) è criado então uma lista de processos nesses estados.
Os processos podem ser retirados involuntariamente do processador porque:
- Esgotou o tempo permitido.
- Existe preempção do CPU por um processo prioritário.

- Performance: 

O gerênciador de processos pode ter um papel dramático num computador multiprogramado, pois tem o controlo completo de quando um processo é para ser colocado no CPU. Basta um erro de um processo para que não coopere com tempo de CPU com os outros. Isso faz com que todos os outros processos fiquem impedidos de usar o CPU .




- Estratégias de selecção:

Existe varias políticas de escalonamento que se podem separar em dois tipos diferentes; com preempção e sem preempção. Um sistema preemptivo é projectado com a noção de prioridade. O processo com maior prioridade da lista de espera dos processos em estado de ready deverá ser sempre escalonado para o processador. Se estiver um processo a ocupar o CPU e estiver um processo com maior prioridade em espera este entra para o processador e o que já lá estava é retirado para o fim da lista de espera. Um sistema não preemptivo é projectado de forma a não haver prioridade e o processo não é retirado do CPU à força e ficará lá até que o seu tempo de CPU se esgote.

Um sistema que use um escalonamento preemptivo tem uma maior liberdade na estratégia a usar. Sendo assim existe um temporizador que define o tempo de intervalo disponível de CPU (time slice)

- Estratégias de selecção não preemptivas:

- First-come-First-Served
- Shortest Job-Next
- Priority scheduling
- Dead Line scheduling.


- Estratégias de selecção preemptivas:

- Round-Robin
- Multiple Level Queues 

        - Estratégias de selecção não preemptivas:


- First-come-First-Served:


A prioridade de execução é feita pela ordem de chegada do processo, essa prioridade é calculada a partir de uma marca temporal.

- Shortest Job-Next:

Tal como o próprio nome induz, o processo de menor tempo de execução é o primeiro a ser executado, o algoritmo minimiza o tempo de espera mas penaliza os processos de maior execução.

-Priority Scheduling:

Neste caso o escalonamento é realizado através de prioridade de execução definida externamente, com o processo de maior prioridade tem o menor numero associado. Esta prioridade define a importância do processo e pode ser definida a partir do tempo em que o programa já está à espera.



- Dead Line Scheduling:

Este algoritmo aplica-se em sistemas cujos processos devem terminar antes de um determinado tempo limite.

        - Estratégias de selecção preemptivas:

- Round-Robin:

É o algoritmo mais utilizado em escalonamento porque distribui de forma igual o tempo de CPU entre os processos 

- Multiple-Level-Queues.

Esta política de escalonamento tem uma lista (ready queue) para cada tipo de processo em execução, cada lista tem o seu próprio algoritmo de escalonamento, e desses é seleccionada um processo da lista mais prioritária.
O critério de alteração de prioridades é baseado na utilização dos recursos, como por exemplo o tempo de CPU ou ocupação de memória.


Em estilo de resumo:

O escalonador é responsável pela multiplicidade do CPU entre um conjunto de processos em estado Ready . É chamado periodicamente por um interruptor de tempo ou em qualquer instante que um processo a correr liberta voluntariamente o processador. O Escalonador selecciona de entre uma lista de processos em estado ready à espera de usar o processador e depois aloja o processador para os processos escolhidos.
As estratégias de escalonamento podem ser divididas em selecções não-preemptivas e preemptivas. Num sistema não-preemptivo permite ao processo correr até ser acabado assim que entre no CPU, enquanto que um sistema preemptivo usa um intervalo de tempo e escalonador para periodicamente realocar o CPU. FCPS, SJN, PRIORATY e DeadLine são algoritmos bem conhecidos dos sistemas não-preemptivos , enquanto que os algoritmos Round-Robin e Multiple-Level-Queues são muitas vezes usados em sistemas preemptivos.
O tipo de escalonamento tem sido implementado de muitas maneiras diferentes. Os algoritmos mais sofisticados, incluindo o BSD UNIX SCHEDULES são variantes de Multiple-Level-Queue.
O Escalonador é o coração da gestão de recursos do CPU. Implementa a forma de como os processos partilham e coordenam o tempo de CPU.