Sistemas Operacionais

Documentos relacionados
Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais II

Sistemas Operacionais: Sincronização entre processos

Comunicação entre Processos

Fundamentos de Sistemas Operacionais

Sistemas Operacionais Gerência de Processos

DCA-108 Sistemas Operacionais

Fundamentos de Sistemas Operacionais

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

Sistemas Operacionais. Comunicação entre processos

Capítulo 3. Programação Concorrente. Conteúdo. Objetivos. Recordando. Recordando. Objetivos de sistema operacional. DCA-108 Sistemas Operacionais

Sistemas Operacionais. Condição de corrida e Região crítica

Fundamentos de Sistemas Operacionais

Revisão Ultima aula [1/2]

Concorrência. Condições de Corrida. 5a. Tentativa. Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa

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)

Sincronização de Processos (2)

Exclusão Mútua (mutex)

Sistemas Operacionais Aula 6

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Comunicação entre processos

Unidade III Gerência de Processos

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Programação concorrente (processos e threads)

Sistemas Operacionais Concorrência. Carlos Ferraz Jorge Cavalcanti Fonsêca

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Comunicação entre processos (2)

Sincronização e Comunicação entre Processos

Sincronização de Processos (2)

Tipos de Soluções (cont.)

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

Estrutura deste arquivo.. Comunicação Interprocesso Parte 1 de 2 - Cap. 2. Introdução 1 CONDIÇÕES DE CORRIDA

Sistemas Distribuídos Aula 5

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

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

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

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

Sistemas Operacionais

Sincronização e Comunicação entre Processos. Sincronização e Comunicação Volnys Bernal 1. Agenda

Sistemas Operacionais

Ferramentas para Programação em Processadores Multi-Core

Fundamentos de Sistemas Operacionais

Sincronização e Comunicação

Capítulo 3 Programação Concorrente. Nunca encontrei um homem tão ignorante que eu não pudesse aprender algo com ele.

Sincronização e comunicação entre processos

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos

Sistemas Distribuídos

Sistemas Operacionais. Prof. André Y. Kusumoto

Introdução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização

Sistemas Operacionais

Programação de Sistemas em Tempo Real

Concorrência em Processos

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

Universidade Federal do RGS Instituto de Informática Departamento de Informática Aplicada

Sistemas Distribuídos

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais. Referências Bibliográfica. Referências Bibliográfica

Sistemas de Entrada e Saída

Sistemas Operacionais

SOP Sistemas Operacionais Módulo 04: Processo

Tipos de Soluções (cont.)

Programação Concorrente Locks

SSC0640 Sistemas Operacionais I

Introdução a Sistemas Operacionais. Adão de Melo Neto

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 6. Primitivas de Sincronização

Sistemas Operacionais

Sistemas Operacionais

Sistemas Distribuídos Aula 7

Sistemas Operacionais

Multiprocessadores & Multicomputadores

Sistemas Operacionais

Problema do Produtor -Consumidor. Solução por semáforos

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 4. Comunicação e Sincronização de Processos

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 5. Implementação de Exclusão Mútua

Sistemas Operacionais

Sincronização e Comunicação de/entre Processos. Na Aula Anterior... Nesta Aula. Comunicação entre Processos. Pipes 07/09/2016

Sistemas Operacionais

Programação Concorrente. Prof. Hugo Vieira Neto

SISTEMAS OPERACIONAIS

Notas da Aula 5 - Fundamentos de Sistemas Operacionais

ENADE 2011 SISTEMAS OPERACIONAIS

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais

Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado)

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos.

Mecanismos de Sincronização com Variáveis Compartilhadas

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

Capítulo 2 Processos e Threads

14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

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

Sistemas Operacionais II

Sistemas Distribuídos Aula 2

Transcrição:

Introdução 2 a edição Revisão: Fev/2003 Sistemas Operacionais Programação concorrente Capítulo 3 Programa executado por apenas um processo é dito de programa seqüêncial Existe apenas um fluxo de controle Programa concorrente é executado por diversos processos que cooperam entre si para realização de uma tarefa (aplicação) Existem vários fluxos de controle Necessidade de interação para troca de informações (sincronização) Emprego de termos Paralelismo real: só ocorre em máquinas multiprocessadoras Paralelismo aparente (concorrência): máquinas monoprocessadoras Execução simultânea versus estar em estado de execução simultâneamente Sistemas Operacionais 2 Programação concorrente Motivação para programação concorrente Composta por um conjunto de processos seqüenciais que se executam concorrentemente Processos disputam recursos comuns e.g. variáveis, periféricos, etc... Um processo é dito de cooperante quando é capaz de afetar, ou ser afetado, pela execução de outro processo Aumento de desempenho: Permite a exploração do paralelismo real disponível em máquinas multiprocessadoras Sobreposição de operações de E/S com processamento Facilidade de desenvolvimento de aplicações que possuem um paralelismo intrínsico Sistemas Operacionais 3 Sistemas Operacionais 4

Desvantagens da programação concorrente Especificação da paralelismo Programação complexa Aos erros comuns se adicionam erros próprios ao modelo Diferenças de velocidade relativas de execução dos processos Aspecto não-determinístico Díficil depuração Necessidade de especificar o paralelismo definindo: Quantos processos participarão Quem fará o que Dependência entre as tarefas (Grafo) Notação para expressar paralelismo fork/wait (fork/join) parbegin/parend Sistemas Operacionais 5 Sistemas Operacionais 6 Fork/wait Parbegin/parend Processo B Processo A fork B; fork C;... wait C; Processo C Comandos empregados para definir uma seqüência de comandos a serem executados concorrentemente A primitiva parend funciona como um ponto de sincronização (barreira) Processo A wait B; Bloqueado Processo B Parbegin Tarefa B; Tarefa C; Parend Bloqueado Processo C Sistemas Operacionais 7 Sistemas Operacionais 8

Comentários gerais O problema do compartilhamento de recursos Primitivas de mais alto nível para descrição do paralelismo do tipo parbegin/parend podem ser traduzidas por pré-compiladores e/ou interpretadores para primitivas de mais baixo nível Processos paralelos podem ser executados em qualquer ordem Duas execuções consecutivas do mesmo programa, com os mesmos dados de entrada, podem gerar resultados diferentes! Não é necessariamente um erro Possibilidade de forçar a execução em uma determinada ordem A programação concorrente implica em um compartilhamento de recursos Variáveis compartilhadas são recursos essenciais para a programação concorrente Acessos a recursos compartilhados devem ser feitos de forma a manter um estado coerente e correto do sistema Sistemas Operacionais 9 Sistemas Operacionais 10 Exemplo: relação produtor-consumidor (1) Exemplo: relação produtor-consumidor (2) Relação produtor-consumidor é uma situação bastante comum em sistemas operacionais Servidor de impressão: Processos usuários produzem impressões Impressões são organizadas em uma fila a partir da qual um processo (consumidor) os lê e envia para a impressora P 1 P 2 P n Produtores P C Consumidor P 2 P 1 5 4 3 2 1 in Suposições: Fila de impressão é um buffer circular Existência de um ponteiro (in) que aponta para uma posição onde a impressão é inserida para aguardar o momento de ser efetivamente impressa Existência de um ponteiro (out) que aponta para a impressão que está sendo realizada out P d Sistemas Operacionais 11 Sistemas Operacionais 12

Exemplo: relação produtor-consumidor (3) O problema da seção crítica Seqüência de operações: P1 vai imprimir; lê valor de in (5); perde processador P2 ganha processador; lê valor de in (5); insere arquivo; atualiza in (6) P1 ganha processador; insere arquivo (5); atualiza in (7) Estado incorreto: Impressão de P1 é perdida Na posição 6 não há uma solicitação válida de impressão P 1 in P 2 7 6 5 4 3 2 1 out P d Corrida (race condition) Situação que ocorre quando vários processos manipulam o mesmo conjunto de dados concorrentemente e o resultado depende da ordem em que os acessos são feitos Seção crítica: Segmento de código no qual um processo realiza a alteração de um recurso compartilhado Sistemas Operacionais 13 Sistemas Operacionais 14 Necessidade da programação concorrente Propriedades para exclusão mútua Eliminar corridas Criação de um protocolo para permitir que processos possam cooperar sem afetar a consistência dos dados Controle de acesso a seção crítica: Garantir a exclusão mútua Entry_section Exit_section Seção crítica Regra 1 - Exclusão mútua Dois ou mais processos não podem estar simultâneamente em uma seção crítica Regra 2 - Progressão Nenhum processo fora da seção crítica pode bloquear a execução de um outro processo Regra 3 - Espera limitada Nenhum processo deve esperar infinitamente para entrar em uma seção crítica Regra 4 Não fazer considerações sobre o número de processadores, nem de suas velocidades relativas Sistemas Operacionais 15 Sistemas Operacionais 16

Obtenção da exclusão mútua Desabilitação de interrupções Desabilitação de interrupções Variáveis especiais do tipo lock Alternância de execução Não há troca de processos com a ocorrência de interrupções de tempo ou de eventos externos Desvantagens: Poder demais para um usuário Não funciona em máquinas multiprocessadoras (SMP) pois apenas a CPU que realiza a instrução é afetada (violação da regra 4) Seção crítica CLI STI ;Desliga interrupções ;Ativa interrupções Sistemas Operacionais 17 Sistemas Operacionais 18 Variáveis do tipo lock Alternância Criação de uma variável especial compartilhada que armazena dois estados: Zero: livre 1: ocupado Desvantagem: Apresenta Race conditions Seção crítica While (lock==1); lock=1; lock=0; Desvantagem Teste contínuo do valor da variável compartilhada provoca o desperdício do tempo do processador (busy waiting) Viola a regra 2 se a parte não crítica de um processo for muito maior que a do outro while (TRUE) { while (turn!=0); critical_section(); turn=1; non_critical_section(); } while (TRUE) { while (turn!=1); critical_section(); turn=0; non_critical_section(); } Sistemas Operacionais 19 Sistemas Operacionais 20

Implementação de mecanismos para exclusão mútua Mutex Algorítmica: Combinação de variáveis do tipo lock e alternância (Dekker 1965, Peterson 1981) Primitivas: Mutex Semáforos Monitor Variável compartilhada para controle de acesso a seção crítica CPU são projetadas levando-se em conta a possibilidade do uso de múltiplos processos Inclusão de duas instruções assembly para leitura e escrita de posições de memória de forma atômica. CAS: Compare and Store! Copia o valor de uma posição de memória para um registrador interno e escreve nela o valor 1 TSL: Test and Set Lock! Lê o valor de uma posição de memória e coloca nela um valor não zero Sistemas Operacionais 21 Sistemas Operacionais 22 Primitivas lock e unlock Primitivas lock e unlock: problemas (1) O emprego de mutex necessita duas primitivas enter_region: tst register,flag cmp register,0 jnz enter_region ret Busy waiting (spin lock) Confiar no processo (programador)! Fazer o lock e o unlock corretamente Inversão de prioridades leave_region: Seção crítica mov flag,0 ret lock(flag); unlock(flag); lock(m) Troca de processo lock(m) Bloqueado fazendo busy wait unlock(m) Outros processos Sistemas Operacionais 23 Sistemas Operacionais 24

Primitivas lock e unlock: problemas (2) Semáforos Solução: Bloquear o processo ao invés de executar busy waiting Baseado em duas novas primitivas! sleep: Bloqueia um processo a espera de uma sinalização! wakeup: Sinaliza um processo Mecanismo proposto por Dijkstra (1965) Duas primitivas: P (Proberen, testar) V (Verhogen, incrementar) Semáforo é um tipo abstrato de dados: Um valor inteiro Fila de processo Sistemas Operacionais 25 Sistemas Operacionais 26 Implementação de semáforos Semáforos versus mutex Primitivas P e V P(s): s.valor = s.valor - 1 Se s.valor < 0 { Bloqueia processo (sleep); Insere processo em S.fila; } V(s): s.valor = s.valor + 1 Se S.valor <=0 { Retira processo de S.fila; Acorda processo (wakeup); } Necessidade de garantir a atomicidade nas operações de incremento (decremento) e teste da variável compartilhada s.valor Uso de mutex Dependendo dos valores assumidos por s.valor Semáforos binários: s.valor = 1 Semáforos contadores: s.valor = n Primitivas lock e unlock são necessariamente feitos por um mesmo processo Acesso a seção crítica Primitivas P e V podem ser realizadas por processos diferentes Gerência de recursos Sistemas Operacionais 27 Sistemas Operacionais 28

Troca de mensagens Primitivas send e receive (1) Primitivas do tipo mutex e semáforos são baseadas no compartilhamento de variáveis Necessidade do compartilhamento de memória Sistemas distribuídos não existe memória comum Novo paradigma de programação Troca de mensagens Primitivas send e receive RPC (Remote Procedure Call) Diferentes comportamentos em função da semântica das primitivas send e receive Funcionamento básico: Processo A send(dst, msg) Bloqueado Processo B recv(src, msg) Processo A recv(src, msg) Bloqueado Processo B send(dst, msg) Sistemas Operacionais 29 Sistemas Operacionais 30 Primitivas send e receive (2) Remote Procedure Call (1) Bibliotecas de comunicação e.g. sockets, MPI, PVM, etc. Grande variedade de funções Ponto a ponto Em grupo Primitivas para testar status e andamento de uma comunicação Diferentes semânticas! Bloqueante! Não bloqueante! Rendez vous Base de comunicação do DCE Composto por : núcleo executivo (run time) Interfaces para a geração de aplicações (Interface de programação) Sistemas Operacionais 31 Sistemas Operacionais 32

Remote Procedure Call (2) Deadlock return Cliente Call S Call S Servidor return Situação na qual um, ou mais processos, fica impedido de prosseguir sua execução devido ao fato de cada um estar aguardando acesso a recursos já alocados por outro processo Stub (cliente) Unpack Pack Unpack Pack Stub (servidor) wait Recv Send Run time Recv Send Linguagem própria para descrever funções (chamada/definição) Compilador (rpcgen) para gerar stubs e ligar com programa aplicativo comunicação é toda gerada pelo run-time de forma transparente Sistemas Operacionais 33 Sistemas Operacionais 34 Condições para ocorrência de deadlocks (1) Condições para ocorrência de deadlocks (2) Para que ocorra um deadlock quatro condições devem ser satisfeitas simultâneamente: 3. Recurso não-preemptível: Um recurso concedido não pode ser retirado de um processo por outro 1. Exclusão mútua: Todo recurso ou está disponível ou está atribuído a um único processo 2. Segura/espera: Os processo que detem um recurso podem solicitar novos recursos 4. Espera circular: existência de um ciclo de 2 ou mais processos cada um esperando por um recurso já adquirido (em uso) pelo próximo processo no ciclo em uso R 1 R 2 solicitação B A solicitação em uso Sistemas Operacionais 35 Sistemas Operacionais 36

Estratégias para tratamento de deadlocks Leituras complementares Ignorar Deteção e recuperação Monitoração dos recursos liberados e alocados Eliminação de processos Impedir ocorrência cuidando na alocação de recursos Algoritmo do banqueiro Prevenção (por construção) Evitar a ocorrência de pelo menos uma das quatro condições necessárias R. Oliveira, A. Carissimi, S. Toscani; Sistemas Operacionais. Editora Sagra-Luzzato, 2001. Capítulo 3 A. Silberchatz, P. Galvin, G. Gagne; Applied Operating System Concepts. Addison-Wesley, 2000, (1 a edição). Capítulo 6 e 7 W. Stallings; Operating Systems. (4 th edition). Prentice Hall, 2001. Capítulo 5 e 6 Sistemas Operacionais 37 Sistemas Operacionais 38