Você está na página 1de 7

Escalonamento de Processos

Estratégias de Escalonamento de 
O que é um sistema multiprogramável?
Processos – compartilha a CPU entre diversos processos
– é desejável que os processos obtenham tempos
justos de processamento
Rossano Pablo Pinto, MSc.
– é desejável que os processos obtenham serviço
FATEC - Americana
similar ao de sistemas mono-programáveis
15/02/2008

Prof. Ms. Rossano Pablo Pinto - FATEC Americana 1 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 2

Escalonamento de Processos Escalonamento de Processos



Sistemas multiprogramáveis devem ser 
Procedimento de escolha do próximo processo
eficientes em: – fundamental
– criar processos (ex.: Fork) – tenta escolher o processo mais adequado para ser
– matar (finalizar) processos executado em um dado momento
– bloquear processos (execução -> bloqueado ou – ESCALONADOR (scheduler): parte do código do
pronto) SO que escolhe o próximo processo a ser
executado
– acordar processos
 Eventualmente ESCALONAR o processo

Prof. Ms. Rossano Pablo Pinto - FATEC Americana 3 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 4
Escalonamento de Processos Escalonamento de Processos

Objetivos do ESCALONADOR
Execução
(Processador) – manter CPU perto de 100% de uso
– balanceamento da CPU p/ vários processos
Processo
Escalonador – maximizar vazão (throughput)
Processo – resposta rápida a usuários interativos
Espera Pronto
– evitar “starvation”
Processo

Processo

Processo Processo
Prof. Ms. Rossano Pablo Pinto - FATEC Americana 5 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 6

Escalonamento de Processos Escalonamento de Processos



Objetivos conflitantes - Resolução de conflito 
Critérios de escalonamento
– Determinar o tipo do sistema (tipo da maioria dos – depende do tipo de processamento:
processos) 
Fairness [Sistemas Multiprogramáveis]
 lote (batch) 
UCPU (utilização de CPU perto de 100%)
 interativo Para cada tipo de sistema  Vazão (Throughput)
 CPU-bound deve haver uma  Turnaround [Sistemas Batch]

I/O-bound POLÍTICA adequada 
Tempo de resposta [Sistemas on-line - interativos]
 tempo-real  Meet deadlines [Sistemas de tempo real]
 tempo-compartilhado (vários usuários)

Prof. Ms. Rossano Pablo Pinto - FATEC Americana 7 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 8
Escalonamento de Processos Escalonamento de Processos

Fairness 
Vazão
– Todos os processos devem ter o mesmo tipo de – Representa número de processos finalizados em um
tratamento determinado intervalo
 UCPU – 50 processos por hora é melhor do que 40
– manter CPU perto de 100%  Tempo de turnaround
– Ex.: 30% indica sistema com carga proc. baixa – tempo da admissão ao término de um processo
– Ex.: 90% carga processamento alta – contabiliza todos os tempos administrativos
(alocação de memória, espera em filas, E/S, etc..)

Prof. Ms. Rossano Pablo Pinto - FATEC Americana 9 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 10

Escalonamento de Processos Escalonamento de Processos



Tempo de resposta 
Escalonamento não-preemptivo
– tempo de resposta decorrido do momento da – primeiros sistemas multiprogramáveis
submissão de um pedido até a primeira resposta – quando processo era escolhido, este era executado
– sistemas interativos exigem que seja baixo até que o “próprio” escolhesse abrir mão da CPU
– Exemplos de escalonamentos nestes sistemas:
 FIFO
 Shortest job first
 cooperativo (Ex. win 3.1x, MAC OS 9 e anteriores)

Prof. Ms. Rossano Pablo Pinto - FATEC Americana 11 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 12
Escalonamento de Processos Escalonamento de Processos
FIFO - Não-Preemptivo Shortest Job First - Não-Preemptivo
Processo A
7 8 6 
Associa processo ao tempo de execução
Processo B
4 2

Escolhe os de tempo menor primeiro
0 7 11 19 21 27 Tempo
 Prioriza vazão e turnaround, e reduz tempo
Solicitação de E/S por A

Solicitação de E/S por B

Solicitação de E/S por A

Solicitação de E/S por B


médio de espera. Ex. turnaround (p,t):
Utilizado em sistemas batch

Sistemas Multiprog. utiliza – A8, B3, C5, D2, E1 -> A8, B11, C16, D18, E19
variações deste
– E1, D2, B3, C5, A8 -> E1, D3, B6, C11, A19

Tempo de CPU (u.t.) Característica do processo


 Problema: (pré) determinar os tempos
Processo A 21 CPU-bound
Processo B 6 I/O-bound

Prof. Ms. Rossano Pablo Pinto - FATEC Americana 13 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 14

Escalonamento de Processos Escalonamento de Processos


Cooperativo - Não-Preemptivo

Processo voluntariamente libera CPU (volta p/ 
Escalonamento Preemptivo
fila de pronto) – Sistema interrompe processo (tempo ou prioridade)
 Não existe intervenção do SO – Compartilhamento mais uniforme da CPU
 Win 3.x - multitarefa cooperativa – Troca de um processo pelo outro
Troca de contexto
processo verifica periodicamente fila de interesse

–
– Trocas de contexto não devem ocorrer em excesso
 Problemas óbvios: loops infinitos, erros (carga administrativa do sistema deve ser baixa)
diversos TRAVAM TODO O SISTEMA

Prof. Ms. Rossano Pablo Pinto - FATEC Americana 15 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 16
Escalonamento de Processos Escalonamento de Processos
CIRCULAR (Round Robin) CIRCULAR (Exemplo)
Processo A
5 2 5 3

CPU Livre

CPU Livre
Processo B
4 2 2
Lista dos processos no
Lista dos processos no estado “Pronto” estado “Espera” 0 5 9 11 13 16 21 23 26 27
Tempo
CPU

Fim timeslide de A
Fim timeslide de A

Solicitação de E/S por B

Solicitação de E/S por A

Solicitação de E/S por B

Solicitação de E/S por B

Solicitação de E/S por A


C B A
Término da execução
timeslide = 5 u.t.
Preempção por tempo

Conceito de timeslice (fatia de tempo) / quantum


Tempo de CPU (u.t.) Característica do processo
Entre 5 e 800 ms no LINUX (100ms default) Processo A 15 CPU-bound
Processo B 8 I/O-bound
Prof. Ms. Rossano Pablo Pinto - FATEC Americana 17 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 18

Escalonamento de Processos
PRIORIDADES Escalonamento de Processos
Processo A
4 3 5 1
Prioridade
CPU Livre


Processo B
4 2 2 3
– Estática
0 4 8 10 13 16 18 23 26 27
Tempo – Dinâmica
Solicitação de E/S por B

Preempção por B

Solicitação de E/S por B

Solicitação de E/S por B

Preempção por B

Solicitação de E/S por B


Solicitação de E/S por A

 processos I/O bound recebem + prioridade a cada saída


da fila de processos bloqueados

Tempo de CPU (u.t.) Característica do processo Prioridade


Processo A 13 CPU-bound 4
Processo B 11 I/O-bound 7
Prof. Ms. Rossano Pablo Pinto - FATEC Americana 19 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 20
Escalonamento de Processos Escalonamento de Processos
MÚLTIPLAS FILAS MÚLTIPLAS FILAS COM REALIMENTAÇÃO
Maior prioridade quantum <
Maior prioridade Prioridades
Fila 1 (escalonamento FIFO)
Fila de processos do sistema Preempção por tempo

Circular Fila 2 (escalonamento FIFO)


Preempção por tempo
Fila de processos interativos CPU
STF Fila 3 (escalonamento FIFO)

Fila de processos batch ...


Preempção por tempo

Menor prioridade
Fila n (escalonamento CIRCULAR)
 Ex.: 3 filas (níveis) com prioridades diferentes
 Cada file adota uma política de escalonamento diferente.
Menor prioridade quantum >
 Necessidade de pré-classificação dos processos

 Não prevê mudança de comportamento ao longo da execução Detecção de mudança de comportamento em tempo de execução
Prof. Ms. Rossano Pablo Pinto - FATEC Americana 21 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 22

Escalonamento de Processos Escalonamento de Processos



Escalonamento de tempo-real 
Escalonamento com múltiplos processadores
– Prioridades estáticas (IMPORTANTE) – Sistemas Fracamente Acoplados
– NÃO existe timeslice!!!  cada processador faz seu escalonamento local
– Processo executa até o final (RUN-TO- – Sistemas Fortemente Acoplados
COMPLETITION)  Exclusão mútua no código do escalonador
– 2+ processos não podem ser escalonados p/ um mesmo
processador ao mesmo tempo
– 1 processo não pode ser escalonado p/ execução em 2+
processadores (salvo threads!)

Prof. Ms. Rossano Pablo Pinto - FATEC Americana 23 Prof. Ms. Rossano Pablo Pinto - FATEC Americana 24
Escalonamento de Processos Escalonamento de Processos

Estratégias adotados no Linux 
Estratégias adotados no Linux (man
– O(1) scheduler (big o scheduler) sched_setscheduler)
 O tempo de escolha do próximo processo independe do – #include <sched.h>
número de processos existentes no sistema – int sched_setscheduler(pid_t pid, int policy,
– implementa 2 faixas separadas de prioridade – const struct sched_param *param);
 valores NICE (-20 0 +19): maior núm, menor prioridade – int sched_getscheduler(pid_t pid);
– determina o tempo do timeslice (-19 recebe o valor máximo de – struct sched_param {
timeslice) – ...
 prioridades de tempo-real (0 à 99)
– int sched_priority;
– ...
Prof. Ms. Rossano Pablo Pinto - FATEC Americana 25 – }; Prof. Ms. Rossano Pablo Pinto - FATEC Americana 26