A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA.

Apresentações semelhantes


Apresentação em tema: "Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA."— Transcrição da apresentação:

1 Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius cvalves@senacrs.edu.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS

2 Introdução o Programa executado por apenas um processo é dito de programa sequencial o Existe apenas um fluxo de controle o Programa concorrente é executado por diversos processos que cooperam entre si para realização de uma tarefa (aplicação) o Existem vários fluxos de controle o Necessidade de interação para troca de informações (sincronização) 2

3 Introdução o Emprego de termos o Paralelismo real: só ocorre em máquinas multiprocessadoras o Paralelismo “aparente” (concorrência): máquinas monoprocessadoras o Execução simultânea versus estar “em estado de execução” simultaneamente 3

4 Programação Concorrente o Composta por um conjunto de processos sequenciais que se executam concorrentemente o Processos disputam recursos comuns o e.g.: variáveis, periféricos, etc... o Um processo é dito de cooperante quando é capaz de afetar, ou ser afetado, pela execução de outro processo 4

5 Motivação para Programação Concorrente o Aumento de desempenho: o Permite a exploração do paralelismo real disponível em máquinas multiprocessadoras o Sobreposição de operações de E/S com processamento o Facilidade de desenvolvimento de aplicações que possuem um paralelismo intrínseco 5

6 Desvantagens da Programação Concorrente o Programação complexa o Aos erros “comuns” se adicionam erros próprios ao modelo o Diferenças de velocidade relativas de execução dos processos o Aspecto não determinístico o Difícil depuração 6

7 Especificação do paralelismo o Necessidade de especificar o paralelismo definindo: o Quantos processos participarão o Quem fará o que o Dependência entre as tarefas (Grafo) o Notação para expressar paralelismo o fork/wait (fork/join) o parbegin/parend 7

8 Fork/Wait 8 Processo BProcesso C Processo A fork B; fork C;... wait C; wait B; Bloqueado

9 Parbegin/Parend o Comandos empregados para definir uma sequência de comandos a serem executados concorrentemente o A primitiva parend funciona como um ponto de sincronização (barreira) 9 Processo B Processo C Processo A Parbegin Tarefa B; Tarefa C; Parend Bloqueado

10 Comentários Gerais o 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 o Processos paralelos podem ser executados em qualquer ordem o Duas execuções consecutivas do mesmo programa, com os mesmos dados de entrada, podem gerar resultados diferentes o Não é necessariamente um erro o Possibilidade de forçar a execução em uma determinada ordem 10

11 O problema do compartilhamento de recursos o A programação concorrente implica em um compartilhamento de recursos o Variáveis compartilhadas são recursos essenciais para a programação concorrente o Acessos a recursos compartilhados devem ser feitos de forma a manter um estado coerente e correto do sistema 11

12 Exemplo: relação produtor- consumidor (1) o Relação produtor-consumidor é uma situação bastante comum em sistemas operacionais o Servidor de impressão: o Processos usuários produzem “impressões” o Impressões são organizadas em uma fila a partir da qual um processo (consumidor) os lê e envia para a impressora 12

13 Exemplo: relação produtor- consumidor (1) 13 P1P1 P2P2 PnPn PCPC Produtores Consumidor

14 Exemplo: relação produtor- consumidor (2) o Suposições: o Fila de impressão é um buffer circular o 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 o Existência de um ponteiro (out) que aponta para a impressão que está sendo realizada 14

15 Exemplo: relação produtor- consumidor (2) 15 54321 P1P1 PdPd out in P2P2

16 Exemplo: relação produtor- consumidor (3) o Sequência de operações: o P1 vai imprimir; lê valor de in (5); perde processador o P2 ganha processador; lê valor de in (5); insere arquivo; atualiza in (6) o P1 ganha processador; insere arquivo (5); atualiza in (7) o Estado incorreto: o Impressão de P1 é perdida o Na posição 6 não há uma solicitação válida de impressão 16

17 Exemplo: relação produtor- consumidor (3) 17 outin 7654321 P1P1 PdPd P2P2

18 O problema da seção crítica o Corrida (race condition) o 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 o Seção crítica: o Segmento de código no qual um processo realiza a alteração de um recurso compartilhado 18

19 Necessidade da programação concorrente o Eliminar corridas o Criação de um protocolo para permitir que processos possam cooperar sem afetar a consistência dos dados o Controle de acesso a seção crítica: o Garantir a exclusão mútua 19 Exit_section Entry_section Seção crítica

20 Propriedades para exclusão mútua o Regra 1 - Exclusão mútua o Dois ou mais processos não podem estar simultaneamente em uma seção crítica o Regra 2 - Progressão o Nenhum processo fora da seção crítica pode bloquear a execução de um outro processo o Regra 3 - Espera limitada o Nenhum processo deve esperar infinitamente para entrar em uma seção crítica o Regra 4 o Não fazer considerações sobre o número de processadores, nem de suas velocidades relativas 20

21 Obtenção da exclusão mútua o Desabilitação de interrupções o Variáveis especiais do tipo lock o Alternância de execução 21

22 Desabilitação de Interrupções o Não há troca de processos com a ocorrência de interrupções de tempo ou de eventos externos o Desvantagens: o Poder demais para um usuário o Não funciona em máquinas multiprocessadoras (SMP) pois apenas a CPU que realiza a instrução é afetada (violação da regra 4) 22 Seção crítica CLI;Desliga interrupções STI;Ativa interrupções

23 Variáveis do tipo lock o Criação de uma variável especial compartilhada que armazena dois estados: o Zero: livre o 1: ocupado o Desvantagem: o Apresenta Race conditions 23 While (lock==1); lock=1; lock=0; Seção crítica

24 Alternância o Desvantagem o Teste contínuo do valor da variável compartilhada provoca o desperdício do tempo do processador (busy waiting) o Viola a regra 2 se a parte não crítica de um processo for muito maior que a do outro 24 while (TRUE) { while (turn!=0); critical_section(); turn=1; non_critical_section(); } while (TRUE) { while (turn!=1); critical_section(); turn=0; non_critical_section(); }

25 Implementação de mecanismos para exclusão mútua o Algorítmica: o Combinação de variáveis do tipo lock e alternância (Dekker 1965, Peterson 1981) o Primitivas: o Mutex o Semáforos o Monitor 25

26 Mutex o Variável compartilhada para controle de acesso a seção crítica o CPU são projetadas levando-se em conta a possibilidade do uso de múltiplos processos o Inclusão de duas instruções assembly para leitura e escrita de posições de memória de forma atômica. o CAS: Compare and Store o Copia o valor de uma posição de memória para um registrador interno e escreve nela o valor 1 o TSL: Test and Set Lock o Lê o valor de uma posição de memória e coloca nela um valor não zero 26

27 Primitivas lock e unlock o O emprego de mutex necessita duas primitivas 27 enter_region:tst register,flag cmp register,0 jnz enter_region ret leave_region:mov flag,0 ret lock(flag); unlock(flag); Seção crítica

28 Primitivas lock e unlock: problemas (1) o Busy waiting (spin lock) o Confiar no processo (programador) o Fazer o lock e o unlock corretamente o Inversão de prioridades 28 lock(m) unlock(m) Outros processos Troca de processo Bloqueado fazendo busy wait

29 Primitivas lock e unlock: problemas (2) o Solução: o Bloquear o processo ao invés de executar busy waiting o Baseado em duas novas primitivas o sleep: Bloqueia um processo a espera de uma sinalização o wakeup: Sinaliza um processo 29

30 Semáforos o Mecanismo proposto por Dijkstra (1965) o Duas primitivas: o P (Proberen, testar) o V (Verhogen, incrementar) o Semáforo é um tipo abstrato de dados: o Um valor inteiro o Fila de processo 30

31 Implementação de Semáforos o Primitivas P e V o Necessidade de garantir a atomicidade nas operações de incremento (decremento) e teste da variável compartilhada s.valor o Uso de mutex o Dependendo dos valores assumidos por s.valor o Semáforos binários: s.valor = 1 o Semáforos contadores: s.valor = n 31 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); }

32 Semáforos X Mutex o Primitivas lock e unlock são necessariamente feitos por um mesmo processo o Acesso a seção crítica o Primitivas P e V podem ser realizadas por processos diferentes o Gerência de recursos 32

33 Troca de Mensagens o Primitivas do tipo mutex e semáforos são baseadas no compartilhamento de variáveis o Necessidade do compartilhamento de memória o Sistemas distribuídos não existe memória comum o Novo paradigma de programação o Troca de mensagens o Primitivas o send e receive o RPC (Remote Procedure Call) 33

34 Primitivas send e receive (1) o Diferentes comportamentos em função da semântica das primitivas send e receive o Funcionamento básico: 34 Processo B Processo A send(dst, msg) Bloqueado recv(src, msg) Processo B Processo A recv(src, msg) Bloqueado send(dst, msg)

35 Primitivas send e receive (2) o Bibliotecas de comunicação o e.g. sockets, MPI, PVM, etc. o Grande variedade de funções o Ponto a ponto o Em grupo o Primitivas para testar status e andamento de uma comunicação o Diferentes semânticas o Bloqueante o Não bloqueante o Rendez vous 35

36 Remote Procedure Call (1) o Base de comunicação do DCE o Composto por : o núcleo executivo (run time) o Interfaces para a geração de aplicações (Interface de programação) 36

37 Remote Procedure Call (2) o Linguagem própria para descrever funções (chamada/definição) o Compilador (rpcgen) para gerar stubs e ligar com programa aplicativo o Comunicação é toda gerada pelo run-time de forma transparente 37 Call S Send ClienteServidor Recv Unpack return Pack SendRecv Unpack Stub (cliente)Stub (servidor) Run time wait Call Sreturn

38 Deadlock o 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 38

39 Condições para ocorrência de Deadlocks (1) o Para que ocorra um deadlock quatro condições devem ser satisfeitas simultaneamente: o 1. Exclusão mútua: o Todo recurso ou está disponível ou está atribuído a um único processo o 2. Segura/espera: o Os processo que detém um recurso podem solicitar novos recursos 39

40 Condições para ocorrência de Deadlocks (2) o 3. Recurso não preemptível: o Um recurso concedido não pode ser retirado de um processo por outro o 4. Espera circular: o 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 40 A R1R1 R2R2 B solicitação em uso solicitação

41 Estratégias para tratamento de deadlocks o Ignorar o Deteção e recuperação o Monitoração dos recursos liberados e alocados o Eliminação de processos o Impedir ocorrência cuidando na alocação de recursos o Algoritmo do banqueiro o Prevenção (por construção) o Evitar a ocorrência de pelo menos uma das quatro condições necessárias 41


Carregar ppt "Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA."

Apresentações semelhantes


Anúncios Google