Sincronização de Processos (1) - ppt carregar
PublicouHeloísa Ferraz Alterado mais de 5 anos atrás
Apresentação em tema: "Sincronização de Processos (1)"— Transcrição da apresentação:
1 Sincronização de Processos (1)
Condições de Corrida Condições de corrida são situações onde dois ou mais processos acessam dados compartilhados e o resultado final depende da ordem em que os processos são executados (o que, em última instância, é ditado pelo mecanismo de escalonamento do S.O.). Torna a depuração difícil. Condições de corrida são evitadas através da introdução de mecanismos de exclusão mútua. A exclusão mútua garante que somente um processo estará usando os dados compartilhados num dado momento. A parte do programa (trecho de código) que em que os dados compartilhados são acessados é denominada de região (ou seção) crítica. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
Exemplo 1 Procedure echo(); var	out, in: character; begin input (in, keyboard); out := in; output (out, display) end. P1 invoca echo() e é interrompido imediatamente após a conclusão da função input(). Suponha que x tenha sido o caractere digitado, que agora está armazenado na variável in. P2 é despachado e também invoca echo(). Suponha que y seja digitado (in recebe y), sendo então exibido no dispositivo de saída. P1 retoma a posse do processador. O caractere exibido não é o que foi digitado (x), pois ele foi sobreposto por y na execução do processo P2. Conclusão: o caractere y é exibido duas vezes. Essência do problema: o compartilhamento da variável global in. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
Exemplo 2 (1) Diretório de spooler com n entradas, cada uma capaz de armazenar um nome de arquivo. Servidor de impressão verifica se existem arquivos a serem impressos. Caso afirmativo, ele os imprime e remove os nomes do diretório. Variáveis compartilhadas: out, que aponta para o próximo arquivo a ser impresso; e in, que aponta para a próxima entrada livre no diretório. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
Exemplo 2 (2) PA e PB decidem colocar um arquivo no spool de impressão quase ao mesmo tempo. PA lê in, armazena o seu valor (7) na variável local next-free-slot e é interrompido. PB é escalonado, lê in e coloca o nome do seu arquivo no slot 7, atualizando in para 8. PA retorna e escreve o nome do seu arquivo na entrada 7 (valor de next-free-slot), apagando o nome colocado por PB. A variável next-free-slot passa a valer 8. O servidor não notará nada de errado (o diretório está consistente) e PB nunca realizará qualquer saída. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
Exemplo 3 Requisito: manter sempre o relacionamento de igualdade entre os itens de dados a e b. P1:	a := a + 1; b := b + 1; P2:	b := 2 * b; a := 2 * a; A execução concorrente abaixo não mantém esse requisito: a := a + 1; b := 2 * b; b := b + 1; a := 2 * a; Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
Concorrência Dificuldades: Compartilhamento de recursos globais. Gerência de alocação de recursos. Localização de erros de programação (depuração de programas). Ação necessária: Proteger os dados compartilhados (variáveis, arquivos e outros recursos globais). Promover o acesso ordenado (controle de acesso) aos recursos compartilhados  sincronização de processos. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
8 Interação de Processos (1)
Processos sem conhecimento uns dos outros: Não são especificamente projetados para trabalharem juntos. Os resultados de um processo são independentes das ações dos outros. Tipo de relacionamento: Competição O S.O. precisa resolver a disputa por recursos  existe uma interação indireta. Potenciais problemas: Acesso não controlado aos recursos (controle de exclusão mútua). Deadlock: (P1,R2) e (P2,R1),ambos precisam de (R1,R2). Starvation: alternância entre P1 e P3 em detrimento de P2. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
9 Interação de Processos (2)
Cooperação via compartilhamento Processos podem usar e alterar dados compartilhadas mas estão cientes de que outros processos pode acessar esses dados. Preocupação com a integridade dos dados compartilhados (coerência dos dados), além dos problemas de controle de exclusão mútua, deadlock e starvation ("inanição"). Os resultados de um processo podem depender de informações obtidas por outros. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
10 Interação de Processos (3)
Cooperação por comunicação Processos participam de um esforço comum na realização de uma tarefa. A comunicação provê uma maneira de sincronizar ou coordenar as várias atividades. Primitivas para o envio e recebimento de mensagens são providas como parte de uma linguagem de programação ou pelo kernel do sistema operacional. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
11 Interação de Processos (4)
Cooperação por comunicação (cont.) Como nada é compartilhado pelos processos não existem condições de corrida. Assim, existência de um mecanismo de exclusão mútua não é um requisito de controle. Pode ocorrer deadlock: Cada processo esperando por uma mensagem de um outro processo. Pode ocorrer starvation: Dois processos enviando repetitivamente mensagens um para o outro e um terceiro bloqueado, esperando por uma mensagem de um deles. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
12 Abordagens para Exclusão Mútua
Requisitos para uma boa solução: A apenas um processo é permitido estar dentro de sua R.C. num dado instante. Nenhum processo que executa fora de sua região crítica pode bloquear outro processo (ex: processo pára fora da sua R.C.). Nenhuma suposição pode ser feita sobre as velocidades relativas dos processos ou sobre o número de CPUs no sistema. Nenhum processo pode ter que esperar eternamente para entrar em sua R.C. ou lá ficar eternamente. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
Tipos de Soluções Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância estrita Algoritmo de Decker Algoritmo de Peterson Soluções de software com bloqueio Sleep / Wakeup, Semáforos, Monitores Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
Soluções com Busy Wait Busy wait = espera ativa ou espera ocupada. Basicamente o que essas soluções fazem é: Quando um processo quer entrar na sua R.C. ele verifica se a entrada é permitida. Se não for, ele espera em um laço (improdutivo) até que o acesso seja liberado. Ex: While (vez == OUTRO) do {nothing}; Conseqüência: desperdício de tempo de CPU. Problema da inversão de prioridade: Processo LowPriority está na sua R.C. e é interrompido. Processo HighPriority é selecionado mas entra em espera ativa. Nesta situação, o processo LowPriority nunca vai ter a chance de sair da sua R.C. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
15 Inibição de Interrupções
Usa um par de instruções do tipo DI / EI. DI = disable interrupt EI = enable interrupt O processo desativa todas as interrupções imediatamente antes de entrar na sua R.C., reativando-as imediatamente depois de sair dela. Com as interrupções desativadas, nenhum processo que está na sua R.C. pode ser interrompido, o que garante o acesso exclusivo aos dados compartilhados. Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
Exemplo Problema do produtor-consumidor (variável N indica quantos itens ainda podem ser colocados no buffer). Produtor	Consumidor DI	DI LDA N	LDA N DCR A	INC	A STA N	STA N EI	EI Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES
17 Problemas da Solução DI/EI
É desaconselhável dar aos processos de usuário o poder de desabilitar interrupções. Não funciona com vários processadores. Inibir interrupções por um longo período de tempo pode ter conseqüências danosas. Por exemplo, perde-se a sincronização com os dispositivos periféricos. OBS: inibir interrupções pelo tempo de algumas poucas instruções pode ser conveniente para o kernel (p.ex., para atualizar uma estrutura de controle). Sist. Operacionais /2 Prof. José Gonçalves - DI/UFES