holandaholanda.xyz/files/2015-08-24-sched-so1.pdf · Regrasdeescalonamento WindowsXP I...

34
Escalonamento de processos Adriano J. Holanda http://holanda.xyz 24/8/2015

Transcript of holandaholanda.xyz/files/2015-08-24-sched-so1.pdf · Regrasdeescalonamento WindowsXP I...

Escalonamento de processos

Adriano J. Holandahttp://holanda.xyz

24/8/2015

Conceitos básicos

PolíticasProcessos limitados por E/S x processador

I E/S – processos limitados por E/S gastam a maior parte do temposubmetendo ou esperando requisições de E/S. Exemplo: InterfaceGráfica (interação com mouse, teclado, disco).

I Processador – processos limitados por processador gastam a maiorparte do seu tempo executando código. Exemplo: geradores dechave para criptografia, Matlab.

Esta classificação não é mutuamente exclusiva, pois um processo podeexibir ambos comportamentos, como o servidor X Window porexemplo.

A política de escalonamento em um SO deve satisfazer dois objetivosconflitantes: tempo de resposta rápido ao processo (baixa latência) emá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 umprocesso:

1. Processo passa do estado executando para o estadoesperando. Por exemplo, como resultado de uma requisição deE/S, ou uma chamada de espera pelo término de um dosprocessos filho.

2. Quando um processo passa do estado executando para oestado pronto. Por exemplo, quando ocorre uma interrupção.

3. Quando um processo passa do estado esperando para o estadopronto. 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 oucooperativo, 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 umprocesso:

1. Processo passa do estado executando para o estadoesperando. Por exemplo, como resultado de uma requisição deE/S, ou uma chamada de espera pelo término de um dosprocessos filho.

2. Quando um processo passa do estado executando para oestado pronto. Por exemplo, quando ocorre uma interrupção.

3. Quando um processo passa do estado esperando para o estadopronto. 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 oucooperativo, foi usado no Windows 3.x e Mac OS anterior ao X.

DespachanteDispatcher

Despachante – componente envolvido no escalonamento doprocessador 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 escalonamentoque 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).

DespachanteDispatcher

Despachante – componente envolvido no escalonamento doprocessador 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 escalonamentoque 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

processo tempo de surto (ms)p1 24p2 3p3 3

Pior caso

p1

24

p2

27

p3

30

te = (0 + 24 + 27)/3 = 17ms

Primeiro a chegar, primeiro a ser servido (FIFO)FIFO – first in first out

processo tempo de surto (ms)p1 3p2 3p3 24

Melhor caso

p1

3

p2

6

p3

30

te = (0 + 3 + 6)/3 = 3ms

Tarefa mais curta primeiroSJF – shortest job first

processo tempo de surto (ms)p1 6p2 8p3 7p4 3

p4

3

p1

9

p3

16

p2

24

te = (0 + 3 + 9 + 16)/4 = 7ms

Escalonamento por prioridade

processo tempo de surto(ms) prioridadep1 10 3p2 1 1p3 2 4p4 1 5p5 5 2

p2

1

p5

6

p1

16

p3

18

p4

19

te = (1 + 6 + 16 + 18 + 19 + 0)/5 = 8, 2ms

Escalonamento por Round-Robin (revezamento)

processo tempo de surto (ms)p1 24p2 3p3 3

quantum = 4 ms

p1

4

p2

7

p3

10

p1

14

p1

18

p1

22

p1

26

p1

30

te = ((10− 4) + 4 + 7)/3 = 17/3 = 5, 66ms

Quantum x troca de contexto

tempo do processo = 10 ms quantum trocas decontexto

1012 0

6 106 1

1 2 3 4 5 6 7 8 9 101 9

Exercício 1Fonte: “Sistemas Operacionais com Java”, Silberschatz, Galvin, Gagne. Ed. Campus,2008.

Considere os seguintes processos com o tempo de execução (burst) noprocessador data em milisegundos:

Processo tempo de execução prioridadep1 10 3p2 1 1p3 2 3p4 1 4p5 5 2

Considere que os processos chegaram na ordem p1, p2, p3, p4, p5, todos nomomento 0.

I Desenhe quatro gráficos de Gantt para a utilização dos seguintesalgoritmos de escalonamento: FIFO, SJF, prioridade preemptivo erevezamento (Round-Robin) com quantum igual a 1 ms.

I Qual o tempo de espera para cada processo para cada um dos algoritmos?I Qual o tempo de espera médio?

Escalonamento com fila de multinívelEscalonamento multilevel queue

Nível mais alto

Nível mais baixo

sistema

interativo

edição interativa

lote (batch)

Escalonamento multilevel feedback-queue

quantum=8

quantum=16

FCFS

entrada fila 0

fila 1

fila 2

1. Fila 0 → quantumprocesso ≤ 8;

2. Fila 1 → quantumprocesso ≤ 24;

3. Fila 2 → quantumprocesso > 24.

Escalonamento em múltiplos processadores

Técnicas de escalonamento com multiprocessadores

I Multiprocessamento assimétrico – todas as atividades deescalonamento, processamento de E/S são tratadas por umprocessador único, o servidor mestre. Simples pelo fato depossibilitar acesso único aos dados compartilhados.

I Multiprocessamento simétrico (SMP1) – cada processador éauto-escalonado, podendo ter sua própria fila de processosprontos ou compartilhar uma fila comum. O escalonador,porém, é específico para cada processador devendo examinaras filas de pronto e tomar cuidado com as estruturas de dadoscompartilhadas com outros processadores. Ex: Windows XP,Linux, Solaris, Mac OS X.

1Symmetric Multiprocessing

Técnicas de escalonamento com multiprocessadores

I Multiprocessamento assimétrico – todas as atividades deescalonamento, processamento de E/S são tratadas por umprocessador único, o servidor mestre. Simples pelo fato depossibilitar acesso único aos dados compartilhados.

I Multiprocessamento simétrico (SMP1) – cada processador éauto-escalonado, podendo ter sua própria fila de processosprontos ou compartilhar uma fila comum. O escalonador,porém, é específico para cada processador devendo examinaras filas de pronto e tomar cuidado com as estruturas de dadoscompartilhadas com outros processadores. Ex: Windows XP,Linux, Solaris, Mac OS X.

1Symmetric Multiprocessing

Afinidade do processadorSMP

Atribui um processo específico a um processador reduzindo o custode transferência dos dados da memória cache de um processadorpara outro, além da invalidação dos dados na memória cache doprimeiro processador.

I Afinidade flexível – processo pode migrar;I Afinidade rígida – processo não pode migrar (Ex: Linux).

Multithreading simétricoSMT

A tecnologia de Multithreading simétrico(SMT2) fornece váriosprocessadores lógicos em um único processador físico.Cada processador possui seu próprio estado arquitetônico que incluiregistradores de uso geral e de estado de máquina.Como SMT é um recurso implementado em hardware, o sistemaoperacional não precisa necessariamente gerenciar o escalonamentodos processos.

2Symmetric Multithreading

Exemplos

Escalonamento no Windows XP

I Escalonamento com base em prioridade e preemptivo;I Thread de maior prioridade sempre será executada.

I O despachante pode interromper a thread em execução deacordo com as seguintes condições:

I Término de execução da thread;I Término de quantum de tempo da thread;I Requisição de execução de uma thread de maior prioridade;I Invocação de uma chamada de sistema bloqueante (E/S, por

exemplo).I 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

I Escalonamento com base em prioridade e preemptivo;I Thread de maior prioridade sempre será executada.

I O despachante pode interromper a thread em execução deacordo com as seguintes condições:

I Término de execução da thread;I Término de quantum de tempo da thread;I Requisição de execução de uma thread de maior prioridade;I Invocação de uma chamada de sistema bloqueante (E/S, por

exemplo).I 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

I Escalonamento com base em prioridade e preemptivo;I Thread de maior prioridade sempre será executada.

I O despachante pode interromper a thread em execução deacordo com as seguintes condições:

I Término de execução da thread;I Término de quantum de tempo da thread;I Requisição de execução de uma thread de maior prioridade;I Invocação de uma chamada de sistema bloqueante (E/S, por

exemplo).I 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 XPClasses de prioridades

Classes de proridade

REALTIME_PRIORITY_CLASS

HIGH_PRIORITY_CLASS

ABOVE_NORMAL_PRIORITY

NORMAL_PRIORITY_CLASS

BELOW_NORMAL_PRIORITY_CLASS

IDLE_PRIORITY_CLASS

despachanteValores relativos

TIME_CRITICAL HIGHEST ABOVE_NORMAL

31 26 25

15 15 14

15 12 11

15 10 9

15 8 7

15 6 5

Escalonamento no Windows XPClasses de prioridades

Classes de proridade

REALTIME_PRIORITY_CLASS

HIGH_PRIORITY_CLASS

ABOVE_NORMAL_PRIORITY

NORMAL_PRIORITY_CLASS

BELOW_NORMAL_PRIORITY_CLASS

IDLE_PRIORITY_CLASS

despachanteValores relativos

NORMAL BELOW_NORMAL LOWEST IDLE

24 23 22 16

13 12 11 1

10 9 8 1

8 7 6 1

6 5 4 1

4 3 2 1

prioridade básica

Regras de escalonamentoWindows XP

I Processos são membros de NORMAL_PRIORITY_CLASS, exceto:

I Quando o processo pai pertence a IDLE_PRIORITY_CLASS ou;I Quando foi especificada outra classe na criação do processo.

I Quando o quantum de tempo de uma thread se esgota, esta éinterrompida e se a classe de prioridade for variável, suaprioridade é reduzida, porém, nunca menos do que aprioridade básica.

I Quando um processo pertence à classeNORMAL_PRIORITY_CLASS, e está atualmente selecionado natela (primeiro plano), seu quantum é aumentado, obtendomais tempo de execução antes de ser preemptado.

I A classe REALTIME_PRIORITY_CLASS é invariante e provocapreempção de outros processos quando volta para a filapronto.

Regras de escalonamentoWindows XP

I Processos são membros de NORMAL_PRIORITY_CLASS, exceto:

I Quando o processo pai pertence a IDLE_PRIORITY_CLASS ou;I Quando foi especificada outra classe na criação do processo.

I Quando o quantum de tempo de uma thread se esgota, esta éinterrompida e se a classe de prioridade for variável, suaprioridade é reduzida, porém, nunca menos do que aprioridade básica.

I Quando um processo pertence à classeNORMAL_PRIORITY_CLASS, e está atualmente selecionado natela (primeiro plano), seu quantum é aumentado, obtendomais tempo de execução antes de ser preemptado.

I A classe REALTIME_PRIORITY_CLASS é invariante e provocapreempção de outros processos quando volta para a filapronto.

Regras de escalonamentoWindows XP

I Processos são membros de NORMAL_PRIORITY_CLASS, exceto:

I Quando o processo pai pertence a IDLE_PRIORITY_CLASS ou;I Quando foi especificada outra classe na criação do processo.

I Quando o quantum de tempo de uma thread se esgota, esta éinterrompida e se a classe de prioridade for variável, suaprioridade é reduzida, porém, nunca menos do que aprioridade básica.

I Quando um processo pertence à classeNORMAL_PRIORITY_CLASS, e está atualmente selecionado natela (primeiro plano), seu quantum é aumentado, obtendomais tempo de execução antes de ser preemptado.

I A classe REALTIME_PRIORITY_CLASS é invariante e provocapreempção de outros processos quando volta para a filapronto.

Regras de escalonamentoWindows XP

I Processos são membros de NORMAL_PRIORITY_CLASS, exceto:

I Quando o processo pai pertence a IDLE_PRIORITY_CLASS ou;I Quando foi especificada outra classe na criação do processo.

I Quando o quantum de tempo de uma thread se esgota, esta éinterrompida e se a classe de prioridade for variável, suaprioridade é reduzida, porém, nunca menos do que aprioridade básica.

I Quando um processo pertence à classeNORMAL_PRIORITY_CLASS, e está atualmente selecionado natela (primeiro plano), seu quantum é aumentado, obtendomais tempo de execução antes de ser preemptado.

I A classe REALTIME_PRIORITY_CLASS é invariante e provocapreempção de outros processos quando volta para a filapronto.

Exercício 2Fonte: “Sistemas Operacionais”. Oliveira, Carissimi, Toscani. Ed. Bookman, 2008.

Quatro programas devem ser executados em um computador. Todos osprogramas 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 unidadede disco. Os tempos para cada ciclo de cada programa são mostradosabaixo:

programa processador disco processador discop1 3 10 3 12p2 4 12 6 8p3 7 8 8 10p4 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 4programas terminem. Suponha que o algoritmo utilizado seja o derevezamento (Round-Robin), com quantum de 4 unidades. Qual a taxade ocupação do processador e do disco?