DESCRITOR DE PROCESSOS struct desc_proc{ char estado_atual

Propaganda
DESCRITOR DE PROCESSOS
struct desc_proc{
char
estado_atual;
int prioridade;
unsigned inicio_memoria;
unsigned tamanho_memoria;
struct arquivo arq_abertos[20];
/*
/*
/*
/*
/*
Estado atual do processo */
Prioridade do processo */
Endereço inicial da memória */
Bytes de memória ocupados */
Arquivos abertos */
unsigned tempo_de_cpu;
unsigned proc_pc;
unsigned proc_sp;
unsigned proc_acc;
unsigned proc_rx;
struct desc_proc *proximo;
/*
/*
/*
/*
/*
/*
Tempo já gasto de cpu */
Valor salvo do reg. PC */
Valor salvo do reg. SP */
Valor salvo do reg. ACC */
Valor salvo do reg. RX */
Aponta para o próximo */
}
struct
struct
struct
struct
desc_proc
desc_proc
desc_proc
desc_proc
tab_desc[MAX_DESC_PROC];
*desc_livre;
*espera_cpu;
*usando_cpu;
/* Lista de descr. livres */
/* Lista de proc. Esperando */
/* Lista de proc. Executando */
INICIALIZAÇÃO DA LISTA DE PROCESSOS LIVRES
for(i=0; i< MAX_DESC_PROC – 1; ++i)
tab_desc[i].proximo = &tab_desc[i+1];
tab_desc[i].proximo = NULL;
desc_livre = &tab_desc[0];
Aula 5 | Sistemas Operacionais | Página 1
THREADS
MODELOS N:1
•
•
•
•
•
Threads a nível de usuário
Todas as tarefas de gerenciamento de threads é feito a nível da aplicação
Threads são implementadas por uma biblioteca que é ligada ao programa
O sistema operacional não “enxerga” a presença das threads
A troca de contexto entre threads é feita em modo usuário pelo escalonador embutido
na biblioteca
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 leva ao bloqueio de todo o
processos
• Não explora paralelismo em máquinas multiprocessadoas
Aula 5 | Sistemas Operacionais | Página 2
MODELO 1:1
•
•
•
•
Threads a nível de sistema
Resolve as desvantagens do modelo N:1
O sistema operacional “enxerga” as threads
– O sistema operacional mantém informações sobre processos e sobre threads
– Troca de contexto necessita a intervenção do sistema operacional
O conceito de threads é considerado na implementação do sistema operacional
Vantagens
• Explora o paralelismo de máquinas multiprocessadas
• Facilita o recobrimento de operações de entrada/saída por cálculos
Desvantagens
• Implementação “mais pesada” que o modelo N:1
MODELO M:N
•
•
•
Abordagem que combina os modelos N:1 e 1:1
Oferece dois níveis de escalonamento
- Nível usuário (N:1): threads sobre unidades de escalonamento
– Nível sistema (1:1): unidade de escalonamento sobre o processador
Dificuldade é parametrizar M e N
Aula 5 | Sistemas Operacionais | Página 3
ESCALONAMENTO – OBJETIVOS
Todos os sistemas
• Justiça – dar a cada processo uma porção justa da CPU
• Aplicação da política – verificar se a política estabelecida é cumprida
• Equilíbrio – manter ocupadas todas as partes do sistema
Sistemas em lote
• Vazão (throughput) – maximizar o número de jobs por hora
• Tempo de retorno – minimizar o tempo entre a submissão e o término
• Utilização de CPU – manter a CPU ocupada o tempo todo
Sistemas interativos
• Tempo de resposta – responder rapidamente às requisições
• Proporcionalidade – satisfazer às expectativas dos usuários
Sistemas de tempo real
• Cumprimento dos prazos – evitar a perda de dados
• Previsibilidade – evitar a degradação da qualidade em sistemas multimídia
Aula 5 | Sistemas Operacionais | Página 4
EXEMPLO DE ALGORITMOS DE ESCALONAMENTOS
Para sistemas de lote
• FIFO – Fist In First Out
• SJF – Shortest Job First
• Escalonamento em três níveis
Para sistemas interativos
• Round-Robin
• Escalonamento por prioridades
• Filas múltiplas
• SJF – Shortest Job First
• Escalonamento garantido
Para sistemas de tempo-real
• Escalonamento por taxa monotônica (RMS)
• Escalonamento prazo mais curto primeiro (EDF)
Aula 5 | Sistemas Operacionais | Página 5
FIFO – First In First Out
•
•
First-Come, First-Served (FCFS)
Simples de implementar
• Fila
Funcionamento:
• Processos que se tornam prontos são inseridos no final da fila
• Processos que está no início da fila é o próximo a executar
Processo executa até que:
• Libere explicitamente o processador
• Realize uma chamada de sistema (bloqueado)
• Termine sua execução
Desvantagem:
• Prejudica os processos I/O bound
Aula 5 | Sistemas Operacionais | Página 6
SJF – Shortest Job First
•
•
•
•
•
Originário do fato que o menor tempo médio é obtido quando se executa primeiro os
processos de menor ciclo de processador (I/O bound)
Algoritmo ótimo, isto é, fornece o menor tempo médio de espera para um conjunto de
processos
Processos I/O bound são favorecidos
Dificuldade é determinar o tempo do próximo ciclo de CPU de cada processo, porém:
Pode ser empregado em processos de batch(lote)
Aula 5 | Sistemas Operacionais | Página 7
ROUND-ROUBIN (RR)
•
•
•
•
Similar ao algoritmo FIFO
Cada processo recebe um tempo limite máximo (quantum) para executar um ciclo de
processador
Fila de processos pronto é uma fila circular
Necessidade de um relógio para delimitar as fatias de tempo
O processo perde o processador quando:
• Libera explicitamente o processador
• Realiza uma chamada de sistema (bloqueado)
• Termina sua execução
• Quando sua fatia de tempo é esgotada
•
•
Escalonamento do tipo round-robin é preemptivo
Se o quantum for igual ao infinito, obtém-se o comportamento de um escalonador FIFO.
Problema 1: Dimensionar o quantum
• Compromisso entre overhead e tempo de resposta em função do número de usuários (1/k
na presença de k usuários)
• Compromisso entre tempo de chaveamento e tempo de ciclo de processador (quantum)
Problema 2: Processos I/O bound são prejudicados
• Esperam da mesma forma que processos CPU bound porém muito provavelmente não
utilizam todo o seu quantum
• Solução:
Prioridades
Aula 5 | Sistemas Operacionais | Página 8
ESCALONADORES POR PRIORIDADES
•
•
•
Associar prioridades a processos I/O bound para compensar o tempo gasto em estado de
espera (pronto)
Sempre que um processo de maior prioridade que o processo atualmente em execução
entrar no estado de pronto deve ocorer uma preempção
• Escalonamento com prioridade é inerente a preempção
• É possível haver prioridade não-preemptiva
Escalonador deve sempre selecionar o processo de mais alta prioridade
Implementação
• Múltiplias filas associadas ao estado de pronto
• Cada fila uma prioridade
• Pode ter sua própria política de escalonamento (FIFO, SJF, RR)
Prioridade estática versus dinâmica
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
• A 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 = 100ms
Processo A utilizou 2ms -> nova prioridade = 1/0.02 = 50
Processo B utilizou 50ms -> nova prioridade = 1/0.5 = 2
Aula 5 | Sistemas Operacionais | Página 9
PROBLEMAS COM PRIORIDADES
•
•
Com prioridades um processo de baixa prioridade pode não executar
Um processo que durante sua execução troca de comportamento (CPU bound a I/O bound)
pode ficar mal classificado a nível de prioridades a ser penalizado
•
•
Solução:
Múltiplas filas com realimentação
MÚLTIPLAS FILAS COM REALIMENTAÇÃO
•
•
•
Baseado em prioridades dinâmicas
Em função do tempo de uso da CPU a prioridade do processo aumenta e diminui
Sistema de envelhecimento evita postergação indefinida
Aula 5 | Sistemas Operacionais | Página 10
Download