Comunicação Interprocesso Condições de Disputa (corrida) Dois processos querem ter acesso simultaneamente à memória compartilhada: requer implementação de exclusão mútua Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Regiões Críticas (1) Quatro condições necessárias para prover exclusão mútua: 1. Nunca dois processos simultaneamente em uma região crítica 2. Nenhuma afirmação sobre velocidades ou números de CPUs 3. Nenhum processo executando fora de sua região crítica pode bloquear outros processos 4. Nenhum processo deve esperar eternamente para entrar em sua região crítica Pearson Education Sistemas Operacionais Modernos – 2ª Edição 2 Regiões Críticas (2) Exclusão mútua usando regiões críticas Pearson Education Sistemas Operacionais Modernos – 2ª Edição 3 Exclusão Mútua com Espera Ociosa (1) Solução proposta para o problema da região crítica (a) Processo 0. Pearson Education (b) Processo 1. Sistemas Operacionais Modernos – 2ª Edição 4 Exclusão Mútua com Espera Ociosa (2) Solução de Peterson para implementar exclusão mútua Pearson Education Sistemas Operacionais Modernos – 2ª Edição 5 Exclusão Mútua com Espera Ociosa (3) Entrando e saindo de uma região crítica usando a instrução TSL Pearson Education Sistemas Operacionais Modernos – 2ª Edição 6 Dormir e Acordar Problema do produtor-consumidor com uma condição de disputa fatal Pearson Education Sistemas Operacionais Modernos – 2ª Edição 7 Semáforos São variáveis que indicam o sinal de acordar para um processo. Se o valor = 0, indica que nenhum sinal de acordar foi possível. Se o valor > 0, o sinal será decrementado de uma unidade e o processo será acordado. Semáforos possuem duas operações: down e up. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 8 Semáforos O problema do produtor-consumidor usando semáforos Pearson Education Sistemas Operacionais Modernos – 2ª Edição 9 Mutex (mutual exclusion) São semáforos usados para a exculsão mútua. Ele é destinado a garantir que somente um processo por vez esteja lendo ou escrevendo no buffer. Implementação de mutex_lock e mutex_unlock Pearson Education Sistemas Operacionais Modernos – 2ª Edição 10 Monitores (1) É uma coleção de procedimentos, variáveis e estruturas de dados, agrupadas em um tipo especial de módulo ou pacote. Somente um processo pode estar ativo em um monitor em um dado momento. É uma construção da linguagem de programação e assim, o compilador sabe que ele é especial. Exemplo de um monitor Pearson Education Sistemas Operacionais Modernos – 2ª Edição 11 Monitores (2) • Delineamento do problema do produtor-consumidor com monitores – somente um procedimento está ativo por vez no monitor – o buffer tem N lugares Pearson Education Sistemas Operacionais Modernos – 2ª Edição 12 Troca de Mensagens São chamadas ao sistema. Usa duas primitivas: send e receive Ex.: send(destination, &message); receive(source , &message) Pearson Education Sistemas Operacionais Modernos – 2ª Edição 13 Barreiras • Uso de uma barreira a) processos se aproximando de uma barreira b) todos os processos, exceto um, bloqueados pela barreira c) último processo chega, todos passam Pearson Education Sistemas Operacionais Modernos – 2ª Edição 14 Problemas clássicos de IPC IPC – Inter-Process Communication Necessário para a coordenação mútua entre processos Pearson Education Sistemas Operacionais Modernos – 2ª Edição 15 Jantar dos Filósofos • Filósofos comem/pensam • Cada um precisa de 2 garfos para comer • Pega um garfo por vez • Como prevenir deadlock Pearson Education Sistemas Operacionais Modernos – 2ª Edição 16 O Problema dos Leitores e Escritores • Como gerenciar o acesso de vários usuários a uma base de dados e a escrita nessa base de dados. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 17 O Problema do Barbeiro Sonolento (1) Pearson Education Sistemas Operacionais Modernos – 2ª Edição 18 Escalonamento Introdução ao Escalonamento (1) • Surtos de uso da CPU alternam-se com períodos de espera por E/S a) um processo orientado à CPU b) um processo orientado à E/S Pearson Education Sistemas Operacionais Modernos – 2ª Edição 19 Introdução ao Escalonamento (2) Objetivos do algoritmo de escalonamento Pearson Education Sistemas Operacionais Modernos – 2ª Edição 20 Escalonamento em Sistemas em Lote (1) Um exemplo de escalonamento job mais curto primeiro Pearson Education Sistemas Operacionais Modernos – 2ª Edição 21 Escalonamento em Sistemas em Lote (2) Escalonamento em três níveis Pearson Education Sistemas Operacionais Modernos – 2ª Edição 22 Escalonamento em Sistemas Interativos (1) • Escalonamento por alternância circular (roundrobin) a) lista de processos executáveis b) lista de processos executáveis depois que B usou todo o seu quantum Pearson Education Sistemas Operacionais Modernos – 2ª Edição 23 Escalonamento em Sistemas Interativos (2) Um algoritmo de escalonamento com quatro classes de prioridade Pearson Education Sistemas Operacionais Modernos – 2ª Edição 24