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



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

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

Sistemas Operacionais

9 - Sincronização e Comunicação entre Processos

Sistemas Operacionais Sincronização e Comunicação entre Processos

Sistemas Operacionais. Capítulo 7 Sincronização e Comunicação entre Processos

Sistemas Operacionais

Sistemas Operacionais

Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br

SISTEMAS OPERACIONAIS

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

Processos e Threads (partes I e II)

7 Processos. 7.1 Introdução

Revisão Ultima aula [1/2]

Deadlocks. Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Processos. Adão de Melo Neto

Sistemas Operacionais Processos e Threads

Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Fundamentos de Sistemas Operacionais. Processos. Prof. Edwar Saliba Júnior Março de Unidade Processos

Gerência do Processador

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

Sistemas Distribuídos

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Sistemas Operacionais

Estruturas do Sistema de Computação

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Disciplina de Sistemas Distribuídos. Sincronização em SD. Prof. M.Sc. Alessandro Kraemer Kraemer

Sumário. Deadlock. Definição. Recursos. M. Sc. Luiz Alberto

Programação Concorrente Processos e Threads

Gerenciamento de Transações

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Everson Scherrer Borges João Paulo de Brito Gonçalves

Monitores. Conceito Sistemas Operacionais II

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura Exemplo

Introdução aos Sistemas

Gerência de Processador

Sistemas Operacionais. Prof. André Y. Kusumoto

Grupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?

SISTEMAS OPERACIONAIS 2007

Sistemas Operacionais

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba

Arquitetura de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

void echo(); { chin = getchar(); chout = chin; putchar(chout); }

Arquitetura dos Sistemas Operacionais

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

Sistemas Operacionais

Métodos de Sincronização do Kernel

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Tipos de sistemas operacionais

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Série de Problemas - Sincronização com Semáforos

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Sistemas Operativos: Deadlocks

Sistemas Operacionais. Conceitos de um Sistema Operacional

8 Threads. 8.1 Introdução

Sistemas Operacionais Gerência de Dispositivos

Programação Orientada a Objetos Threads

Sistemas Operacionais

Figura 01 Kernel de um Sistema Operacional

Sistema Operacional. Prof. Leonardo Barreto Campos 1

ARQUITETURA DE COMPUTADORES E SISTEMAS OPERACIONAIS P/ CONCURSOS PÚBLICOS FOCO: ESAF/CESGRANRIO/FCC. Prof. Almeida Jr

Sincronização. Cooperação entre Processos

Sistemas Operacionais. Roteiro. Hardware. Marcos Laureano

Sistemas Operacionais

Tipos de Servidores. Servidores com estado

Projeto de Sistemas de Tempo Real

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Visão geral de um sistema computacional

Arquitetura de Computadores. Sistemas Operacionais IV

Sistemas Operacionais Arquivos

Organização e Arquitetura de Computadores

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

Escalonamento no Linux e no Windows NT/2000/XP

Sistemas Distribuídos. Aleardo Manacero Jr.

Sistemas Operacionais

Arquitetura de Computadores. Tipos de Instruções

1.2 Tipos de Sistemas Operacionais

Transcrição:

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

INTRODUÇÃO Em um sistema multitarefa os processos alternam sua execução segundo critérios de escalonamento estabelecidos pelo sistema operacional. Processos de aplicações concorrentes compartilham diversos recursos do sistema, como arquivos, registros, dispositivos de Entrada/Saída e áreas da memória. 2

INTRODUÇÃO O compartilhamento de recursos entre processos pode ocasionar situações indesejáveis, como processamento incorreto de programas Para evitar estas situações indesejáveis, os processos concorrentes devem ter suas execuções sincronizadas, a partir de mecanismos oferecidos pelo sistema operacional. 3

ESPECIFICAÇÃO DA CONCORRÊNCIA (FORK E JOIN) A primeira notação para a especificação da concorrência em um programa foram os comandos FORK e JOIN, introduzidos por Conway(1963) e Dennis e Van Horn(1966). 4

ESPECIFICAÇÃO DA CONCORRÊNCIA (FORK E JOIN) O programa A começa a ser executado e, ao encontrar o comando FORK, faz com que seja criado outro processo para a execução do programa B, concorrentemente ao programa A O comando JOIN permite que o programa A sincronize-se com o B, ou seja, quando o programa A encontrar o comando JOIN, só continuará a ser processado após o término da execução do programa B. 5

PROBLEMA DO COMPARTILHAMENTO DE RECURSOS Os sistemas operacionais multiprogramáveis executam processos concorrentemente. Como os processos concorrentes compartilham recursos do sistema (variável na memória principal ou arquivo no disco, por exemplo), isso pode ocasionar alguns problemas. O programa atualiza o saldo bancário de um cliente após um lançamento de débito ou crédito. O programa lê o registro do cliente no Arquivo Contas, lê o valor a ser depositado ou retirado e, em seguida, atualiza o saldo no Arquivo de contas. leitura atualização 6

PROBLEMA DO COMPARTILHAMENTO DE RECURSOS Processo 01 Processo 02 débito crédito Reg_Cliente ARQUIVO CONTAS leitura atualização 7

PROBLEMA DO COMPARTILHAMENTO DE RECURSOS Dois PROCESSOS atualizam SALDO de um mesmo CLIENTE O processo 1 (do primeiro funcionário) lê o registro do cliente e debita um valor no saldo do cliente; Antes de gravar o novo saldo do arquivo, o processo 2 (do segundo funcionário) lê o registro do mesmo cliente e credita um valor no saldo do cliente; Independentemente de qual dos processos atualize o saldo primeiro no arquivo, o dado gravado estará inconsistente. leitura atualização 8

PROBLEMA DO COMPARTILHAMENTO DE RECURSOS PROCESSO 01 : READ registro de Antônio saldo = 500 PROCESSO 01 : DEBITA 50,00 500-50 = 450 ANTES do PROCESSO 01 fazer um WRITE (Arq_Contas, Reg_Cliente) PROCESSO 02 : READ registro de Antônio saldo = 500 PROCESSO 02 : CREDITA 100,0 500 +100 = 600 PROCESSO 01: WRITE (Arq_Contas, Reg_Cliente): saldo = 450 PROCESSO 02: WRITE (Arq_Contas, Reg_Cliente): saldo = 600 (SALDO FINAL ERRADO) Processo 01 Processo 02 débito crédito Reg_Cliente ARQUIVO CONTAS 9

EXCLUSÃO MÚTUA (MUTEX) OBJETIVO Evitar que dois ou mais processos acessem um mesmo recurso simultaneamente. MECANISMO Enquanto o processo 01 estiver acessando um determinado recurso e processo 02 deve aguardar o término da utilização do recurso pelo primeiro processo REGIÃO CRÍTICA É a parte do código do programa onde é feito o acesso ao recurso compartilhado é denominada região crítica. EXCLUSÃO MÚTUA É garantir que os processos devem fazer acesso à região crítica de forma sincronizada, ou seja, proibir que dois ou mais processos entrem em suas regiões críticas ao mesmo tempo 10

EXCLUSÃO MÚTUA (MUTEX) Recurso compartilhado Região Crítica REGIÃO CRÍTICA É a parte do código do programa onde é feito o acesso ao recurso compartilhado é denominada região crítica. 11

PROBLEMA DO COMPARTILHAMENTO DE RECURSOS (RESOLVIDO COM CONTROLE DE ACESSO A REGIÃO CRÍTICA ) PROCESSO 01 : READ registro de Antônio saldo = 500 PROCESSO 01 : DEBITA 50,00 500-50 = 450 PROCESSO 01: WRITE (Arq_Contas, Reg_Cliente): saldo = 450 PROCESSO 02 : READ registro de Antônio saldo = 450 PROCESSO 02 : CREDITA 100,00 450+100 = 550 PROCESSO 02: WRITE (Arq_Contas, Reg_Cliente): saldo = 550 (SALDO FINAL CORRETO) Processo 01 Processo 02 débito crédito Reg_Cliente ARQUIVO CONTAS 12

DEADLOCK 13

DEADLOCK DEFINIÇÃO É a situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que nunca ocorrerá. É conseqüência, na maioria das vezes, do compartilhamento de recursos (dispositivos, arquivos e registros,etc) entre processos concorrentes onde a exclusão mútua é exigida. 14

PROCESSO 01 ESTÁ COM RECURSO 01 E AGUARDA O RECURSO 02 PROCESSO 02 ESTÁ COM RECURSO 02 E AGUARDA O RECURSO 03 PROCESSO 03 ESTÁ COM RECURSO 03 E AGUARDA O RECURSO 04 PROCESSO 04 ESTÁ COM RECURSO 04 E AGUARDA O RECURSO 01 DEADLOCK É a situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que nunca ocorrerá. 15

DEADLOCK SITUAÇÕES SIMULTÂNEAS PARA QUE OCORRA UM DEADLOCK Exclusão mútua: cada recurso (em uma região crítica) só pode estar alocado a um único processo em um determinado instante; Espera por recurso: um processo, além dos recursos já alocados, pode estar esperando por outros recursos. Não preempção: um recurso não pode ser liberado de um processo só porque outros processos desejam usar o mesmo recurso; Espera circular: um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa. 16

DEADLOCK (espera circular) Espera circular: um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa. 17

PREVENÇÃO DO DEADLOCK (É preciso garantir que uma das quatro condições necessárias para a sua existência nunca se satisfaça) Exclusão mútua: cada recurso só pode estar alocado a um único processo em um determinado instante; Prevenção: a ausência da exclusão mútua acaba com o problema do deadlock, porém gera os problemas já apresentados com relação ao compartilhamento de recursos. Espera por recurso: um processo, além dos recursos já alocados, pode estar esperando por outros recursos. Prevenção: processos que já possuem recursos garantidos não devem solicitar novos recursos. 18

PREVENÇÃO DO DEADLOCK (É preciso garantir que uma das quatro condições necessárias para a sua existência nunca se satisfaça) Não preempção: um recurso não pode ser liberado de um processo só porque outros processos desejam usar o mesmo recurso; Prevenção: permitir que um recurso seja retirado do processo no caso de outro processo necessitar do mesmo recurso. Espera circular: um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa. Prevenção: é forçar o processo a ter apenas um recurso por vez 19

CORREÇÃO DEADLOCK SOLUÇÃO 1 eliminar um ou mais processos envolvidos no deadlock e liberar os recursos. A escolha do processo a ser eliminado é feita, normalmente, de forma aleatória ou com base em algum tipo de prioridade MUITO UTILIZADO SOLUÇÃO 2 liberação de apenas alguns recursos alocados aos processos para outros processos, até que o ciclo de espera termine. É necessário que o sistema possa suspender um processo, liberar seus recursos e, após a solução do problema,retornar à execução do processo, sem perder o processamento já realizado. Gera um OVERHEAD muito grande. 20

SOLUÇÕES PARA EXCLUSÃO MÚTUA EXCLUSÃO MÚTUA É proibir que dois ou mais processos entrem em suas regiões críticas ao mesmo tempo 21

SOLUÇÕES PARA EXCLUSÃO MÚTUA SOLUÇÕES DE HARDWARE Desabilitar Interrupções Instrução test-and-set SOLUÇÕES DE SOFTWARE Algoritmos 1 o, 2 o, 3 o e 4 o propostos para implementar a exclusão mútua Algoritmo de DEKKER Algoritmo de PETTERSON 22

SOLUÇÕES PARA EXCLUSÃO MÚTUA Algoritmo de DEKKER Primeira solução de software que garantiu a exclusão mútua entre dois processos sem a incorrência de problemas foi proposta pelo matemático holandês T. Dekker. Tem como base no primeiro e quarto algoritmos. Algoritmo de PETTERSON O algoritmo proposto por G. L. Peterson G. L. Peterson apresenta uma solução para o problema da exclusão mútua entre dois processos que pode ser facilmente generalizada para o caso de N processos. Similar ao terceiro algoritmo 23

SINCRONIZAÇÃO CONDICIONAL Situação onde o acesso ao recurso compartilhado exige a sincronização de processos vinculado a uma condição de acesso. EXEMPLO CLÁSSICO Comunicação entre dois processos através de operações de gravação e leitura em um buffer, onde processos geram informações (processos produtores) utilizadas por outros processos (processos consumidores). enquanto um processo grava dados em um buffer, o outro lê os dados, concorrentemente. Os processos devem estar sincronizados a uma variável de condição, de forma que um processo não tente gravar dados em um buffer cheio ou realizar uma leitura em um buffer vazio. 24

MECANISMOS (Exclusão Mútua e Sincronização Condicional) SEMÁFOROS Mecanismos para implementação da exclusão mútua e sincronização condicional MONITORES Mecanismos para implementação da exclusão mútua e sincronização condicional TROCA DE MENSAGENS: Mecanismo de sincronização e comunicação entre processos 25

PROBLEMA DO PRODUTOR - CONSUMIDOR

Armazena quantidade de espaços preenchidos No BUFFER Armazena quantidade de espaços vazios No BUFFER Se emptycount =0 bloqueia a produção de itens Se fillcount =0 bloqueia a remoção de itens 29

NO LINUX, BAIXAR O AQUIVO prod-cons-sem.c IR PARA PASTA /home/aluno/downloads Executar os comandos baixo 30

31

ALGUÉM SEMPRE FICAR COM FOME

Bloqueia os filósofos que não pegaram garfos Se mutex =0 já existe alguém na região crítica, bloqueia (não pode entrar)

NO LINUX BAIXAR O AQUIVO jantarfilosofos.c IR PARA PASTA /home/aluno/downloads Executar os comandos baixo 38

39