19
Í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

Relatório final so

Embed Size (px)

Citation preview

Í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

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

Mecanismo de sicronização e comunicação de processos

Índice de figurasfig. 1 Estrutura do monitor........................................................................................................................15

IntroduçãoDesde 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

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 GeralDescrever os mecanismos de comunicação e sincronização de processos nos Sistemas operativos.

Objetivos específicosAnalisar como os processos se comunicam;

Analisar as formas de sincronização dos processos;

4

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.

MetodologiaConsulta 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

ProcessoUm 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.

ProgramaPrograma é um conjunto de algoritmos que tem como objectivo resolver um problema com o auxílio de

computador.

5

Mecanismo de sicronização e comunicação de processos

Sincronização e comunicação entre Processos

SicronizaçãoSeria 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 compartilhadaNeste 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

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 MensagensTambé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

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 indirectaA 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

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ção1. 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

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çãoInaniçã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

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 DeadlocksPelo 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

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 circularA 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çãoAlguns 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 deadlockMuitos 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

Mecanismo de sicronização e comunicação de processos

SemáforosSegundo 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 CondicionalSincronizaçã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áforosAlé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

Mecanismo de sicronização e comunicação de processos

Fonte: UNIBAN

Níveis de planeamento do sistema operativoExistem 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.

MonitoresMonitores 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

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

Mecanismo de sicronização e comunicação de processos

Exemplos classicos de sincronização de processos

Problema do programa Conta_CorrenteQue 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

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 menos1 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

Mecanismo de sicronização e comunicação de processos

ConclusãoProblemas 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

Mecanismo de sicronização e comunicação de processos

Bibliografiahttp://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