• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
SO-04 Escalonamento de Processos
 

SO-04 Escalonamento de Processos

on

  • 28,243 views

Escalonamento de Processos. Conceitos básicos. Algoritmos de Escalonamento (Sistemas Operacionais)

Escalonamento de Processos. Conceitos básicos. Algoritmos de Escalonamento (Sistemas Operacionais)

Statistics

Views

Total Views
28,243
Views on SlideShare
28,138
Embed Views
105

Actions

Likes
2
Downloads
941
Comments
0

7 Embeds 105

http://www.slideshare.net 67
http://regionalcampinas.blogspot.com 20
http://regionalcampinas.blogspot.com.br 13
http://www.regionalcampinas.blogspot.com 2
http://webcache.googleusercontent.com 1
http://www.regionalcampinas.blogspot.com.br 1
http://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    SO-04 Escalonamento de Processos SO-04 Escalonamento de Processos Presentation Transcript

    • Processos Escalonamento da CPU
    •   Conceitos Básicos   Escalonamento de Processador   Critérios de Escalonamento   Escalonamento Não Preemptivo   Escalonamento Preemptivo   Mecanismos de Interrupção em Intervalos de Tempo   Prioridades   Algoritmos de Escalonamento   Escalonamento para Vários Processadores   Escalonamento em Tempo Real   Estudo de Casos: Escalonamento no Unix, Windows XP, Linux e de Threads Eduardo Nicola F. Zagari 2 Escalonamento de CPU
    •   Multiprogramação: corresponde a diversos programas distintos executando em um mesmo processador   maximiza utilização da CPU   No entanto, somente um processo é executado a cada instante em um processador   Toda vez que um processo tiver que esperar (evento ou E/S) outro processo usa a CPU (“ciclo de vida” de um processo)   A execução de um processo consiste de um ciclo de execução de CPU e espera de I/O escalonado pronto execução interrupção Escalonador espera E/S ou evento bloqueado por E/S ou evento Eduardo Nicola F. Zagari 3 Escalonamento de CPU
    • Eduardo Nicola F. Zagari 4 Escalonamento de CPU
    •   Conhecido como Escalonador de Processsos   Determina/Escolhe, dentre os processos que estão em memória, qual processo será associado a uma CPU, quando esta estiver disponível   Age sobre os processos prontos para executar (processos do estado de pronto)   Segue uma política de escolha   Executado várias vezes por segundo   Reside permanentemente na memória Eduardo Nicola F. Zagari 5 Escalonamento de CPU
    •   Situação para escalonamento:   processo passa do estado em execução para pronto   processo passa de em execução para espera/bloqueado   processo passa de espera/bloqueado para pronto   processo termina   Preempção: é quando um processo em estado de pronto tem precedência sobre o que está usando a CPU.   Escalonamenteo Não-Preemptivo: não contempla as preempções, isto é, o escalonador não interrompe os processos que estão em execução.   Escalonamento Preemptivo: que contempla a preempção das tarefas, isto é, provoca uma interrupção forçada de um processo para que outro, com a preempção, possa usar a CPU. Eduardo Nicola F. Zagari 6 Escalonamento de CPU
    •   Determina qual processo no estado pronto para executar será associado a uma CPU, quando esta estiver disponível   É executado várias vezes por segundo   Reside permanentemente na memória Eduardo Nicola F. Zagari 7 Escalonamento de CPU
    •   Determina quais os processos que poderão competir pela CPU   Responsável pela suspensão e ativação de processos, o que significa flutuações na carga do sistema visando um melhor balanceamento   Atua como um buffer entre a admissão de jobs e a associação da CPU aos processos que constituem os jobs admitidos   Job: é um conjunto de atividades necessárias para a realização do trabalho computacional requerido por um usuário (divide-se em diversos steps (passos) ) Eduardo Nicola F. Zagari 8 Escalonamento de CPU
    •   Determina quais jobs serão admitidos e poderão competir pelos recursos do sistema (admission scheduling)   Permite que não existam jobs em demasia no sistema, o que acarretaria uma eterna competição pelos recursos   Todo job, uma vez admitido, acarreta na criação de um ou mais processos Eduardo Nicola F. Zagari 9 Escalonamento de CPU
    •   O módulo Dispatcher dá o controle da CPU para o processo selecionado pelo escalonador de curto prazo. Isto envolve:   Troca de contexto   Mudança do processador para o Modo Usuário   Salto para a localização adequada no programa do usuário para o seu reinício   Latência de Despacho – tempo que leva para o dispatcher parar um processo e reiniciar a execução de outro Eduardo Nicola F. Zagari 10 Escalonamento de CPU
    •   Utilização da CPU: % do tempo que a CPU fica ocupada (0 - 100%)   Throughput: número de processos completados por unidade de tempo   Turnaround: intervalo de tempo entre a submissão de um processo e sua finalização (soma dos intervalos esperando para ser carregado na memória, fila de pronto, em execução e em espera)   Tempo de espera: tempo que cada processo fica na fila de pronto   Tempo de resposta: tempo que o processo demora para produzir alguma resposta à uma requisição (importante para processos interativos)   É desejável maximizar os 2 primeiros e minimizar os 3 últimos   Para sistemas interativos, é importante minimizar a variância do tempo de resposta (previsibilidade) Eduardo Nicola F. Zagari 11 Escalonamento de CPU
    •   Objetivos das políticas de escalonamento:   maximizar a utilização da CPU   maximizar o throughput   minimizar o turnaround   minimizar o tempo de espera   minimizar o tempo de resposta   ser justa   maximizar o número de usuários interativos   ser previsível   minimizar o uso de recursos   balancear o uso de recursos   balancear usuários interativos com os demais   priorizar processo que segurem recursos chave   não degradar o sistema   etc Eduardo Nicola F. Zagari 12 Escalonamento de CPU
    •   Não permite a retirada da CPU de um processo após este tê-la conseguido   Tempo de resposta é mais previsível É mais justo?   Processos curtos precisam esperar pelos longos   Permite monopolização da CPU Eduardo Nicola F. Zagari 13 Escalonamento de CPU
    •   Permite que a CPU seja retirada de um processo para ser entregue a outro   Garante que os processos possam progredir uniformemente   Não permite a monopolização da CPU   Usado para:   atendimento rápido de processos mais importantes   tratamento de interrupções em sistemas de tempo real   atender os usuários em sistemas de tempo compartilhado   A mudança de contexto envolve sobrecarga Eduardo Nicola F. Zagari 14 Escalonamento de CPU
    •   Para prevenir processos do usuário de monopolizar o sistema (CPU), por acidente ou de propósito, uma interrupção por tempo é usada quantum ou time-slice  é o tempo limite para uso da CPU, após o qual ocorre a interrupção por tempo   Um processo do usuário, uma vez interrompido por término do seu quantum, volta à fila de pronto para executar e permite o escalonamento de outro processo   Um processo em execução mantém controle sobre a CPU até:   voluntariamente liberá-la   quantum time expirado   outra interrupção exija atenção da CPU para que seja tratada   erro de execução Eduardo Nicola F. Zagari 15 Escalonamento de CPU
    •   Podem ser fixas (estáticas) durante a vida do processo ou modificáveis (dinâmicas)   Podem ser associadas externamente ou de maneira automática   Podem ser calculadas e associadas de forma racional ou arbitrária Eduardo Nicola F. Zagari 16 Escalonamento de CPU
    •   FIFO (First-In First-Out) (também conhecido por FCFS (First- Come First-Served))   SJF (Shortest Job First)   Round-Robin   SRT (Shortest Remaining Time)   Prioridade   Múltiplas Filas   Múltiplas Filas com Realimentação   Escalonamento para Vários Processadores   Escalonamento de Tempo Real   Earliest Deadline Eduardo Nicola F. Zagari 17 Escalonamento de CPU
    •   Não preemptivo (Uma vez em execução, é executado até o término)   O processo que chegar primeiro (first-in) é o primeiro a ser selecionado para execução (first-out)   Implementado através de fila   Inicialmente criado para sistemas batch   Injusto com jobs curtos (veja exemplos!)   Ineficiente para sistemas de tempo compartilhado   Combinado com outros esquemas Eduardo Nicola F. Zagari 18 Escalonamento de CPU
    • Suponha que os processos cheguem na ordem P1, P2 e P3   Turnaround médio = ( 10 + 12 + 14 ) / 3 = 12 u.t.   Tempo de espera médio = ( 0 + 10 + 12) / 3 = 7,33 u.t. Eduardo Nicola F. Zagari 19 Escalonamento de CPU
    • Suponha que os processos cheguem na ordem P2, P3 e P1   Turnaround médio: ( 14 + 2 + 4 ) / 3 = 6,67 u.t.   Tempo de espera médio = ( 4 + 0 + 2) / 3 = 2 u.t. Eduardo Nicola F. Zagari 20 Escalonamento de CPU
    •   Não preemptivo   O processo com o menor tempo para ser completado é escolhido   quando a informação sobre o tempo de execução não se encontra disponível deve ser estimado ou usa-se o da última vez   desempate pode ser, por exemplo, por FIFO   Reduz tempo médio de espera mais do que isto: SJF é ótimo, pois dá o tempo de espera mínimo para um dado conjunto de processos   No entanto, apresenta uma grande variância no tempo de espera Eduardo Nicola F. Zagari 21 Escalonamento de CPU
    •   Turnaround médio FIFO: (6+14+21+24)/4 = 16,25 u.t.   Tempo de espera médio: (0 + 6 + 14 + 21)/4 = 10,25 u.t.   Turnaround médio SJF: (3 + 9 + 16 + 24) / 4 = 13 u.t.   Tempo de espera médio: (3 + 16 + 9 + 0) / 4 = 7 u.t. Eduardo Nicola F. Zagari 22 Escalonamento de CPU
    •   O processo em execução libera voluntariamente a CPU retornando para a fila de pronto sem a interrupção do sistema operacional (não preemptivo)   Um programa mal escrito pode monopolizar a CPU   Fila de mensagem é verificada periodicamente (Win 3.11) Eduardo Nicola F. Zagari 23 Escalonamento de CPU
    •   Define-se uma unidade de tempo denominada quantum ou time- slice (usualmente de 10 a 100ms) que corresponde ao tempo limite para uso da CPU por cada processo   Após este tempo ter sido passado, o processo sofre preempção e é colocado no final da fila de pronto   A fila de pronto é tratada como uma fila circular (FIFO)   O escalonador “pega” o primeiro processo da fila de pronto para ser executado e define um timer para o tempo de 1 quantum   Se o tempo de execução for maior que 1 quantum, o timer gera uma interrupção e o SO faz o chaveamento de contexto   Projetado para sistemas de tempo compartilhado   Se houver n processos na fila de pronto e o tempo do quantum for q, então cada processo obtém 1/n do tempo da CPU e fatias de no máximo q unidades de tempo por vez. Nenhum processo espera por mais que (n-1)q unidades de tempo. Eduardo Nicola F. Zagari 24 Escalonamento de CPU
    •   Claramente preemptivo   O tempo médio de espera é alto   O desempenho depende do tamanho do quantum   se for muito grande (infinito) tende a FIFO   se for muito pequeno, o overhead com ochaveamento de contexto se torna alto demais... Eduardo Nicola F. Zagari 25 Escalonamento de CPU
    • Quantum = 1 u.t.   Turnaround médio RR: (16 + 8 + 9) /3 = 11 u.t.   Tipicamente, o turnaround médio é maior que o do SJF, mas o tempo de resposta é melhor Eduardo Nicola F. Zagari 26 Escalonamento de CPU
    •   É a contra-partida preemptiva do SJF   O processo com menor tempo para ser completado é escolhido   Um processo em execução é interrompido se um novo processo, com menor tempo para ser completado aparece na fila de pronto   Apresenta sobrecarga maior que o SJF   Variações:  Tempo para ser completado pequeno  Tempo para ser completado do processo que chega é pouco menor Eduardo Nicola F. Zagari 27 Escalonamento de CPU
    •   Turnaround médio SRT: ((17-0)+(5-1)+(26-2)+(10-3))/4 = 13 u.t.   E qual é o turnaround médio se fosse escalonado segundo SJF?   Resp.: 14,25 u.t. Eduardo Nicola F. Zagari 28 Escalonamento de CPU
    •   Uma prioridade é associada a cada processo e a CPU é alocada ao processo de maior prioridade   SJF é um caso de escalonamento por prioridade em que a prioridade é maior para os processos de menor tempo de execução   A prioridade é geralmente representada por um número (entre 0-7 ou 0-255), mas não existe uma convenção de qual número (o maior ou o menor) é o de maior prioridade   Pode ser preemptivo ou não   SJF é um Escalonamento por Prioridade onde a prioridade é definida de acordo com o tempo de CPU estimado do processo Eduardo Nicola F. Zagari 29 Escalonamento de CPU
    •   Turnaround médio: (16+1+6+18+19)/4 = 15 u.t. Eduardo Nicola F. Zagari 30 Escalonamento de CPU
    •   Prioridade definida:   internamente: usa alguma quantidade mensurável para computar a prioridade. (dinâmica)  Ex.: memória, arq. abertos, razão I/O por CPU usada   externamente: importância do processo, departamento de origem, fatores políticos, hierarquia. (estática)   Problema: starvation - processos de baixa prioridade podem ficar indefinidamente no estado de pronto (IBM 7094 no MIT processo rodando por 6 anos)   Solução: aumentar progressivamente a prioridade dos processos que estão aguardando Eduardo Nicola F. Zagari 31 Escalonamento de CPU
    •   Os processos são previamente divididos em grupos em função do tipo de processamento realizado   Interativo (foreground)   Batch (background)   A cada grupo é aplicado um mecanismo de escalonamento adequado Alta Fila de processos   Interativo – RR prioridade do sistema   Batch – FIFO Fila de processos Possibilidade de interativos starvation Baixa Fila de processos prioridade batch   utra alternativa: time-slices entre filas (ex.: 80% para os interativos O em RR e 20% para os batch em FIFO) Eduardo Nicola F. Zagari 32 Escalonamento de CPU
    •   Os processos não permanecem em uma mesma fila até o término do processamento   O SO faz um ajuste dinâmico (mecanismo adaptativo) para ajustar os processos em função do comportamento do sistema   Os processos não são previamente associados às filas, mas direcionados pelo sistema entre as diversas filas com base no seu comportamento   Parâmetros:   número de filas,   algoritmo de escalonamento para cada fila,   método para mudar (promover ou rebaixar) o processo de fila,   método para determinar em que fila um processo entra   Método mais complexo Eduardo Nicola F. Zagari 33 Escalonamento de CPU
    •   Um exemplo (existem outras variações):   Processos novos entram no fim da primeira fila   Nas filas, os processos são escalonados segundo Round Robin   O quantum varia de uma fila para outra (aumenta em direção às últimas, quantum 1 para a primeira, 2 para a segunda, etc)   Os processos das primeiras filas têm maior prioridade (um processo não pode ser escolhido, a menos que, as filas anteriores estejam vazias)   Um processo em execução é interrompido, caso apareça um processo em uma das filas anteriores à sua   Sempre que um processo esgotar seu quantum , ele é suspenso na fila da próxima classe de prioridade   Se o processo liberar a CPU, sem preempção, sai da estrutura de filas   Quando um processo volta à estrutura, é colocado em uma fila de prioridade mais alta do que estava antes de sair Eduardo Nicola F. Zagari 34 Escalonamento de CPU
    • Alta Menor prioridade Fila 1 quantum Fila 2 Fila 3 ... Baixa Fila N Maior prioridade quantum Eduardo Nicola F. Zagari 35 Escalonamento de CPU
    •   Vantagens de uma política como esta:   Processos CPU-bound vão caindo em filas de prioridade mais baixas, sendo escolhidos para rodar com menos freqüência; no entanto, eles recebem quanta maiores, necessitando receber a CPU por um número menor de vezes, o que reduz a quantidade trocas de contexto   Processos interativos (I/O-bound), normalmente pequenos, são favorecidos, reduzindo-se o tempo de resposta médio do sistema   Processos interativos grandes, após interação com usuários, retornam em filas de prioridade mais alta   Problema: pressionar <ENTER> em terminais processando longos jobs não interativos (CPU-bound)   Moral da história: implementar uma boa política na prática é muitíssimo mais difícil do que idealizá-la Eduardo Nicola F. Zagari 36 Escalonamento de CPU
    •   Escalonamento mais complexo   Processadores idênticos (homogêneos)   Compartilhamento de carga (load sharing)   Fila por processador: processador pode ficar ocioso   Fila única: compartilhamento de dados (problemas!)   Abordagens:   Processamento simétrico  Cada processador faz seu próprio escalonamento (exclusão mútua!)   Mestre-Escravo: processamento assimétrico  um algoritmo, executado em um processador reservado para esse fim, é o escalonador dos outros processadores (alivia a necessidade de compartilhamento de dados) Eduardo Nicola F. Zagari 37 Escalonamento de CPU
    •   Sistemas de tempo real: requisitos temporais   Tempo compartilhado puro não funciona   Hard real-time: requisitos temporais rígidos  requer que uma tarefa crítica seja completada dentro de um tempo garantido  Ex.: tráfego aéreo, armas, sistemas médicos, controle industrial, etc   Soft real-time: requisitos temporais flexíveis  requer que um processo crítico receba prioridade sobre outros menos importantes  Ex.: multimídia, realidade virtual, etc   Sistemas de TR rígidos: processadores dedicados   Sistemas de TR flexíveis:   Implementados com outros esquemas   Processos críticos devem ter prioridade sobre outros   Implica na degradação do serviço dos outros usuários Eduardo Nicola F. Zagari 38 Escalonamento de CPU
    •   Escalonamento baseado em prioridades dinâmicas   A idéia básica é atribuir sempre a maior prioridade ao processo que apresentar o prazo mais próximo a expirar (earliest deadline)   Sempre que um novo processo chega na fila de pronto, são calculadas e atribuídas novas prioridades a todos   O Earliest Deadline é um algoritmo ótimo, isto é, o fator de utilização da CPU é 100%   Se os processos não forem independentes:   Problema da Inversão de Prioridades  Solução: Protocolo de Herança de Prioridade –  Conseqüência: queda no fator de utilização da CPU Eduardo Nicola F. Zagari 39 Escalonamento de CPU
    • Eduardo Nicola F. Zagari 40 Escalonamento de CPU
    •   Unix  Sistema de Tempo Compartilhado   Meta: bom tempo de resposta aos processos interativos   Escalonamento de 2 níveis   Escalonador de baixo nível: Filas Múltiplas (prioridade) com realimentação   Processos executando em modo kernel: prioridade negativa (que são as maiores)   Processos executando em modo usuário: prioridade positiva   Roda primeiro processo da fila prioritária não vazia  interrupções de tempo: incremento do contador de utilização da CPU (que aumentará o valor da prioridade do processo)   Round-Robin dentro de cada fila   A cada segundo as prioridades são recalculadas:  Contadores de uso da CPU divididos por 2  Nova prioridade = base + nice + contador de uso da CPU   Processos interativos voltam do bloqueio com prioridade negativa. Eduardo Nicola F. Zagari 41 Escalonamento de CPU
    • Eduardo Nicola F. Zagari 42 Escalonamento de CPU
    •   Dois algoritmos: time-sharing e real-time   Time-sharing   Prioridades baseadas em créditos – processo com mais créditos é o próximo a ser escalonado   Crédito subtraído quando ocorre uma interrupção por tempo   Quando crédito = 0, outro processo é escolhido   Quando todos os processos têm crédito = 0, ocorre “recarregamento” de créditos  Baseado em alguns fatores como prioridade e histórico   Real-time   Soft real-time (TR Flexível)   Aderente ao Posix.1b – duas classes  FIFO e RR  Processos de maior prioridade sempre executam primeiro Eduardo Nicola F. Zagari 43 Escalonamento de CPU
    •   Escalonamento Local – Como a biblioteca de threads decide qual thread do usuário executar quando há um LWP disponível   Escalonamento Global – Como o kernel decide qual kernel thread deve ser a próxima a ser executada Eduardo Nicola F. Zagari 44 Escalonamento de CPU
    • #include <pthread.h> #include <stdio.h> #define NUM THREADS 5 int main(int argc, char *argv[]) { int i; pthread t tid[NUM THREADS]; pthread attr t attr; /* get the default attributes */ pthread attr init(&attr); /* set the scheduling algorithm to PROCESS or SYSTEM */ pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM); /* set the scheduling policy - FIFO, RT, or OTHER */ pthread attr setschedpolicy(&attr, SCHED OTHER); /* create the threads */ for (i = 0; i < NUM THREADS; i++) pthread create(&tid[i],&attr,runner,NULL); Eduardo Nicola F. Zagari 45 Escalonamento de CPU
    • /* now join on each thread */ for (i = 0; i < NUM THREADS; i++) pthread join(tid[i], NULL); } /* Each thread will begin control in this function */ void *runner(void *param) { printf("I am a threadn"); pthread exit(0); } Eduardo Nicola F. Zagari 46 Escalonamento de CPU
    •   JVM usa um algoritmo de escalonamento baseado em prioridades e preemptivo   Uma fila FIFO é usada se houver múltiplas threads com a mesma prioridade   JVM escalona uma thread para executar quando: 1.  A thread “em execução” sai do estado de “executável” 2.  Uma thread de maior prioridade entra no estado “executável” * Nota – a JVM não especifica se threads são “Time-Sliced” ou não Eduardo Nicola F. Zagari 47 Escalonamento de CPU
    • Uma vez que a JVM não assegura Time-Slicing, o método yield() pode ser usado: while (true) { // perform CPU-intensive task . . . Thread.yield(); } Isto passa o controle a uma outra thread de igual prioridade Eduardo Nicola F. Zagari 48 Escalonamento de CPU
    • Prioridade Comentário Thread.MIN_PRIORITY Prioridade Mínima de Thread Thread.MAX_PRIORITY Prioridade Máxima de Thread Thread.NORM_PRIORITY Prioridade Default de Thread As prioridades podem ser ajustadas usando-se o método setPriority(): setPriority(Thread.NORM_PRIORITY + 2); Eduardo Nicola F. Zagari 49 Escalonamento de CPU