Índice
Índice................................................................................................................
Mecanismo de sicronização e comunicação de processos
Semáforos...............................................................
Mecanismo de sicronização e comunicação de processos
Índice de figuras
fig. 1 Estrutura do monitor...........................
Mecanismo de sicronização e comunicação de processos
Desde a década 1960, com o surgimento dos sistemas multiprogramáveis,...
Mecanismo de sicronização e comunicação de processos
Descrever alguns problemas relacionados com a sincronização e comunic...
Mecanismo de sicronização e comunicação de processos
Sincronização e comunicação entre Processos
Sicronização
Seria imposs...
Mecanismo de sicronização e comunicação de processos
.
Fonte: Facol
Na figura-1 podemos ver o exemplo de dois processos co...
Mecanismo de sicronização e comunicação de processos
A troca de mensagens pode ser feita de duas maneiras a saber:
Comunic...
Mecanismo de sicronização e comunicação de processos
Na comunicação indireta, vários processos podem estar associados a ma...
Mecanismo de sicronização e comunicação de processos
2. Competição por recursos
Como os sistemas dispõem de recursos que t...
Mecanismo de sicronização e comunicação de processos
Não-preempção: um recurso não pode ser liberado de um processo só por...
Mecanismo de sicronização e comunicação de processos
Não-preempção.
Negar a condição de “Não-preempção” é uma estratégia a...
Mecanismo de sicronização e comunicação de processos
Semáforos
Segundo Dijkstra (1965), semáforo é um mecanismo de sicroni...
Mecanismo de sicronização e comunicação de processos
Fonte: UNIBAN
Níveis de planeamento do sistema operativo
Existem três...
Mecanismo de sicronização e comunicação de processos
Tadavia , toda vez que algum processo faz uma chamada a um procedimen...
Mecanismo de sicronização e comunicação de processos
Exemplos classicos de sincronização de processos
Problema do programa...
Mecanismo de sicronização e comunicação de processos
O problema dos filósofos é um exemplo clássico de sincronização de pr...
Mecanismo de sicronização e comunicação de processos
Conclusão
Problemas relacionados com sincronização e comunicação entr...
Mecanismo de sicronização e comunicação de processos
Bibliografia
http://www.anylogic.pl/fileadmin/Modele/Traffic/filozof/...
Próximos SlideShares
Carregando em…5
×

Relatório final so

336 visualizações

Publicada em

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
336
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
5
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Relatório final so

  1. 1. Índice Índice...........................................................................................................................................................1 Índice de figuras..........................................................................................................................................3 Introdução...................................................................................................................................................3 Objectivos....................................................................................................................................................4 Objectivo Geral........................................................................................................................................4 Objetivos específicos...............................................................................................................................4 Metodologia................................................................................................................................................5 Conceitos básicos........................................................................................................................................5 Processo..................................................................................................................................................5 Programa.................................................................................................................................................5 Sincronização e comunicação entre Processos............................................................................................6 Sicronização.............................................................................................................................................6 Comunicação ..........................................................................................................................................6 Memória compartilhada..........................................................................................................................6 Troca de Mensagens....................................................................................................................................7 .................................................................................................................................................................8 Comunicação indirecta............................................................................................................................8 Secção crítica...........................................................................................................................................9 Principais problemas a resolver com a sincronização..............................................................................9 Inanição.................................................................................................................................................10 Deadlock(Interblocagem)..........................................................................................................................10 Prevenção de Deadlocks........................................................................................................................11 Exclusão mútua......................................................................................................................................11 Espera por recurso (Hold and Wait) .....................................................................................................11 Não-preempção.....................................................................................................................................12 Espera circular.......................................................................................................................................12 Detecção e Recuperação...........................................................................................................................12 10.Gerenciamento Manual do deadlock....................................................................................................12
  2. 2. Mecanismo de sicronização e comunicação de processos Semáforos..................................................................................................................................................13 Sincronização Condicional.........................................................................................................................13 Sicronização Condicional utilizando semáforos.....................................................................................13 Níveis de planeamento do sistema operativo............................................................................................14 Monitores..................................................................................................................................................14 Exemplos classicos de sincronização de processos....................................................................................16 Problema do programa Conta_Corrente...............................................................................................16 10.1.Jantar dos Filósofos.......................................................................................................................16 Conclusão..................................................................................................................................................18 Bibliografia.................................................................................................................................................19 2
  3. 3. Mecanismo de sicronização e comunicação de processos Índice de figuras fig. 1 Estrutura do monitor........................................................................................................................15 Introdução Desde a origem do Homem foi sempre preocupação se comunicar, recorrendo a diferentes meios para o efeito. Seria extremamente difícil a vida dos seres vivos sem a comunicação. De modo similar, acontence com os processos dentro do sistema operativo. 3
  4. 4. Mecanismo de sicronização e comunicação de processos Desde a década 1960, com o surgimento dos sistemas multiprogramáveis, tornou-se possível estruturar as aplicações de modo que partes delas fossem executadas em concorrência. Processos de aplicações concorrentes compartilham diversos recursos do sistema, tais como arquivos, registos, dispositivos de entrada e saida de dados e área de memória. O tal compartilhamento de recursos entre processos pode ocasionar situações indesejáveis, capazes até de comprometer a execução das aplicações ou até mesmo do sistema como um todo caso a sincronização e comunicação entre processos não estiver implementada pelo sistema operacional. Objectivos Objectivo Geral Descrever os mecanismos de comunicação e sincronização de processos nos Sistemas operativos. Objetivos específicos Analisar como os processos se comunicam; Analisar as formas de sincronização dos processos; 4
  5. 5. Mecanismo de sicronização e comunicação de processos Descrever alguns problemas relacionados com a sincronização e comunicação entre processos; Analisar a resolução de problemas de sincronização e comunicação. Metodologia Consulta bibliográficas e sites de internet, livros e trabalhos de licenciatura; Supervisão feita pelo docente da cadeira; Consultas aos estudantes que já fizeram a cadeira; Discução das matérias no grupo. Conceitos básicos Processo Um processo é um conjunto de dados estruturados, interno ao sistema operativo, onde se inclui todas as informações sobre o estádo, ambiente de execução sobre os recursos utilizados e a respectiva contabilização. Um processo é a abstracção de execução de uma instância dum programa. Um programa ao ser executado pode correr mais de um processo. Programa Programa é um conjunto de algoritmos que tem como objectivo resolver um problema com o auxílio de computador. 5
  6. 6. Mecanismo de sicronização e comunicação de processos Sincronização e comunicação entre Processos Sicronização Seria impossível falar da sicronização sem falar da concorrência de processos, dado que a sincronização acontece quando há concorrência entre processos em aceder o processador e outros recursos escaços . Com o surgimento dos sistemas multiprogramáveis, onde múltiplos processos poderiam permanecer na memória e disputar o uso de um único processador surgiu a grande necessidade do sistema operativo fazer a gerência do processador e de todos os processos em curso. Concorrência é o princípio básico para projeto e implementação dos sistemas operacionais multiprogramáveis onde é possível o processador executar instruções aparentemente em simultaneo com operações de entrada (E) e saida (S). Quando um conjunto de processos colabora entre si para a execução de um algoritmo comum, é indispensável que haja mecanismos de sincronização que permitam controlar essa colaboração. A concorrência pela CPU por diversos programas é implementada de maneira que, quando um processo perde o uso do processador, outro processo é admitido pelo processador. O novo processo admitido pelo processador pode por sua vez passar o uso do processador para um novo processo ou retomar ao primeiro processo, O programa deverá continuar sua execução exatamente na instrução seguinte àquela em que havia parado, aparentando ao usuário que nada aconteceu. A este conjunto de acções chamamos comutação de contexto. Comunicação Muitas vezes, em uma aplicação concorrente, é necessário que os processos comuniquem entre si. A comunicação entre processos pode ser implementada como uso de diversos mecanismos, como variáveis compartilhadas ou troca de mensagens. Nesta situação, é necessário que os processos tenham a sua execução sicronizada pelo sistema operacional. Memória compartilhada Neste caso dois ou mais processos podem incluir a mesma memória no seu espaço de endereçamento, permitindo a comunicação entre eles. É o mecanismo mais rápido de comunicação entre processos pois não existem trocas de dados entre os processos, os dados mesmos dados são acessados pelos diversos processos catalizando assim a comunicação e evitando cópias redundantes. 6
  7. 7. Mecanismo de sicronização e comunicação de processos . Fonte: Facol Na figura-1 podemos ver o exemplo de dois processos concorrentes compartilhando um buffer para trocar informações através de operações de gravação e leitura, onde ambos necessitam aguardar que o buffer esteja pronto para realizar as respectivas operações. Mecanismos de Sincronização garantem a comunicação entre os processos concorrentes e o acesso aos recursos melhorando a eficiencia ao acesso ao dados e evitando problemas como a inanição que veremos algumas secções a seguir. Troca de Mensagens Também é um mecanismo de comunicação e sicronização entre processos, o sistema operacional possui um subsistema de mensagens que suporta esse mecanismo sem que haja a necessidade do uso de variáveis compartilhadas. Para que ocorra a comunicação entre os processos, deve existir um canal de comunicação, podendo ainda esse meio ser um buffer ou um link de uma de uma rede decomputadores. Os processos cooperativos podem fazer uso de um buffer para trocar mensagens através de duas rotinas: SEND (transmissor, mensagem) e RECEIVE (receptor, mensagem). A rotina SEND permite o envio de uma mensagem para um processo receptor, enquanto que a rotina RECEIVE permite o recebimento de mensagem enviada por um processo transmissor. 7
  8. 8. Mecanismo de sicronização e comunicação de processos A troca de mensagens pode ser feita de duas maneiras a saber: Comunicação direta e a comunicação indireta. Comunicação directa entre dois processos exige que ao enviar ou receber uma mensagem , o processo enderece de uma forma explicita o nome do processo receptor ou transmissor. De salientar que este tipo de comunicação é só permitida a troca de mensagens entre dois processos. Fonte: UNIBAN Comunicação indirecta A comunicação indireta entre processos utiliza uma área compartilhada, onde as mensagens podem ser colocadas pelo transmissor e retiradas pelo receptor. Esse tipo de buffer é conhecido com mailbox ou port e as suas características, como identificar e capacidade de armazenamento de mensagens, são definidas no momento da criação. 8
  9. 9. Mecanismo de sicronização e comunicação de processos Na comunicação indireta, vários processos podem estar associados a mailbox, e os parametros dos procedimentos SEND e RECEIVE passam a ser nomes de mailbox e não mais nomes de processos. Fonte: UNIBAN Independentemente do mecanismo de comunicação adoptado, processos que estão trocando mensagens devem ter suas execuções sicronizadas em funcão do fluxo de mensagens; um processo não pode tratar uma mensagem até que esta tenha sido enviada por outro processo, ou então receber uma mesma mensagem mais de uma vez. Secção crítica É uma área de código de um algoritmo que acessa um recurso compartilhado que não pode ser acedido concorrentemente por mais de uma linha de execução. Seu objetivo é tornar a operação sobre o recurso compartilhado atômica. Algum mecanismo de sincronização é necessário para implementar a entrada e a saída duma região crítica para assegurar o uso exclusivo, como por exemplo um semáforo. Uma região crítica é geralmente usada quando um programa multitarefa deve atualizar diversas variáveis relacionadas sem que outra linha de execução faça modificações conflitantes nos dados. Principais problemas a resolver com a sincronização 1. Cooperação entre processos É necessária quando um processo espera que outro lhe assinale a conclusão da execução de uma determinada operação; 9
  10. 10. Mecanismo de sicronização e comunicação de processos 2. Competição por recursos Como os sistemas dispõem de recursos que têm de ser utilizados em exclusividade ou cujo número é limitado, a sincronização deve garantir que a gestão dos recursos seja correcta; Inanição Inanição é a situação em que um processo nunca é executado, como por exemplo, no escalonamento por prioridade, os processos com prioridade maior vão sempre ser executados, e quando um processo acaba outro entra com maior prioridade, sendo assim os processos com menor prioridade não vão ter nenhum progresso na execução de sua tarefa. Nota: Uma solução para esta situação é a delegação de um tempo máximo de espera Deadlock(Interblocagem) Deadlock é a situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que não ocorrerá. Esta situação é originada na maioria das vezes, do compartilhamento de recursos, como dispositivos, arquivos e registos, entre processos concorrentes onde a exclusão mútua é exigida. Fonte: UNIBAN Para que ocorra uma situação de Deadlock, existem quatro (4) condições necessárias a saber: Exclusão mútua: cada recurso 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. 10
  11. 11. Mecanismo de sicronização e comunicação de processos Não-preempção: um recurso não pode ser liberado de um processo só porque outros processos desejam o mesmo recurso. Espera circular: um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa. Os problemas de deadlock existem em qualquer sistema multiprogramável, no entanto as soluções a implementar devem considerar o tipo de sistema e o impacto em seu desempenho. Prevenção de Deadlocks Pelo que vimos das quatro (4) condições para a ocorrencia de Deadlock, estas devem ocorrer simultaneamente. Isto quer dizer que se garantirmos que somente uma delas não possa ocorrer, estaremos prevenindo que não ocorra Deadlock em um determinado sistema. Em seguida analisemos as quatro condições separadamente. Exclusão mútua. A condição de exclusão mútua não deve ser negada, pois dois processos acessando um recurso simultaneamente poderiam levar o sistema a uma sitação de caos. Podemos tomar como exemplo para esta situação dois processos acessando uma mesma impressora ao mesmo tempo, aqui a solução é utilizar o sistema de spool, onde um único processo de spool acessa directamente a impressora e daí não acessa um outro recurso, dado que os processos não impremem directamente e o processo de spool acessa somente o recurso impressora. No entanto o problema é que nem todos os recursos podem ser alocados via spoolng. Espera por recurso (Hold and Wait) A primeira estratégia Havender requer que todos os recursos que um processo precisa devem ser requesitados de uma única vez. Sistema deve liberar os recursos segundo uma política “tudo ou nada”. Se todos os recursos que o processo requisitou estão disponíveis, então o sistema pode alocá-los todos de uma vez ao processo, se acontecer ao contrário o processo deve esperar até que todos eles estejam disponíveis. No entanto enquanto o processo espera ele não deve deter nenhum recurso, assim a condição “hold and wait” é negada e deadlocks não podem ocorrer. Esta solução parece ser boa, mas pode levar a um sério despedício de recursos. E outro grande problema é a possibilidade de um processo requisitando todos os seus recursos de uma só vez ficar indefinidamente esperando, se outros processos estiverem usando os recursos que ele deseja com muita frequência mas de qualque forma, esta abordagem evita deadlocks 11
  12. 12. Mecanismo de sicronização e comunicação de processos Não-preempção. Negar a condição de “Não-preempção” é uma estratégia ainda pior do que a anterior. Para vários recursos como uma impressora, não é interessante que um processo os perca durante seu uso. Espera circular A condição Espera circular “Circular Wait” pode ser eliminada de várias formas. Uma maneira é estabelecer uma regra que diga que um processo só pode alocar um único recurso em um dado momento. Se ele precisar de um segundo recurso deve liberar primeiro. Detecção e Recuperação Alguns sistemas estão desenhados para permitir que a alocação de recursos prossiga sem grandes intervenções, em vez disso, o sistema verifica periodicamente se existe a possibilidade de surgir um deadlock, quer periodicamente, quer sempre que certos eventos ocorram. Um aspecto negativo desta abordagem reside em determinar quando o algoritmo de detecção deve ser executado. Isto deve-se ao facto de que se é esecutado muitas vezes, simplesmente torna o sistema demasiado lento, mas se não é executado vezes suficientes os processos em Deadlock e os recursos do sistema ficam entrelaçados de uma maneira não produtiva até que o sistema seja recuperado. Este problema é devido à presença de um Deadlock resultar da não ocorrência de eventos em vez de executar algum evento excepcional que possa disparar a execução do algoritmo de detecção. Na estratégia do algoritmo de detecção surgem duas fases, a detecção, que verifica se ocorre uma situação de Deadlock, e a segunda fase, recuperação, que surge após o Deadlock se ter verificado e que resulta no desbloqueio dos recursos, por destruição dos processos que bloqueavam. Esta é a estratégia mais utilizada para tratar uma situação de Deadlock. 10. Gerenciamento Manual do deadlock Muitos dos sistemas actuais deixam para o usuário a função de detectar um Deadlock, que através da utilização rotineira o usuário apercebe-se devido ao tempo que se acha necessário, para que o processo seja executado, já ter sido largamente ultrapassdo, ficando a descrição do usuário achar se os processos que entraram em Deadlock, e tentar resolver a situação recorrendo a ferramentas dos sistemas ou que a máquina fornecem, como por exemplo, e utilizando em última instância, a reinicialização do sistema. O padrão em que os recursos são requisitados, adquiridos e ficam em Deadlock determina quando o sistema entra em Deadlock. Um processo bloqueado é incapaz de mudar o estado de um sistema, pois ele não consegue causar qualquer transição para além do estado corrente. 12
  13. 13. Mecanismo de sicronização e comunicação de processos Semáforos Segundo Dijkstra (1965), semáforo é um mecanismo de sicronização que permite implementar de forma simples, a exclusão mútua e a sicronização condicional entre processos. Hoje em dia, a maioria das linguagens de programação disponibiliza rotinas para o uso de semáforos. Os semáforos são classificados em dois tipos: Semáforos binários- que só assumem os números binários 0 e 1 Semáforos Contadores- que podem assumir qualquer valor inteiro positivo além do zero. Sincronização Condicional Sincronização Condicional é uma situação onde o acesso ao recurso compartilhado exige a sicronização de processos vinculadas a uma condição de acesso dado que um recurso pode não se encontrar pronto para o uso, devido a uma condição específica. Nesse caso, o processo que deseja acessá-lo deverá continuar a espera até que o recurso esteja disponível. Sicronização Condicional utilizando semáforos Além de permitir a implementação da exclusão mútua, os semáfros podem ser utilizados nos casos onde a sicronização condicional é exigida. Geralmente esse tipo de sicronização ocorre quando um processo solicita uma operação de Entrada/Saida, o pedido faz com que o processo execute uma instrução DOWN no semáfro associado ao evento e fique no estado de espera, até que a operação seja completada. E quando a operação termina, a rotina de tratamento da interrupção executa um UP no semáfro, libertando o processo do estado de espera. Os semáforos são uma solução eficiente para assegurar a exclusão mútua no acesso a recursos. Um semáforo é constituído por uma variável de controlo inteira e por uma lista de processos. O conteúdo da variável reflecte a quantidade de recursos disponíveis no sistema. A primitiva Esperabloqueia um processo quando a variável do semáforo tem, à partida, o valor zero. O contexto do processo é colocado na fila de processos do semáforo e o seu estado passa a bloqueado. A primitiva Assinalarincrementa a variável de controlo, se não existirem processos bloqueados, ou torna executável um processo. 13
  14. 14. Mecanismo de sicronização e comunicação de processos Fonte: UNIBAN Níveis de planeamento do sistema operativo Existem três níveis de planeamento do sistema operativo a saber: Nível alto: decide que trabalhos são candidatos a converter-se em processos que competem pelos recursos do sistema. Nível médio: decide quais são os processos suspensos ou reativos. Nível baixo: decide qual dos processos (que foram listados pelos outros dois níveis de planeamento) é que deve ter a oportunidade de executar na unidade central de processamento. Monitores Monitores são mecanismos de sicronização de alto nível que tornam mais simples o desenvolvimento de aplicações concorrentes. Estes mecanismos são estruturados em função de serem implementados pelo compilador, possibilitando que o desnvolvimento de programas concorrentes fique mais fácil e menores chances de erros. O monitor é formado por procedimentos e variáveis encapsulados dentro de um módulo, implementando de forma automática a exclusão mútua entre os procedimentos declarados. 14
  15. 15. Mecanismo de sicronização e comunicação de processos Tadavia , toda vez que algum processo faz uma chamada a um procedimento, o monitor verifica se já existe outro processo executando algum procedimento do monitor, caso exista o processo ficará aguardando a sua vez em uma fila de entrada. A implementação da exclusão mútua via monitores não é implementada directamente pelo programador, assim como no caso do uso dos semáfros, o próprio sistemas operacionais compilador é que se encarrega de garantir a exclusão mútua entre procedimentos previamente definidos. fig. 1 Estrutura do monitor Fonte: UNIBAN Os processos cooperativos podem fazer uso de um buffer para trocar mensagens através de duas rotinas: SEND (receptor, mensagem) e RECEIVE (transmissor, mensagem). A rotina SEND permite o envio de uma mensagem para um processo receptor, enquanto que a rotina RECEIVE permite o recebimento de mensagem enviada por um processo transmissor. 15
  16. 16. Mecanismo de sicronização e comunicação de processos Exemplos classicos de sincronização de processos Problema do programa Conta_Corrente Que atualiza o saldo bancário de um cliente após um lançamento de débito ou crédito no arquivo de contas correntes. Neste arquivo são armazenados os saldos de todos os correntistas do banco. O programa lê o registro do cliente no arquivo, lê o valor a ser depositado ou retirado e, em seguida, atualiza o saldo no arquivo de contas. Ex: PROGRAM Conta_Corrente; . . READ (Arq_Contas, Reg_Cliente); READLN (Valor_Dep_Ret); Reg_Cliente.Saldo := Reg_Cliente.Saldo + Valor_Dep_Ret; WRITE (Arq_Contas, Reg_Cliente); . END. 10.1. Jantar dos Filósofos fig. 8 Mesa dos filósofos 16
  17. 17. Mecanismo de sicronização e comunicação de processos O problema dos filósofos é um exemplo clássico de sincronização de processos. Nesse problema, há uma mesa com cinco pratos e cinco garfos fig.7, onde os filósofos podem sentar, comer e pensar. Toda vez que um filósofo para de pensar e deseja comer, é necessário que ele utilize dois garfos, posicionados à sua direita e à sua esquerda. Existem várias soluções para resolver o problema dos filósofos, entre elas: • Limitar o acesso à “sala” a N-1 filósofos (fica sempre pelo menos 1 garfo livre). semaforo_t garfo[5] = {1, 1, 1, 1, 1}; semaforo_t sala = 4; filosofo(int id) { while (TRUE) { pensar(); esperar(sala); esperar(garfo[id]); esperar(garfo[(id+1)%5]); comer(); assinalar(garfo[id]); assinalar(garfo[(id+1)%5]); assinalar(sala); } } 17
  18. 18. Mecanismo de sicronização e comunicação de processos Conclusão Problemas relacionados com sincronização e comunicação entre processos, podem ser resolvidos com soluções implementandas a nível do Hardware ou a nível do Software. No presente trabalho foram descritas várias soluções quer do hardware quer de software. A ausencia de mecanismos de sincronização e comunicação nos SO pode pode ocasionar situações indesejáveis, capazes até de comprometer a execução das aplicações ou até mesmo do sistema como um todo. Soluções para problemas de sincronização e comunicação entre processos vem sendo aprimorados ao longo dos anos com objectivo principal que e de executar as aplicações de forma concorrente partilhando recursos que os sistemas computacionais mas sem comprometer a performance dos sistemas computacionais. 18
  19. 19. Mecanismo de sicronização e comunicação de processos Bibliografia http://www.anylogic.pl/fileadmin/Modele/Traffic/filozof/Dining%20Philosophers%20-%20Hybrid %20Applet.html http://www.doc.ic.ac.uk/~jnm/concurrency/classes/Diners/Diners.html http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/deadlock.html http://users.erols.com/ziring/diningAppletDemo.html UNIBAN, Sincronização e Comunicação entre Processos 19

×