Sistemas Operativos. Escalonamento e sincronização. Rui Maranhão

Documentos relacionados
Execução Concorrente

Sincronização. Problema da Exclusão Mútua

Sincronização. Problema da Exclusão Mútua

Execução Concorrente

Sincronização. Problema da Exclusão Mútua

Trincos Lógicos: Implementações. Trincos lógicos: Propriedades

Definição. ? Algoritmo de Escalonamento de CPU. ? Algoritmo do S.O. que determina qual o próximo processo a ocupar a CPU

Escalonamento do CPU

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 3. Escalonamento

1 Porque o estado de um processo deve ser salvo quando ele deixa a CPU?

Sistemas Operacionais

Davidson Rodrigo Boccardo

Sistemas Operacionais. Escalonamento de processos

Escalonamento de Processos. Estratégia de atribuição do Processador aos Processos

Sistemas Operativos. Objetivo. Entrega do Questionário. Exercício 1. Exercício 2. Exercício 3. Exercício 4. Grupo 1 Introdução

Sistemas de Computação. Processos e escalonamento

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS C SISTEMAS OPERATIVOS

Algoritmos de escalonamento

Escalonamento da CPU

Escalonamento da CPU

Multiprocessamento. Escalonamento de Processos: Algoritmos. Escalonamento em POSIX. Escalonamento de Threads. Padrão de Execução dum Processo

Escalonamento de Processos

LabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada...

Sistemas Operativos: Implementação de Processos

Processos. Aula Passada. Aula Passada (2) Ciclos de CPU e de I/O (1)

Sistemas Operativos: Implementação de Processos

Processos. Escalonamento de Processos

Processos. Escalonamento de Processos

SOP - TADS Escalonamento de Processos

Sistemas Operativos: Escalonamento de Processos

6 ESCALONAMENTO DE CPU

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Sistemas Operacionais. Escalonamento de Processos

Infra-estrutura de Software. Escalonamento. Decidindo qual processo vai executar

Temporização (Scheduling) de Processos

Processos. Escalonamento de Processos

Processos. Objetivos do Escalonamento. Políticas de Escalonamento. Algoritmos de Escalonamento. Maximizar a taxa de utilização da UCP.

Gerência do Processador. Adão de Melo Neto

Sistemas Operacionais Aula 07: Scheduling da CPU. Ezequiel R. Zorzal

Sistemas Operacionais Gerenciamento de Processos

Sistemas Operacionais. Prof. André Y. Kusumoto

Fundamentos de Sistemas Operacionais

Infra-Estrutura de Software. Escalonamento

Sistemas Operacionais: Escalonamento de processos

Unidade III Gerência de Processos

SISTEMAS OPERACIONAIS. TÁSSIO JOSÉ GONÇALVES GOMES

Temporização(Scheduling) de Processos. TemporobjectivomaximizarousodoCPU,i.e.tersempre um processo a executar.

Sistemas Operacionais Aula 7

Sistemas Operacionais

Aula 10: Escalonamento da CPU

Sistemas Operacionais. Gerência de Processador

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS CURSO DE ENGENHARIA ELECTROTÉCNICA

Escalonamento. Decidindo qual processo vai executar. Infra-estrutura de Software

SO: Escalonamento. Sistemas Operacionais Flavio Figueiredo (

Sistemas de Informação. Sistemas Operacionais

Fundamentos de Sistemas Operacionais

Resumo: Sistemas Operacionais Abertos

Gestor de Processos. Gestor de Processos

Exclusão Mútua (mutex)

Escalonamento de Processos Uniprocessador

SSC0640 Sistemas Operacionais I

Sistemas Operacionais

Sistemas Operativos. Processos, threads e eventos. Rui Maranhão

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III. Escalonamento de Processos. 24/04/2014 Prof. Valeria M. Bastos

Sistemas Operativos. Sumário. Escalonador da CPU. Por Prioridades Round Robin. ! Algoritmos de escalonamento

Capítulo 2 Processos e Threads

ENADE 2011 SISTEMAS OPERACIONAIS

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Notas da Aula 10 - Fundamentos de Sistemas Operacionais

Sincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex)

Cadeira de Sistemas Operativos. Frequência 1º Semestre. 8 de Fevereiro de 2006

Gerência de Recursos. Gerência do Processador

Sistemas Operacionais

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 28

Escalonamento de Processos Estratégias de Escalonamento de Processos

Estratégias de Escalonamento de Processos

Questões de Múltipla escolha

Gerência do Processador. Adão de Melo Neto

Na Aula Anterior... Escalonamento de Processos. Nesta Aula. Escalonamento. Comportamento de um Processo. Historicamente...

Sistemas Operativos I/O. Rui Maranhão

Sistemas Operacionais: Sincronização entre processos

Programação de Sistemas em Tempo Real

Sistemas Operacionais

Retrospectiva da aula passada... Escalonamento. Na aula passada... Comunicação entre processos (-- O jantar dos filósofos --)

Questões de Provas de Períodos Anteriores

Sistemas Operacionais

Escalonamento de Processos

Sistemas Operacionais

Bacharelado em Ciência da Computação Sistemas Operacionais

Escalonamento no Unix. Sistemas Operacionais

Sistemas Operacionais Escalonamento. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas Operacionais. Capítulo 8 Gerência do Processador

Capítulo 5: Escalonamento da CPU. Operating System Concepts 8th Edition

Fundamentos de Sistemas Operacionais

Sistemas Operativos. Um conjunto de rotinas de software que. virtualizando-o. diversos como o sistema de ficheiros e.

Escalonamento de processos

Escalonamento no Unix. Sistemas Operacionais

Transcrição:

Sistemas Operativos Escalonamento e sincronização Rui Maranhão (rma@fe.up.pt)

Benefícios da Multiprogramação maximiza o tempo de utilização do CPU utilização do CPU = 1 - p n n é o número de processos p fracção de tempo em espera por I/O

Políticas de escalonamento processos competem por recursos a política depende dos objectivos do sistema as políticas visam conveniência: redução dos tempos de resposta, sendo justo para os processos eficiência: débito e max utilização do CPU

Critérios de escalonamento IO-bound ou CPU-bound interactivo ou não urgência de resposta (tempo real) comportamento recente necessidade de periféricos especiais por prioridade

Estados de um processo em execução foi-lhe atribuído CPU bloqueado o processo está logicamente impedido de prosseguir, porque lhe falta um recurso do ponto de visto do SO, transição voluntária pronto a executar, aguarda escalonamento

Primitivas de despacho bloqueia(evento) coloca processo na fila de processos parados à espera do evento invoca próximo processo liberta(evento) ou liberta(processo, evento) se processo não esta a espera de mais eventos, coloca-o na lista de espera

Primitivas de despacho próximo_processo() selecciona um dos processos existentes na lista de processos prontos a executar executa a comutação de contexto salvaguarda contexto volátil do processo corrente carrega contexto do processo escolhido

Principais decisões Qual o próximo processo? Quando começa a executar? Durante quanto tempo?

Escalonamento de processos Se, após lhe ser atribuído o CPU, nunca mais lhe for retirado escalonamento cooperativo (non-preemptive) ex., windows 3.1, co-rotinas, thread_yield() se o CPU lhe for retirado escalonamento com desafectação forçada ou preemptive

Escalonamento de processos escalonamento cooperativo sensível as variações de carga escalonamento com desafectação forçada sistema responde melhor comutação de contexto é cara

Escalonamento longo-prazo (segundos, minutos) e de curtoprazo (milisegundos) CPU-bound: faz pouco uso de I/O; requer muito processamento I/O-bound: faz muito uso de I/O

Escalonamento os processos prontos são seriados numa fila (ready list) lista ligada de apontadores para process control block lista pode estar ordenada por prioridades

Escalonamento quando um processo é escalonado, é retirado da ready list e posto a executar o processo pode perder o CPU aparecer um com maior prioridade pedido de I/O (bloqueado) o quantum expira (pronto)

Escalonamento pretende-se maximizar a utilização do CPU tendo em atenção tempo de resposta de aplicações interactivas utilização de dispositivos I/O justiça na distribuição de tempo de CPU

Escalonamento Quando escalonar um processo? quando um processo passa de a-executar a bloqueado quando um processo passa a pronto quando se termina uma operação I/O quando um processo termina

Escalonamento diferentes algoritmos de escalonamento favorecem diferentes optimizações tempo de resposta máxima utilização de CPU

Objectivos dos algoritmos de escalonamento em geral equidade, balanceado e forçar que as regras impostas pelo algoritmo são respeitadas sistemas de batch thoughput, turnaournd time, maximizar utilização do CPU

Objectivos dos algoritmos de escalonamento sistemas interactivos tempo de resposta e proporcionalidade sistemas de tempo real tempos de resposta estão pré-definidos, previsibilidade

Algoritmos FCFS (first come, first served) SJF (shortest job first) SRTF (shortest remaining time first) preemptive priority scheduling RR (round-robin) outros algoritmos: lotaria, promessas

FCFS a ready list é uma fila FIFO o processo é colocado no fim da fila e seleccionado o da frente método cooperativo nada apropriado para ambientes interactivos

FCFS tempo de espera com grandes flutuações dependendo da ordem de chegada e das características dos processos simplicidade de implementação

SJF escalonar processo mais curto primeiro possibilidades desafectação forçada - interrompe o processo em execução se aparecer um mais curto cooperativo - aguarda terminação do processo em execução mesmo que apareça um mais curto

SJF não se consegue calcular a priori o tempo de execução dos processos apenas se podem fazer estimativas uma combinação de tempos reais e estimativas para fazer futuras previsões

Preemptive priority associa uma prioridade a cada processo a ready queue é uma fila seriada por prioridades escalona sempre o processo de maior prioridade se um processo de maior prioridade aparecer, faz a troca de processos

Preemptive priority Problema: míngua (starvation)!! Solução: evelhecimento aumenta a prioridade dos processos pouco a pouco para que sejam executados eventualmente

RR dá a cada processo um intervalo de tempo de CPU fixo de cada vez quando um processo esgota o seu quantum retira-o do CPU e volta a colocá-lo no fim da fila ignorando overheads do escalonamento (quais?), cada um dos n processos terá 1/n do tempo disponível de CPU

RR se o quantum for muito grande, RR tende a comportar-se como FCFS se o quantum for muito pequeno, então o overhead de mudanças de contexto degrada os níveis de utilização do CPU tempo de resposta melhor que o SJF (o quantum é normalmente o SJ)

Avaliação de algoritmos Modelo deterministico definição da carga tipo: ordem de chegada dos processo, tempos de execução, distribuição CPU/IO, etc. e avaliação analítica do desempenho vantagem: simples desvantagem: ajuste dos resultados depende directamente dos dados de entrada (necessários vários cenários)

Avaliação de algoritmos Teoria de fila de espera definição de um modelo matemático do sistema e avaliar segundo a teoria de filas de espera desvantagem: muitas simplificações para que o modelo seja tratável

Avaliação de algoritmos simulação escrever/adoptar/usar um programa que modele o sistema e analisar o desempenho do algoritmo tentar obter traços do comportamento de sistemas reais desvantagem: tempo de execução longos

Sincronização de processos

Programação concorrente a possibilidade de execução simultânea leva ao acesso em concorrência a recursos partilhados o acesso concorrente pode ser feito a zonas de endereçamento partilhadas o acesso concorrente pode resultar na incoerência dos dados/resultados

Cooperação entre processos vários processos executam em conjunto uma ou mais tarefas, nos quais competem por recursos indicam uns aos outros ausência/existência de recursos ocorrência de acontecimentos

Problema da exclusão mútua Qual o problema se for multi-tarefa?

Problema da execução concorrente

Problema... em linguagem máquina as acções atómicas são mais elementares

Programação concorrente para garantir a coerência dos dados é necessário que os processos acedam ordenadamente aos recursos o SO fornece um conjunto de mecanismos que permitem os processos sincronizarem-se

Secção crítica em programação concorrente sempre que se testam ou se modificam estrutura de dados: fazê-lo dentro de uma secção crítica!!

Secção crítica

Secção crítica: Propriedades exclusão mútua progresso (liveness) ausência de deadlocks ausência de míngua (starvation)

Secção crítica: Condições As seguintes condições são necessárias para uma solução eficiente só um processo pode estar dentro da secção crítica não se deve assumir valores quanto a velocidade de execução ou #CPUs disponíveis

Secção crítica: Condições processos a executar fora da secção crítica não deverá bloquear outros processos nenhum processo deverá esperar indefinidamente para entrar na região crítica

Implementações algorítmicas hardware sistema operativo

Proposta #1 Qual a propriedade não garantida??

Proposta #2 Qual a propriedade não garantida??

Proposta #3 Qual a propriedade não garantida?? Porque motivo é garantida a exclusão mútua

Proposta #4 Qual a propriedade não garantida??

Algoritmo Peterson

Conclusões sobre soluções algorítmicas complexas: alta latência só contemplam espera activa solução: introduzir implementações de hardware

Soluções com suporte do hardware abrir() e fechar() usam instruções especiais oferecidas pelos processadores inibição de interruptores exchange (xchg no intel IA) test-and-set (cmpxchg no intel IA)

Exclusão mútua com inibição de interruptores só deve ser usado dentro do SO em secções críticas de pouca duração inibição das interrupções impede execução de serviços de sistema se o programa não chamar abrir(), as interrupções ficam inibidas e o sistema para

Não funciona em multiprocessadores...

Problema da atomicidade em multiprocessadores

Exclusão mútua com exchange

Exchange em multiprocessadores

Exclusão mútua com test-and-set

Conclusões sobre as soluções de hardware oferecem mecanismos básicos não podem ser usadas por programas em modo utilizador só contemplam espera activa

Regiões críticas soluções anteriores não são muito interessantes porque acarretam espera activa remetem o problema para o código fonte só estão disponíveis em kernel mode Objectivo: primitvas genéricas, acessíveis no modo utilizador, fornecendo espera passiva

Soluções com suporte do SO Primitivas de sincronização software trap (interrupção SW) comutação para modo núcleo estrutura de dados e código de sincronização pertence ao núcleo usa suporte de hardware (ex., test-and-set) mutex e semáforos

Mutex técnica de programação para evitar que processos tenham acesso simultâneo a um recurso partilhado em português: trinco? outra definição?

Estrutura de dados

Diagrama de estados

Funções do mutex

Funções do mutex

mutex: limitações mutex não são suficientemente expressivos para resolver alguns problemas de sincronização bloquear tarefas se a pilha estiver cheia necessário um controlador de recursos

Semáforos

Semáforos: Primitivas s = criar_semafaro(num) esperar(s) bloqueia o processo se num <= 0 assinalar(s) se houver processos bloqueados, liberta um, senão num++ primitivas atómicas e podem ser invocadas de processos diferentes

Semáforos: Primitivas

Exemplo

Interface mutex POSIX int pthread_mutex_init(pthread_mutex_t *m, pthread_mutexattr_t *a); int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *timeout); Exemplo: pthread_mutex_t count_lock; pthread_mutex_init(&count_lock, NULL); pthread_mutex_lock(&count_lock); count++; pthread_mutex_unlock(&count_lock);

Interface semáforo POSIX int sem_init(sem_t *sem, int pshared, unsigned value); int sem_post(sem_t *sem); int sem_wait(sem_t *sem); Exemplo: sem_t sharedsem; sem_init(&sharedsem, 0, 1); sem_wait(&sharedsem); count++; sem_post(&sharedsem);

Alternativas Outras formas de implementar regiões críticas sleep/wakeup contagem de eventos monitores mensagens

Exemplos clássicos de problemas de sincronização

Problemas clássicos de sincronização algoritmo do barbeiro algoritmo dos produtores / consumidores jantar dos filósofos algoritmo dos leitores / escritores