Você está na página 1de 6

Escalonamento de processos

Origem: Wikipdia, a enciclopdia livre.

O escalonamento de processos ou agendador de tarefas (em ingls scheduling) uma atividade organizacional feita pelo escalonador (scheduler) da CPU ou de um sistema distribudo, possibilitando executar os processos mais viveis e concorrentes, priorizando determinados tipos de processos, como os de I/O Bound e os computacionalmente intensivos. O escalonador de processos de 2 nveis escolhe o processo que tem mais prioridade e menos tempo e coloca-o na memria principal, ficando os outros alocados em disco; com essa execuo o processador evita ficar ocioso.
[editar]Tipos

bsicos
de curto prazo

[editar]Escalonador

Seleciona entre os processos em estado de pronto que esto na memria, para serem executados pelo processador. O escalonador de curto prazo faz decises de escalonamento muito mais frequentemente que os de mdio e longo prazo.
[editar]Escalonador

de mdio prazo

Seleciona entre os processos que esto na memria virtual, reduz o grau de multiprogramao. Ele temporariamente remove o processo da memria principal e o coloca na memria secundria (swap) fazendo as operaes de swapping in e swapping out.
[editar]Escalonador

de longo prazo

Seleciona entre os processos novos, os que so limitados por entrada/sada e os que so limitados por CPU, dando prioridade aqueles limitados por I/O, j que utilizam menos tempo o processador. Este escalonador o responsvel pelo grau de multiprocessamento, ou seja a quantidade de processos que o sistema ir trabalhar.
[editar]Definio

Para que a CPU no fique muito tempo sem executar tarefa alguma, os sistemas operacionais utilizam tcnicas para escalonar os processos que esto em execuo ao mesmo tempo na maquina. O escalonamento de processos uma tarefa complicada, pois nenhum algoritmo totalmente eficiente e a prova de falhas, principalmente em se tratando de sistemas interativos, como o Windows, pois a interao com o usurio

fundamental para este sistema onde quem o utiliza procura respostas rpidas e a todo o momento processos so interrompidos pelo usurio. O escalonador do SO utiliza alguns critrios de escalonamento, como: a taxa de utilizao de CPU, que a frao de tempo durante a qual ela est sendo ocupada; throughput que so nmeros de processos terminados por unidade de tempo; turnaround que o tempo transcorrido desde o momento em que o software entra e o instante em que termina sua execuo; tempo de resposta: intervalo entre a chegada ao sistema e inicio de sua execuo; tempo de espera: soma dos perodos em que o programa estava no seu estado pronto. Responsveis por essa tarefa so algoritmos que so entendidos mais facilmente, estudados separadamente, mas na pratica os sistemas operacionais utilizam combinaes deles para melhor escalonar os processos.
[editar]Objetivos

do Escalonamento

O projeto de um escalonador adequado deve levar em conta uma srie de diferentes necessidades, ou seja, o projeto de uma poltica de escalonamento deve contemplar os seguintes objetivos:

Ser justo: Todos os processos devem ser tratados igualmente, tendo possibilidades idnticas de uso do processador, devendo ser evitado o adiamento indefinido.

Maximizar a produtividade (throughput): Procurar maximizar o nmero de tarefas processadas por unidade de tempo.

Ser previsvel: Uma tarefa deveria ser sempre executada com aproximadamentE o mesmo tempo e custo computacional.

Minimizar o tempo de resposta para usurios interativos. Maximizar o nmero possvel de usurio interativos. Minimizar a sobrecarga (overhead): Recursos no devem ser desperdiados embora algum investimento em termos de recursos para o sistema pode permitir maior eficincia.

Favorecer processos "bem comportados": Processos que tenham comportamento adequado poderiam receber um servio melhor.

Balancear o uso de recursos: o escalonador deve manter todos os recursos ocupados, ou seja, processos que usam recursos sub- utilizados deveriam ser favorecidos.

Exibir degradao previsvel e progressiva em situaes de intensa carga de trabalho.

Como pode ser visto facilmente, alguns destes objetivos so contraditrios, pois dado que a quantidade de tempo disponvel de processamento (tempo do processador) finita, assim como os demais recursos computacionais, para que um proceso seja favorecido outro deve ser prejudicado. O maior problema existente no projeto de algoritmos de escalonamento est associado natureza imprevisvel dos processos, pois no possvel prevermos se um dado processo utilizar intensamente o processador, ou se precisar grandes quantidades de memria ou se necessitar numerosos acessos aos dispositivos e E/S.
[editar]Qualidade

do Escalonamento

Existem vrios critrios que permitem a avaliao da qualidade do servio oferecido por um algoritmo de escalonamento. So eles: uso do processador, throughput,tempo de resposta e tempo de permanncia. O tempo de permanncia, tempo de retorno ou turnaround time, um critrio simples dado pela soma do tempo de espera com o tempo de servio ou tempo de execuo. Em geral deseja- se que o tempo de permanncia seja o menor possvel. Uma outra forma de avaliar a qualidade do escalonamento utilizando-se do tempo de permanncia normalizado, ou seja, a razo entre o tempo de permanncia e o tempo de servio.
[editar]Algoritmos

escalonadores

Existem os algoritmos preemptivos e os no preemptivos. Os preemptivos so algoritmos que permitem que um processo seja interrompido durante sua execuo, quer seja por fora de uma interrupo de entrada/sada, quer seja em decorrncia da politica de escalonamento adotada e aplicada por parte do escalonador de processos ou simplesmente por fora do trmino da execuo do processo. Aps a interrupo deste processo, ocorre o que se chama de troca de contexto, que consiste em salvar o contedo dos registradores e a memoria utilizada pelo processo e conceder outro processo o privilgio de executar na CPU, restaurando assim o contexto deste ultimo processo. Cabe ressaltar que nos algoritmos no preemptivos, por serem utilizados exclusivamente em

sistemas monoprocessados, esse fato no ocorre, sendo cada programa executado at o fim. Exemplos de Algoritmos:

FIFO (First in, first out) ou FCFS (First come, first served): Onde como seu prprio nome j diz, o primeiro que chega ser o primeiro a ser executado;

SJF (Shortest Job First): Onde o menor processo ganhar a CPU e atrs do mesmo formar uma fila de processos por ordem crescente de tempo de execuo;

SRT (Shortest Remaining Time): Neste algoritmo escolhido o processo que possua o menor tempo restante, mesmo que esse processo chegue metade de uma operao, se o processo novo for menor ele ser executado primeiro;

Algoritmo Loteria: O Sistema Operacional distribui tokens (fichas), numerados entre os processos, para o escalonamento sorteado um numero aleatrio para que o processo ganhe a vez na CPU, processos com mais tokens tm mais chance de receber antes a CPU.

Escalonamento garantido: Este algoritmo busca cumprir promessas de alocao de CPU o mais preciso possvel.

RR (Round-Robin): Nesse escalonamento o sistema operacional possui um timer, chamado de quantum, onde todos os processos ganham o mesmo valor de quantum para rodarem na CPU. Com exceo do algoritmo RR e escalonamento garantido, todos os outros sofrem do problema de Inanio (starvation).

Mltiplas Filas: So usadas vrias filas de processos prontos para executar, cada processo e colocado em uma fila, e cada fila tem uma poltica de escalonamento prpria e outra entre filas.

Todos os algoritmos classificam os processos em estados: Iniciando, Pronto, Executando, Entrada/ Sada e Terminado. Ainda existem vrios
[editar]Estados

de processos

Para o sistema operacional organizar os processos que sero atendidos eles so atribudos estados para os mesmos.
[editar]Diagrama

de Estados de Processos

Quem armazena essas informaes como os estados de processos e outras como: tempo e execuo, por exemplo, o PCB (Process Control Block).
[editar]Distribuio

de Prioridades

Para melhorar essa distribuio da CPU entre os processos, alguns algoritmos utilizam diferentes prioridades, essas prioridades podem ser mudadas no Windows, por exemplo, pelo prprio usurio. Com intuito de gerenciar melhor as prioridades de processo, o sistema operacional cria filas de processos. Em cada fila existem processos de mesma prioridade, e existe tambm fila para processos de entrada e sada. Prioridades podem ser mudadas pelo usurio, ou atribudas automaticamente pelo sistema operacional em questo. Mesmo com a aplicao de prioridades e algoritmos melhor implementados, alguns processos ainda correm o risco de sofrer starvation (ficar muito tempo sem receber a CPU) por isso em determinando momento pode ocorrer o que chamamos de aging (O aging ocorre quando a prioridade de um processo vai se alterando com o "tempo de vida" do mesmo, controlando o starvation), que muda momentaneamente a prioridade de um processo que no executado h muito tempo e joga sua prioridade para a mais alta possvel para que ele seja atendido, logo aps as prioridades voltam ao normal. Outro caso em que prioridades so alteradas quando um programa de baixa prioridade comeou a fazer uso de algum perifrico de entrada e sada antes de outro de prioridade alta. Neste caso processos de alta prioridade so obrigados a esperarem os de baixa terminar sua E/S para poderem usar este perifrico.
[editar]Alterando

prioridades no Windows

Existem ainda sistemas em que quando um processo inicia sua execuo, o sistema garante que este processo vai ser terminado, so chamados sistemas garantidos. Nestes sistemas a interveno do usurio mnima, ao contrario do que ocorre em sistemas em tempo real como o Windows em que o usurio interrompe processos a todo instante por isso o sistema no garante que um processo vai ser Terminado.
[editar]Trocas

de contexto

Processos so interrompidos e retomados a todo tempo, para que o sistema operacional possa fazer esse tipo de ao, necessrio a troca de contexto.

Para que o sistema operacional possa interromper um processo e retomar ele mais tarde, ele usa a PCB (Process Control Block) para guardar todas as informaes que a CPU estava usando naquele momento e possa consulta-la mais tarde para que retome exatamente no ponto em que foi interrompido anteriormente.
[editar]Threads

Threads: Processos podem ser divididos em pedaos para que ele no deixe de responder por algum motivo externo, onde isto possa atrapalhar a execuo do mesmo, ou para agilizar a programao e execuo. Quando programas so divididos em threads, podemos ter partes do processo rodando em paralelo, threads tambm so escalonveis.
[editar]