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