Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduo
Processo cooperativo aquele que
A primeira opo alcanada atravs do uso de processos ou threads O acesso concorrente a dados compartilhados pode resultar em incosistncia de dados
podem:
Compartilhar
Introduo
Sabendo-se destes problemas
assegurar a execuo ordenada de processos cooperativos que compartilham um espao de endereamento lgico?
produtor-consumidor
Um processo produtor gera
comunicarem-se uns
com os outros e
sincronizarem suas
aes
O SO pode fornecer meios para que os processos cooperativos se comuniquem uns com os outros por intermdio de uma facilidade de comunicao interprocessos IPC
Se comunicarem e
escalonamento da CPU
um recurso passa
alternadamente de um processo P1 para outro processo P2, deixando um terceiro processo P3, bloqueado sem acesso ao recurso.
O por qu da Sincronizao
O acesso concorrente a dados
A manuteno da consistncia de dados requer mecanismos que assegurem a execuo ordenada e correta dos processos cooperantes. Os processos tm, pois, de ser sincronizados para impedir qualquer condio de corrida.
condition):
Situao em que vrios
processos acessam e manipulam dados compartilhados de uma forma simultnea, deixando os dados em um estado de (possvel) inconsistncia.
Exemplo
Considere o cdigo seguinte:
P1 Produtor .. Execute a
instruo counter ++
P2 Consumidor - Execute a
concorrentemente.
Qual o valor final ?
A instruo counter++ pode ser implementada em linguagem assembly do seguinte modo: register1 = counter register1 = register1 + 1 counter = register1 A instruo counter-- pode ser implementada como: register2 = counter register2 = register2 1 counter = register2
inicialmente o valor 5.
Um possvel entrelaamento de
producer: register1 = counter (register1 = 5) producer: register1 = register1 + 1 (register1 = 6) consumer: register2 = counter (register2 = 5) consumer: register2 = register2 1 (register2 = 4) producer: counter = register1 (counter = 6) consumer: counter = register2 (counter = 4)
2 - Readers/Writers Problem
vrios processos.
apenas lem os dados e outros que apenas escrevem modificando os dados. para que dados a serem lidos no estejam disponveis para serem alterados
Sincronizao necessria
P0 1
4 3 2
P3
P1 P2
por vrios processos, cada processo tem um segmento de cdigo, chamado de SEO CRTICA, no qual os dados compartilhados so acessados.
Problema assegurar que,
enquanto um processo est a executar na seo crtica, nenhum outro processo permitido executar na sua seo crtica.
processo de cada vez pode entrar e executar na seco crtica. 2. Progresso. Um processo a executar numa seco no-crtica no pode impedir outros processos de entrar na seco crtica.
processo que queira entrar numa seco crtica no deve ficar espera indefinidamente.
Neste ponto no podemos presumir nada sobre velocidade, prioridade ou nmero de processos
Hardware:
Recursos do SO
Monitores
Garante a excluso mtua, mas s aplicvel a 2 processos. No garante a progresso. Se um dos processos quiser entrar 2 vezes consecutivas na SC, no pode.
Processo 2
P2QuerEntrar = true; while P1QuerEntrar do if vez == 1 then { P2QuerEntrar = false; while vez == 1 ; {testa acesso} P2QuerEntrar = true; }; <executa seccao critica> vez = 1; {autoriza acesso ao outro processo} P2QuerEntrar = false; <executa resto do algoritmo>
Anlise do algoritmo: Garante excluso mtua, mas obriga a que o nmero de processos seja 2. Garante a progresso. No obriga alternncia estrita.
senha, o processo efetua um ciclo para determinar se o seu nmero de ordem o menor de todos.
Quando o nmero de
crtica, o processo executa a funo max que lhe atribui uma senha superior a todas as outras.
ordem (senha) for inferior ao de todos os outros, o processo entra na seo crtica.
Inibio de Interrupes
Permitir a um processo desligar
interrupes (Inibio de interrupes) antes de entrar em uma seo crtica e ligar as interrupes quando sair da seo crtica
Assim CPU no pode trocar processos Garante que um processo pode utilizar uma varivel compartilhada sem a interferncia de nenhum outro processo
Mas desligando interrupes vai dar muito trabalho Assim o computador no vai poder atender interrupes durante muito tempo. Pode ser que um processo mal escrito ou com erro implica que o computador nunca mais conseguir tratar de uma interrupo .. Crash Desvantagens e perigos so maiores que as vantagens
Semforos
Semforo: mecanismo de
Um semforo consiste numa varivel e numa fila de espera associada a um recurso. Esta fila contm todos os descritores dos processos bloqueados no semforo
um processo que espera a liberao de um recurso deve ser bloqueado, devendo a razo que o levou a bloquear ficar memorizada.
Semforos
Bloquear um processo num
semforo significa retir-lo do estado de execuo (running state) e mov-lo para a fila de processos bloqueados (waiting state) do respectivo semforo.
Desbloquear um processo o
mesmo que retir-lo da fila de processos bloqueados (waiting state) e inseri-lo na fila de processos executveis (ready state).
Exerccios
Site da disciplina... Enviar por e-mail:
roberto.franciscatto@gmail.com