Académique Documents
Professionnel Documents
Culture Documents
Sistemas Operacionais
Sistemas Operacionais 2
Introdução
Sistemas Operacionais 3
Representação de processo
Sistemas Operacionais 4
Bloco descritor de processo
Sistemas Operacionais 5
Os processos e as filas
Sistemas Operacionais 6
Exemplo de bloco descritor de processos (1)
struct desc_proc{
char estado_atual;
int prioridade;
unsigned inicio_memoria;
unsigned tamanho_mem;
struct arquivos arquivos_abertos[20];
unsigned tempo_cpu;
unsigned proc_pc;
unsigned proc_sp;
unsigned proc_acc;
unsigned proc_rx;
struct desc_proc *proximo;
}
Sistemas Operacionais 7
Exemplo de bloco descritor de processos (2)
tab_desc[i].prox = NULL;
desc_livre = &tab_desc[0];
espera_cpu= NULL;
usando_cpu= NULL;
bloqueado = NULL;
Sistemas Operacionais 8
Tarefas típicas no PCB durante o ciclo de vida
• Criação
• Alocação de áreas de memória para código, dados e pilha e de
estruturas de dados do sistema operacional
• Inicialização do descritor de processo e inserção em filas do sistema
• Execução
• Realizam as instruções da área de código
• Interação com sistema operacional via chamadas de sistema
• Atualização do bloco descritor de processo
• Retratar estados e recursos que evoluem dinamicamente com a
execução
• Suscetível ao acionamento do escalonador/dispatcher em resposta a
eventos
• Término
• Liberação de recursos e estruturas de dados utilizadas
Sistemas Operacionais 9
O modelo de processo
• Processo é representado por:
• Espaço de endereçamento: área p/ armazenamento da imagem do
processo
• Estruturas internas do sistema (tabelas internas, áreas de memória, etc.)
• Mantidos no descritor de processos
• Contexto de execução (pilha, programa, dados, etc...)
Processo
Sistemas Operacionais 10
Exemplo: modelo de processo Unix (linux)
4 Gbytes Heap
0x0000000
Sistemas Operacionais 11
Vários processos
Processo 1 Processo n
Espaço de
usuário SP
Pilha PC Código Dados
... SP Pilha
PC
Código Dados
Sistemas Operacionais 12
Vários fluxos em um único processo
• Um fluxo de instrução é
implementado através do contador Processo 1
de programa (PC) e de uma pilha SP1
(SP) Pilha PC2 Código Dados
SP2
• Estruturas comuns compartilhadas PC1
Espaço de SP3
• Código usuário PC3
• Dados
• Descritor de processo Espaço de Dados Pilha
Sistemas Operacionais 13
Multiprogramação pesada
Sistemas Operacionais 14
Multiprogramação leve
Sistemas Operacionais 15
Implementação de threads
Sistemas Operacionais 16
Modelos de processos single threaded e
multithreaded
Single-Threaded Multithreaded
Thread Thread Thread
User Process
Kernel User User User
Address Control
Stack Stack Stack Stack
Space Block
Sistemas Operacionais 17
Modelo N:1
Sistemas Operacionais 18
Implementação modelo N:1
Processo
PC1 SP1
SP Escalonador
PC2 SP2 Pilha PC Código Dados biblioteca
PCn SPn
Espaço de CPU virtual
Biblioteca
usuário
Espaço de Dados Pilha Escalonador
sistema sistema operacional
CPU
Sistemas Operacionais 19
Vantagens e desvantagens
• Vantagens:
• Sistema operacional divide o tempo do processador entre os
processos «pesados» e, a biblioteca de threads divide o tempo do
processo entre as threads
• Leve: sem interação/intervenção do sistema operacional
• Desvantagens:
• Uma thread que realiza uma chamada de sistema bloqueante leve ao
bloqueio de todo o processo
• e.g.: operaçoes de entrada/saída
• Não explora paralelismo em máquinas multiprocessadoras
Sistemas Operacionais 20
Modelo 1:1
Sistemas Operacionais 21
Implementação modelo 1:1
Processo
PC1 SP1
SP
PC2 SP2 Pilha PC Código Dados
CPU CPU CPU
PCn SPn virtual virtual virtual
Espaço de
usuário
Espaço de Dados Pilha
sistema Escalonador
sistema operacional
CPU
Sistemas Operacionais 22
Vantagens e desvantagens
• Vantagens:
• Explora o paralelismo de máquinas multiprocessadoras (SMP)
• Facilita o recobrimento de operações de entrada/saída por cálculos
• Desvantagens:
• Implementação “mais pesada” que o modelo N:1
Sistemas Operacionais 23
Modelo M:N
Sistemas Operacionais 24
Implementação modelo M:N
Processo
PC1 SP1
SP Escalonador
PC2 SP2 Pilha PC Código Dados biblioteca
PCn SPn
Espaço de CPU CPU
usuário biblioteca virtual virtual
Espaço de Dados Pilha
sistema
Escalonador
sistema operacional
CPU
Sistemas Operacionais 25
Porque utilizar threads ?
Sistemas Operacionais 26
Vantagens de multithreading
Sistemas Operacionais 27
Leituras complementares
Sistemas Operacionais 28
Sumário
Sistemas Operacionais 29
Escalonamento
Sistemas Operacionais 30
Objetivos do escalonamento
Sistemas Operacionais 31
Situações típicas para execução do escalonador
Sistemas Operacionais 32
Eventos de transição de estados
Apto Executando
Seleção
Ocorrência de evento Sincronização ou
(interrupção) requisição de E/S
Bloqueado
Sistemas Operacionais 33
Chaveamento de contexto (dispatcher)
Processo 0 Processo 1
Apto
Apto
Restaura estado PCB0
Sistemas Operacionais 34
Níveis de escalonamento
• Longo prazo
• Médio prazo
• Curto prazo
Sistemas Operacionais 35
Escalonador longo prazo
Sistemas Operacionais 36
Escalonador médio prazo
Sistemas Operacionais 37
Escalonador de curto prazo
• Mais importante
• Determina qual processo apto deverá utilizar o processador
• Executado sempre que ocorre eventos importantes:
• Interrupção de relógio
• Interrupção de entrada/saída
• Chamadas de sistemas
• Sinais (interrupção software)
Sistemas Operacionais 38
Diagrama de escalonamento
Fila de bloqueados
Evento Espera por evento
Sistemas Operacionais 39
Tipos de escalonador
Sistemas Operacionais 40
Algoritmos de escalonamento (1)
Sistemas Operacionais 41
Algoritmos de escalonamento (2)
Sistemas Operacionais 42
FIFO - First In First Out (1)
Sistemas Operacionais 43
FIFO - First In First Out (2)
• Desvantagem:
• Prejudica processos I/O bound
• Tempo médio de espera na fila de execução:
• Ordem A-B-C-D = (0 + 12 + 20 + 35 ) / 4 = 16.75 u.t.
• Ordem D-A-B-C = (0 + 5 + 17 + 25 ) / 4 = 11.7 u.t.
Processo Tempo A
A 12 B
B 8 C
C 15 D
D 5
0 12 20 35 40
Sistemas Operacionais 44
SJF - Shortest Job First (1)
A
Processo Tempo B
A 12
C
B 8
D
C 15
D 5
0 5 13 25 40
Sistemas Operacionais 45
SJF - Shortest Job First (2)
Sistemas Operacionais 46
Prevendo o futuro... (1)
Sistemas Operacionais 47
Prevendo o futuro... (2)
Sistemas Operacionais 48
Exemplo de “previsão do futuro”
Ciclo de cpu:
Real: 6 4 6 4 13 13 13 Parâmetros: =0.5 0=10
Previsto: 10 8 6 6 5 9 11 12
14
12
10
8 Real
6 Previsto
4
2
0
0 1 2 3 4 5 6 7
Sistemas Operacionais 49
Leituras complementares
Sistemas Operacionais 50
Sumário
Sistemas Operacionais 51
Tipos de escalonador (lembrando...)
Sistemas Operacionais 52
Eventos de transição de estados
Apto Executando
Seleção
Ocorrência de evento Sincronização ou
(interrupção) requisição de E/S
Bloqueado
Sistemas Operacionais 53
Escalonadores preemptivos
Sistemas Operacionais 54
RR - Round Robin (1)
A
B
C
D
0 3 6 9 12 15 18 23 28 34 40
Sistemas Operacionais 55
RR - Round Robin (2)
Sistemas Operacionais 56
Problemas com o Round Robin
Sistemas Operacionais 57
Escalonamento com prioridades
Sistemas Operacionais 58
Implementação de escalonador com prioridades
Prioridade 1
Fila apto n
Prioridade n
Preempção
Fila de bloqueados
Espera por evento
Evento
Sistemas Operacionais 59
Exemplo: pthreads
Sistemas Operacionais 60
Como definir a prioridade de um processo?
• Prioridade estática:
• Um processo é criado com uma determinada prioridade e esta
prioridade é mantida durante todo o tempo de vida do processo
• Prioridade dinâmica:
• Prioridade do processo é ajustada de acordo com o estado de
execução do processo e/ou do sistema
• e.g; ajustar a prioridade em função da fração do quantum que foi
realmente utilizada pelo processo:
q = 100 ms
•
Sistemas Operacionais 61
Problemas com prioridades
Sistemas Operacionais 62
Múltiplas filas com realimentação
• Baseado em prioridades
dinâmicas
• Em função do tempo de uso da
CPU a prioridade do processo Fila apto 0 Término
Dispatch
aumenta e diminui CPU
• Sistema de envelhecimento
(agging) evita postergação Fila apto 1
indefinida
Fila apto n
Possibilidade de Preempção
trocar de fila Fila de bloqueados Espera por evento
Evento
Sistemas Operacionais 63
Estudo de caso: escalonamento UNIX (1)
Sistemas Operacionais 64
Escalonamento UNIX (1)
Sistemas Operacionais 65
Escalonamento UNIX (2)
2 load _ average
decay
2 load _ average 1
p _ cpu decay
p _ usrpri PUSER 2 p _ nice
4
• Onde:
• load_average é o número médio de processos aptos no último
segundo
• PUSER é valor de base de prioridade para usuários (50)
Sistemas Operacionais 66
Estudo de caso: escalonamento Linux
Sistemas Operacionais 67
Escalonamento linux (tempo real)
Sistemas Operacionais 68
Escalonamento linux (timesharing)
Créditos
Créditos prioridade
2
Sistemas Operacionais 69
Estudo de caso: escalonamento windows 2000
Sistemas Operacionais 70
Escalonamento windows 2000 (classe variável)
Sistemas Operacionais 71
Escalonamento não preemptivo com prioridades
Sistemas Operacionais 72
Leituras complementares
Sistemas Operacionais 73