Gerencia de processo by " "

26
Sistemas Operacionais 1 Gerência do Processador

Transcript of Gerencia de processo by " "

Sistemas Operacionais 1

Gerência do Processador

Sistemas Operacionais 2

Conteúdo

Introdução Funções Básicas Critérios de Escalonamento Escalonamentos não preemptivos e Preemptivos Escalonamento FIRST-IN-FIRST-OUT (FIFO) Escalonamento Circular Escalonamento por Prioridades Escalonamento Circular com Prioridades Exercícios

Sistemas Operacionais 3

Introdução

Com o surgimento dos sistemas multiprogramáveis, onde múltiplos processos poderiam permanecer na memória principal compartilhando o uso da UCP, a gerência do processador tornou-se uma das atividades mais importantes em um sistema operacional.

A partir do momento em que diversos processos podem estar no estado de pronto, devem ser estabelecidos critérios para determinar qual processo será escolhido para fazer uso do processador.

Os critérios utilizados para esta seleção compõem a chamada política de escalonamento, que é a base da gerência do processador e da multiprogramação em um sistema operacional.

Sistemas Operacionais 4

Funções Básicas da Política de Escalonamento

Manter o processador ocupado a maior parte do tempo,

Balancear o uso do Processador entre processos,

Privilegiar a execução de aplicações críticas,

Oferecer tempos de resposta razoáveis para usuários.

Cada SO possui um política de escalonamento adequada ao seu propósito e as suas características.

Sistemas Operacionais 5

Funções Básicas

Sistemas Operacionais 6

Rotinas Importantes

SchedulerA rotina do sistema operacional que tem como principal função implementar os critérios da política de escalonamento é denominada escalonador (scheduler). Em um sistema multiprogramável, o escalonador é fundamental, pois todo o compartilhamento do processador é dependente dessa rotina.

DispatcherOutra rotina importante na gerência do processador e conhecida como dispatcher, responsável pela troca de contexto dos processos após o escalonador determinar qual processo deve fazer uso do processador. O período de tempo gasto na substituição de um processo em execução por outro é denominado latência do dispatcher.

Sistemas Operacionais 7

Critérios de Escalonamento

Sistemas de tempo compartilhado exigem que o escalonamento trate todos os processos de forma igual, evitando, assim, a ocorrência de starvation (inanição), ou seja, que um processo fique indefinidamente esperando pelo processador.

Já em sistemas de tempo real, o escalonamento deve priorizar a execução de processos críticos em detrimento da execução de outros processos.

Utilização do Processador: Na maioria dos sistemas, é desejável que o processador permaneça ocupado a maior parte do seu tempo. Uma utilização na faixa de 30% indica um sistema com uma carga de processamento baixa, enquanto que na faixa de 90% indica um sistema bastante carregado, próximo da sua capacidade máxima.

Throughput: Representa o número de processos executados em um determinado intervalo de tempo. Quanto maior o throughput, maior o número de tarefas executadas em função do tempo.

Sistemas Operacionais 8

Critérios de Escalonamento

Tempo de Processador / Tempo de UCP: Tempo de processador ou tempo de UCP é o tempo que um processo leva no estado de execução durante seu processamento. As políticas de escalonamento não influenciam o tempo de processador de um processo, sendo este tempo função apenas do código da aplicação e da entrada de dados.

Tempo de Espera: Tempo de espera é o tempo total que um processo permanece na fila de pronto durante seu processamento, aguardando para ser executado. A redução do tempo de espera dos processos é desejada pela maioria das políticas de escalonamento.

Tempo de Turnaround: Tempo de turnaround é o tempo que um processo leva desde a sua criação ate ao seu termino, levando em consideração todo o tempo gasto na espera para alocação de memória, espera na fila de pronto (tempo de espera), processamento na UCP (tempo de processador) e na fila de espera, como nas operações de E/S. As políticas de escalonamento buscam minimizar o tempo de turnaround.

Sistemas Operacionais 9

Escalonamentos Não-Preemptivos e Preemptivos

As políticas de escalonamento podem ser classificadas segundo a possibilidade do sistema operacional interromper um processo em execução e substituí-lo por um outro, atividade esta conhecida como preempção.

O escalonamento não-preemptivo foi o primeiro tipo de escalonamento implementado nos sistemas multiprogramáveis, onde predominava tipicamente o processamento batch. Nesse tipo de escalonamento, quando um processo está em execução nenhum evento externo pode ocasionar a perda do uso do processador. O processo somente sai do estado de execução caso termine seu processamento ou execute instruções do próprio código que ocasionem uma mudança para o estado de espera.

O escalonamento preemptivo é caracterizado pela possibilidade do sistema operacional interromper um processo em execução e passá-lo para o estado de pronto, com o objetivo de alocar outro processo na UCP.

Com o uso da preempção, é possível ao sistema priorizar a execução de processos, como no caso de aplicações de tempo real onde o fator tempo é critico. Outro beneficio é a possibilidade de implementar políticas de escalonamento que compartilhem o processador de uma maneira balanceada entre os processos.

Sistemas Operacionais 10

Escalonamento FIRST-IN-FIRST-OUT (FIFO)

No escalonamento first-in-first-out (FIFO scheduling), também conhecido como first-come-firstserved (FCFS scheduling), o processo que chegar primeiro ao estado de pronto é o selecionado para execução. Este algoritmo é bastante simples, sendo necessária apenas uma fila, onde os processos que passaram para o estado de pronto entram no seu final e são escalonados quando chegam ao seu início.

Quando o processo em execução termina seu processamento ou vai para o estado de espera, o primeiro processo da fila de pronto é escalonado.

Quando saem do estado de espera, todos os processos entram no final da fila de pronto

Sistemas Operacionais 11

Escalonamento FIRST-IN-FIRST-OUT (FIFO)

Seu principal problema é a impossibilidade de se prever quando um processo tem sua execução iniciada, já que isso varia em função do tempo de execução dos demais processos posicionados a sua frente na fila de pronto.

Outro problema nesse tipo de escalonamento é que processos CPU-bound levam vantagem no uso do processador sobre processos I/O-bound. No caso de existirem processos I/O-bound mais importantes do que os CPU-bound, não é possível tratar esse tipo de diferença.

O escalonamento FIFO é do tipo não-preemptivo e foi inicialmente implementado em sistemas monoprogramáveis com processamento batch, sendo ineficiente se aplicado na forma original em sistemas interativos de tempo compartilhado. Atualmente, sistemas de tempo compartilhado utilizam o escalonamento FIFO com variações, permitindo, assim, parcialmente sua implementação.

Sistemas Operacionais 12

Escalonamento Shortest-Job-First (SJF)

• Também conhecido como SPN (Shortest-Process-Next)• O Algoritmo de escalonamento seleciona o processo que tiver menor tempo de processador ainda por executar • Utilizada nos primeiros SOs com processamento exclusivamente batch.• Para cada novo processo no sistema, um tempo de processador era associado ao seu contexto de sw.• Tipo não-preemptivo• Problema: Estimar o Tempo, principalmente, para processos interativos, devido a entrada de dados ser imprevisível.• Pode haver starvation• Reduz o tempo médio de turnaround em relação ao FIFO

Sistemas Operacionais 13

Escalonamento Cooperativo

• Um processo em execução pode liberar voluntariamente o processador e retornar a fila de pronto• Busca aumentar a multiprogramação em políticas não preemptivas como FIFO e SJF• A tarefa de liberação é exclusiva do próprio processo em execução, cooperando com os outros processos• O processo em execução verifica a fila de processos prontos periodicamente• A interrupção do processo em execução não é responsabilidade do Sistema Operacional• Problema: Se o processo em execução não verificar a fila, o processador pode ficar alocado por um longo período• Os primeiros sistemas MS Windows utilizavam esse tipo de escalonamento (multitarefa cooperativa)

Sistemas Operacionais 14

Escalonamento Circular

O escalonamento circular (round robin scheduling) é um escalonamento do tipo preemptivo, projetado especialmente para sistemas de tempo compartilhado.

Esse algoritmo é bastante semelhante ao FIFO; porém, quando um processo passa para o estado de execução, existe um tempo limite para o uso contínuo do processador denominado fatia de tempo (time-slice) ou quantum. Time-slice varia de 10 a 100 milisegundos

No escalonamento circular, toda vez que um processo é escalonado para execução, uma nova fatia de tempo é concedida. Caso a fatia de tempo expire e não tenha sido suficiente para o término, o sistema operacional interrompe o processo em execução, salva seu contexto e direciona-o para o final da fila de pronto. Esse mecanismo é conhecido como preempção por tempo.

Sistemas Operacionais 15

Escalonamento Circular

A fila de processos em estado de pronto é tratada como uma fila circular. O escalonamento é realizado alocando a UCP ao primeiro processo da fila de pronto. O processo permanece no estado de execução até que termine seu processamento, voluntariamente passe para o estado de espera, ou que sua fatia de tempo expire, sofrendo, neste caso, uma preempção pelo sistema operacional. Após isso, um novo processo é escalonado com base na política de FIFO.

Sistemas Operacionais 16

Escalonamento Circular

A principal vantagem do escalonamento circular é não permitir que um processo monopolize a UCP, sendo o tempo máximo alocado continuamente igual à fatia de tempo definido no sistema. No caso de sistemas de tempo compartilhado, onde existem diversos processos interativos concorrendo pelo uso do processador, o escalonamento circular é adequado.

Um problema presente nessa política é que processos CPU-bound são beneficiados no uso do processador em relação aos processos I/O-bound. Devido às suas características, os processos CPU-bound tendem a utilizar por completo a fatia de tempo, enquanto os processos I/O-bound tem mais chances de passar para o estado de espera antes de sofrerem preempção por tempo.

Estas características distintas ocasionam um balanceamento desigual no uso do processador entre os processos.

Sistemas Operacionais 17

Escalonamento por Prioridades

O escalonamento por prioridades é um escalonamento do tipo preemptivo realizado com base em um valor associado a cada processo denominado prioridade de execução.

O processo com maior prioridade no estado de pronto é sempre o escolhido para execução, e processos com valores iguais são escalonados seguindo o critério de FIFO. Neste escalonamento, o conceito de fatia de tempo não existe;

Consequentemente, um processo em execução não pode sofrer preempção por tempo. No escalonamento por prioridades, a perda do uso do processador só ocorre no caso de uma mudança voluntária para o estado de espera ou quando um processo de prioridade maior passa para o estado de pronto.

Neste caso, o sistema operacional deverá interromper o processo corrente, salvar seu contexto e colocá-lo no estado de pronto. Esse mecanismo é conhecido como preempção por prioridade

Sistemas Operacionais 18

Escalonamento por Prioridades

Um dos principais problemas no escalonamento por prioridades é o starvation. Processos de baixa prioridade podem não ser escalonados, permanecendo indefinidamente na fila de pronto. Uma solução para este problema, possível em sistemas que implementam prioridade dinâmica, é a técnica de aging.

Este mecanismo incrementa gradualmente a prioridade de processos que permanecem por muito tempo na fila de pronto.

Vantagem: Possibilita diferenciar os processos segundo critérios de importância. Com isso, processos de maior prioridade são escalonados preferencialmente. Isto é bastante útil tanto em sistemas de tempo real e nas aplicações de controle de processo, como também em aplicações de sistemas de tempo compartilhado, onde, às vezes, é necessário priorizar o escalonamento de determinados processos.

Sistemas Operacionais 19

Escalonamento Circular com Prioridades

O escalonamento circular com prioridades implementa o conceito de fatia de tempo e de prioridade de execução associada a cada processo.

Neste tipo de escalonamento, um processo permanece no estado de execução até que termine seu processamento, voluntariamente passe para o estado de espera ou saia uma preempção por tempo ou prioridade.

A principal vantagem desse escalonamento é permitir o melhor balanceamento no uso da UCP, com a possibilidade de diferenciar o grau de importância dos processos.

Esse tipo de escalonamento é amplamente utilizado em sistemas de tempo compartilhado.

Sistemas Operacionais 20

Escalonamento Múltiplas Filas

• Multilevel queue scheduling• Existem diversas filas de processos no estado de pronto• As filas são associadas a características / funções (importância da aplicação, tipo de processamento e etc)• Possibilita mecanismos de escalonamento distintos em um mesmo sistema operacional• O processo não possui prioridade, somente a fila. • Preempção acontece quando um processo entra em uma fila de maior prioridade

Sistemas Operacionais 21

Escalonamento Múltiplas Filas

Sistemas Operacionais 22

Escalonamento Múltiplas Filas com Realimentação

• Semelhante ao escalonamento por múltiplas filas, porém os processos podem trocar de fila• Permite o SO identificar dinamicamente o comportamento de cada processo, direcionando-o para a fila mais adequada.• Permite o SO implementar um mecanismo de ajuste dinâmico denominado mecanismo adaptativo• Os processos não são previamente associados às filas de pronto e sim, direcionados pelo SO para a fila relacionada ao seu comportamento

Sistemas Operacionais

Exercícios

Exercícios

Sistemas Operacionais 24

Exercícios

1) Cite 3 funções básicas do Escalonamento de Processos.

2) Explique a política de escalonamento preemptivo e uma política de escalonamento não-preemptivo.

3) Neste algoritmo, quando um processo passa para o estado de execução, existe um tempo limite para a sua utilização de forma continua. Quando este tempo, denominado time-slice ou quantum, expira sem que antes a CPU seja liberada pelo processo, este volta ao estado de pronto (preempção), dando a vez a outro processo. O texto acima refere-se a qual tipo de escalonamento ? a)FIFO b)Circular c)Cooperativo d)Por prioridades

Sistemas Operacionais 25

Exercícios

4) Sabe-se que o sistema operacional trabalha com compartilhamento de tempo, dando a impressão de estar executando simultaneamente mais de uma tarefa, mesmo em arquiteturas monoprocessadas. Quem decide qual processo deverá ser executado pela CPU em cada fração de tempo ?a)Compartilhador de Processos b)Interface de Processos c)Escalonador de Processos d)Gerenciador de Pacotes

5) Que tipo de escalonamento aplicações de tempo real exigem?a)Throughput b)FIFO c) Escalonamento por prioridades d) Preempção por tempo

6) Assinale a alternativa que melhor define escalonamento não-preemptivo :a) Cada processo é executado durante uma fatia de tempo (time-slice).b) Quando processador pode ser retirado do processo que está executando.c)São processos mais prioritários (tempo real), melhores tempos de resposta (tempo compartilhado), compartilhamento uniforme do processador.d) Processo que está sendo executado e não pode ser interrompido.

Sistemas Operacionais 26

Exercícios

7) Assinale a alternativa que melhor conceitue Throughput dentro dos critérios de escalonamento.a) Tempo que um processo leva desde sua admissão no sistema até o seu término, levando em consideração o tempo de espera para alocação de memória, espera na fila de processos prontos para execução, processamento na UCP e operações de E/S.b) Tempo de resposta decorrido do momento da submissão de um pedido até a primeira resposta produzida.c) Representa o número de processos (tarefas) executados em um intervalo de tempod) É o instante que o processador fique a maior parte do tempo ocupado

8) Defina Tempo de Espera e Tempo de Turnaround?