Escalonamento de processos Adriano J. Holanda http://holanda.xyz 24/8/2015
Conceitos básicos
Políticas Processos limitados por E/S x processador E/S processos limitados por E/S gastam a maior parte do tempo submetendo ou esperando requisições de E/S. Exemplo: Interface Gráfica (interação com mouse, teclado, disco). Processador processos limitados por processador gastam a maior parte do seu tempo executando código. Exemplo: geradores de chave para criptografia, Matlab. Esta classificação não é mutuamente exclusiva, pois um processo pode exibir ambos comportamentos, como o servidor X Window por exemplo. A política de escalonamento em um SO deve satisfazer dois objetivos conflitantes: tempo de resposta rápido ao processo (baixa latência) e máxima utilização do SO (alta vazão).
Sequência de atividade processador x E/S
Escalonamento preemptivo Condições para a tomada de decisão de escalonamento de um processo: 1. Processo passa do estado executando para o estado esperando. Por exemplo, como resultado de uma requisição de E/S, ou uma chamada de espera pelo término de um dos processos filho. 2. Quando um processo passa do estado executando para o estado pronto. Por exemplo, quando ocorre uma interrupção. 3. Quando um processo passa do estado esperando para o estado pronto. Por exemplo, no término da E/S. 4. Quando o processo termina. Para as situações 1 e 4 não há escolha em termos de escalonamento. Este esquema de escalonamento é chamada de não-preemptivo ou cooperativo, foi usado no Windows 3.x e Mac OS anterior ao X.
Escalonamento preemptivo Condições para a tomada de decisão de escalonamento de um processo: 1. Processo passa do estado executando para o estado esperando. Por exemplo, como resultado de uma requisição de E/S, ou uma chamada de espera pelo término de um dos processos filho. 2. Quando um processo passa do estado executando para o estado pronto. Por exemplo, quando ocorre uma interrupção. 3. Quando um processo passa do estado esperando para o estado pronto. Por exemplo, no término da E/S. 4. Quando o processo termina. Para as situações 1 e 4 não há escolha em termos de escalonamento. Este esquema de escalonamento é chamada de não-preemptivo ou cooperativo, foi usado no Windows 3.x e Mac OS anterior ao X.
Despachante Dispatcher Despachante componente envolvido no escalonamento do processador realizando as seguintes funções: 1. Troca de contexto; 2. Troca para o modo usuário; 3. Desvio para o local apropriado no programa do usuário para reiniciar o processo. O despachante utiliza um ou vários algoritmos de escalonamento que normalmente buscam: 1. Otimizar a utilização do processador; 2. Aumentar a vazão (throughput); 3. Reduzir o tempo de espera (não leva em conta tempo de espera devido a requisição de E/S).
Despachante Dispatcher Despachante componente envolvido no escalonamento do processador realizando as seguintes funções: 1. Troca de contexto; 2. Troca para o modo usuário; 3. Desvio para o local apropriado no programa do usuário para reiniciar o processo. O despachante utiliza um ou vários algoritmos de escalonamento que normalmente buscam: 1. Otimizar a utilização do processador; 2. Aumentar a vazão (throughput); 3. Reduzir o tempo de espera (não leva em conta tempo de espera devido a requisição de E/S).
Algoritmos de escalonamento
Primeiro a chegar, primeiro a ser servido (FIFO) FIFO first in first out Pior caso processo tempo de surto (ms) p 1 24 p 2 3 p 3 3 p 1 24 p 2 27 p 3 30 t e = (0 + 24 + 27)/3 = 17ms
Primeiro a chegar, primeiro a ser servido (FIFO) FIFO first in first out Melhor caso processo tempo de surto (ms) p 1 3 p 2 3 p 3 24 p 1 3 p 2 6 p 3 30 t e = (0 + 3 + 6)/3 = 3ms
Tarefa mais curta primeiro SJF shortest job first processo tempo de surto (ms) p 1 6 p 2 8 p 3 7 p 4 3 p 4 3 p 1 9 p 3 16 p 2 24 t e = (0 + 3 + 9 + 16)/4 = 7ms
Escalonamento por prioridade processo tempo de surto(ms) prioridade p 1 10 3 p 2 1 1 p 3 2 4 p 4 1 5 p 5 5 2 p 2 1 p 5 6 p 1 16 p 3 18 p 4 19 t e = (1 + 6 + 16 + 18 + 19 + 0)/5 = 8, 2ms
Escalonamento por Round-Robin (revezamento) quantum = 4 ms processo tempo de surto (ms) p 1 24 p 2 3 p 3 3 p 1 4 p 2 7 p 3 10 p 1 14 p 1 18 p 1 22 p 1 26 p 1 30 t e = ((10 4) + 4 + 7)/3 = 17/3 = 5, 66ms
Quantum x troca de contexto tempo do processo = 10 ms 10 quantum trocas de contexto 12 0 6 10 6 1 1 2 3 4 5 6 7 8 9 10 1 9
Exercício 1 Fonte: Sistemas Operacionais com Java, Silberschatz, Galvin, Gagne. Ed. Campus, 2008. Considere os seguintes processos com o tempo de execução (burst) no processador data em milisegundos: Processo tempo de execução prioridade p 1 10 3 p 2 1 1 p 3 2 3 p 4 1 4 p 5 5 2 Considere que os processos chegaram na ordem p 1, p 2, p 3, p 4, p 5, todos no momento 0. Desenhe quatro gráficos de Gantt para a utilização dos seguintes algoritmos de escalonamento: FIFO, SJF, prioridade preemptivo e revezamento (Round-Robin) com quantum igual a 1 ms. Qual o tempo de espera para cada processo para cada um dos algoritmos? Qual o tempo de espera médio?
Escalonamento com fila de multinível Escalonamento multilevel queue Nível mais alto sistema interativo edição interativa lote (batch) Nível mais baixo
Escalonamento multilevel feedback-queue entrada fila 0 quantum=8 fila 1 quantum=16 fila 2 FCFS 1. Fila 0 quantum processo 8; 2. Fila 1 quantum processo 24; 3. Fila 2 quantum processo > 24.
Escalonamento em múltiplos processadores
Técnicas de escalonamento com multiprocessadores Multiprocessamento assimétrico todas as atividades de escalonamento, processamento de E/S são tratadas por um processador único, o servidor mestre. Simples pelo fato de possibilitar acesso único aos dados compartilhados. Multiprocessamento simétrico (SMP 1 ) cada processador é auto-escalonado, podendo ter sua própria fila de processos prontos ou compartilhar uma fila comum. O escalonador, porém, é específico para cada processador devendo examinar as filas de pronto e tomar cuidado com as estruturas de dados compartilhadas com outros processadores. Ex: Windows XP, Linux, Solaris, Mac OS X. 1 Symmetric Multiprocessing
Técnicas de escalonamento com multiprocessadores Multiprocessamento assimétrico todas as atividades de escalonamento, processamento de E/S são tratadas por um processador único, o servidor mestre. Simples pelo fato de possibilitar acesso único aos dados compartilhados. Multiprocessamento simétrico (SMP 1 ) cada processador é auto-escalonado, podendo ter sua própria fila de processos prontos ou compartilhar uma fila comum. O escalonador, porém, é específico para cada processador devendo examinar as filas de pronto e tomar cuidado com as estruturas de dados compartilhadas com outros processadores. Ex: Windows XP, Linux, Solaris, Mac OS X. 1 Symmetric Multiprocessing
Afinidade do processador SMP Atribui um processo específico a um processador reduzindo o custo de transferência dos dados da memória cache de um processador para outro, além da invalidação dos dados na memória cache do primeiro processador. Afinidade flexível processo pode migrar; Afinidade rígida processo não pode migrar (Ex: Linux).
Multithreading simétrico SMT A tecnologia de Multithreading simétrico(smt 2 ) fornece vários processadores lógicos em um único processador físico. Cada processador possui seu próprio estado arquitetônico que inclui registradores de uso geral e de estado de máquina. Como SMT é um recurso implementado em hardware, o sistema operacional não precisa necessariamente gerenciar o escalonamento dos processos. 2 Symmetric Multithreading
Exemplos
Escalonamento no Windows XP Escalonamento com base em prioridade e preemptivo; Thread de maior prioridade sempre será executada. O despachante pode interromper a thread em execução de acordo com as seguintes condições: Término de execução da thread; Término de quantum de tempo da thread; Requisição de execução de uma thread de maior prioridade; Invocação de uma chamada de sistema bloqueante (E/S, por exemplo). Esquema de prioridade: 0 31. 1. Classe variável: 1 15. 2. Classe de tempo real: 16 31. 3. Prioridade 0: usada pelo sistema para gerenciamento de memória.
Escalonamento no Windows XP Escalonamento com base em prioridade e preemptivo; Thread de maior prioridade sempre será executada. O despachante pode interromper a thread em execução de acordo com as seguintes condições: Término de execução da thread; Término de quantum de tempo da thread; Requisição de execução de uma thread de maior prioridade; Invocação de uma chamada de sistema bloqueante (E/S, por exemplo). Esquema de prioridade: 0 31. 1. Classe variável: 1 15. 2. Classe de tempo real: 16 31. 3. Prioridade 0: usada pelo sistema para gerenciamento de memória.
Escalonamento no Windows XP Escalonamento com base em prioridade e preemptivo; Thread de maior prioridade sempre será executada. O despachante pode interromper a thread em execução de acordo com as seguintes condições: Término de execução da thread; Término de quantum de tempo da thread; Requisição de execução de uma thread de maior prioridade; Invocação de uma chamada de sistema bloqueante (E/S, por exemplo). Esquema de prioridade: 0 31. 1. Classe variável: 1 15. 2. Classe de tempo real: 16 31. 3. Prioridade 0: usada pelo sistema para gerenciamento de memória.
Escalonamento no Windows XP Classes de prioridades despachante Classes de proridade TIME_CRITICAL Valores relativos HIGHEST ABOVE_NORMAL REALTIME_PRIORITY_CLASS 31 26 25 HIGH_PRIORITY_CLASS 15 15 14 ABOVE_NORMAL_PRIORITY 15 12 11 NORMAL_PRIORITY_CLASS 15 10 9 BELOW_NORMAL_PRIORITY_CLASS 15 8 7 IDLE_PRIORITY_CLASS 15 6 5
Escalonamento no Windows XP Classes de prioridades despachante Classes de proridade Valores relativos NORMAL BELOW_NORMAL LOWEST IDLE REALTIME_PRIORITY_CLASS 24 23 22 16 HIGH_PRIORITY_CLASS 13 12 11 1 ABOVE_NORMAL_PRIORITY 10 9 8 1 NORMAL_PRIORITY_CLASS 8 7 6 1 BELOW_NORMAL_PRIORITY_CLASS 6 5 4 1 IDLE_PRIORITY_CLASS 4 3 2 1 prioridade básica
Regras de escalonamento Windows XP Processos são membros de NORMAL_PRIORITY_CLASS, exceto: Quando o processo pai pertence a IDLE_PRIORITY_CLASS ou; Quando foi especificada outra classe na criação do processo. Quando o quantum de tempo de uma thread se esgota, esta é interrompida e se a classe de prioridade for variável, sua prioridade é reduzida, porém, nunca menos do que a prioridade básica. Quando um processo pertence à classe NORMAL_PRIORITY_CLASS, e está atualmente selecionado na tela (primeiro plano), seu quantum é aumentado, obtendo mais tempo de execução antes de ser preemptado. A classe REALTIME_PRIORITY_CLASS é invariante e provoca preempção de outros processos quando volta para a fila pronto.
Regras de escalonamento Windows XP Processos são membros de NORMAL_PRIORITY_CLASS, exceto: Quando o processo pai pertence a IDLE_PRIORITY_CLASS ou; Quando foi especificada outra classe na criação do processo. Quando o quantum de tempo de uma thread se esgota, esta é interrompida e se a classe de prioridade for variável, sua prioridade é reduzida, porém, nunca menos do que a prioridade básica. Quando um processo pertence à classe NORMAL_PRIORITY_CLASS, e está atualmente selecionado na tela (primeiro plano), seu quantum é aumentado, obtendo mais tempo de execução antes de ser preemptado. A classe REALTIME_PRIORITY_CLASS é invariante e provoca preempção de outros processos quando volta para a fila pronto.
Regras de escalonamento Windows XP Processos são membros de NORMAL_PRIORITY_CLASS, exceto: Quando o processo pai pertence a IDLE_PRIORITY_CLASS ou; Quando foi especificada outra classe na criação do processo. Quando o quantum de tempo de uma thread se esgota, esta é interrompida e se a classe de prioridade for variável, sua prioridade é reduzida, porém, nunca menos do que a prioridade básica. Quando um processo pertence à classe NORMAL_PRIORITY_CLASS, e está atualmente selecionado na tela (primeiro plano), seu quantum é aumentado, obtendo mais tempo de execução antes de ser preemptado. A classe REALTIME_PRIORITY_CLASS é invariante e provoca preempção de outros processos quando volta para a fila pronto.
Regras de escalonamento Windows XP Processos são membros de NORMAL_PRIORITY_CLASS, exceto: Quando o processo pai pertence a IDLE_PRIORITY_CLASS ou; Quando foi especificada outra classe na criação do processo. Quando o quantum de tempo de uma thread se esgota, esta é interrompida e se a classe de prioridade for variável, sua prioridade é reduzida, porém, nunca menos do que a prioridade básica. Quando um processo pertence à classe NORMAL_PRIORITY_CLASS, e está atualmente selecionado na tela (primeiro plano), seu quantum é aumentado, obtendo mais tempo de execução antes de ser preemptado. A classe REALTIME_PRIORITY_CLASS é invariante e provoca preempção de outros processos quando volta para a fila pronto.
Exercício 2 Fonte: Sistemas Operacionais. Oliveira, Carissimi, Toscani. Ed. Bookman, 2008. Quatro programas devem ser executados em um computador. Todos os programas são compostos por 2 ciclos de processador e 2 ciclos de E/S. A entrada e saída de todos os programas é feita sobre a mesma unidade de disco. Os tempos para cada ciclo de cada programa são mostrados abaixo: programa processador disco processador disco p 1 3 10 3 12 p 2 4 12 6 8 p 3 7 8 8 10 p 4 6 14 2 10 Construa um diagrama de tempo mostrando qual programa está ocupando o processador e o disco a cada momento, até que os 4 programas terminem. Suponha que o algoritmo utilizado seja o de revezamento (Round-Robin), com quantum de 4 unidades. Qual a taxa de ocupação do processador e do disco?