3. 3
Os sistemas de computadores têm inúmeros recursos adequados ao uso
de somente um processo a cada vez. Entre os exemplos comuns estão
impressoras, unidades de fita e entradas nas tabelas internas do
sistema.
Se dois processos quiserem escrever simultaneamente na mesma
impresso haverá um impasse. Tentativa de dois processos usarem a
mesma entrada da tabela os sistema de arquivos consequentemente
conduzira a um sistema de arquivo corrompido, todos os sistemas
operacionais devem ser capazes de garantir temporariamente, o acesso
exclusivo de um processo a certos recursos.
DEADLOCKS
4. quando um processo não tem acesso exclusivo a um recurso do
sistema, a uma chance de existir uma concorrência entre dois processos,
um impasse, situação onde os processos ficam bloqueados e
permanecem bloqueados para sempre, isso é chamado Deadlock.
4
DEADLOCKS
5. A sequencia de eventos necessários ao uso de um determinado
recurso é dada abaixo de maneira abstrata.
• Executar
• Liberar recurso
• Ser acordado
Caracterizando um Deadlock
Exclusão Mutua; cada recurso alocado apenas em um processo por vez ou
livremente; Manter e esperar: processos mantendo recursos podem requisitar
recursos adicionais; sem preempção: um recurso previamente garantido não
pode ser retirado do processo; Espera circular: deve haver uma cadeia circular
de dois ou mais processos, cada um esta esperado por recurso mantido pelo
próximo membro da cadeia.
5
DEADLOCKS
7. 7
DEADLOCKS
Estratégias para tratar Deadlocks
Assegurar através da prevenção que o sistema nunca vai entrar em estado de
deadlock; permitir que o sistema em estado de deadlock então detectar e recuperar;
evitar através de alocação cuidadosa dos recursos; ignorar o problema e fazer de conta
que os deadlocks nunca ocorrem no sistema.
8. A comunicação entre processos acontece quando dois ou mais
processos precisam se comunicar, ou seja, compartilhar dados entre si.
Um exemplo é o envio de arquivos para impressão.
É através da utilização de recursos comuns entre os processos
que geralmente se dá a comunicação. Para ocorrer a comunicação entre
os processos é necessário um mecanismo bem estruturado. Temos como
exemplos os buffers, os semáforos e a memória compartilhada.
8
COMUNICAÇÃO DE PROCESSOS
9. BUFFERS E OPERAÇÕES DE SLEEP E WAKEUP
Buffer é uma área de dados de tamanho fixo que se comporta como
uma reservatório temporário. No problema produtor-consumidor é utilizado um
buffer por dois processos distintos. O processo produtor coloca informações no
buffer enquanto o processo consumidor as retira de lá.
Tanto o buffer como a variável que controla a quantidade de dados
que o buffer contém suas regiões críticas, portanto deveriam ter seu acesso
limitado através de primitivas de exclusão mútua, desde que isto não
impusesse esperas demasiadamente longas aos processos envolvidos.
9
COMUNICAÇÃO DE PROCESSOS
10. BUFFERS E OPERAÇÕES DE SLEEP E WAKEUP
Dado que o buffer tem um tamanho limitado e fixo podem ocorrer
problemas tais como:
o produtor não pode colocar novas informações no buffer porque ele já
está cheio; ou
o consumidor não pode retirar informações do buffer porque ele está
vazio.
10
COMUNICAÇÃO DE PROCESSOS
11. BUFFERS E OPERAÇÕES DE SLEEP E WAKEUP
Nestes casos tanto o produtor como o consumidor
poderiam ser adormecidos, isto é, ter sua execução suspensa, até
que existisse espaço no buffer para que o produtor coloque novos
dados ou existam dados no buffer para o consumidor possa retirá-
los. Uma tentativa de solução deste problema utilizando as
primitivas sleep e wakeup.
11
COMUNICAÇÃO DE PROCESSOS
12. Toda civilização, velha ou nova, precisa de energia para sua sobrevivência.
A fonte de energia da Primeira Onda provinha de animais, pessoas e
recursos da natureza.
A fonte de energia da Segunda Onda provinha do carvão de pedra, gás,
petróleo (fontes não renováveis).
Pela primeira vez uma civilização passou a viver do capital da natureza em
vez de apenas viver do rendimento que ela fornecia.
12
COMUNICAÇÃO DE PROCESSOS
SEMÁFOROS
Uma solução proposta pelo Dijkstra para a resolução do
problema produtor-consumidor, seria a utilização de variáveis inteiras a
fim de controlar o número de sinais wakeup para uso futuro. Estas
variáveis foram denominadas semáforos, e sobre elas estabeleceu-se
duas diferentes operações: P (conhecida também como Down) e V
(conhecida também como Up), que são generalizações das operações
sleep e wakeup.
13. Toda civilização, velha ou nova, precisa de energia para sua sobrevivência.
A fonte de energia da Primeira Onda provinha de animais, pessoas e
recursos da natureza.
A fonte de energia da Segunda Onda provinha do carvão de pedra, gás,
petróleo (fontes não renováveis).
Pela primeira vez uma civilização passou a viver do capital da natureza em
vez de apenas viver do rendimento que ela fornecia.
13
COMUNICAÇÃO DE PROCESSOS
SEMÁFOROS
Os semáforos são frequentemente utilizados para
sincronização de processos, ou seja, são utilizados para garantir a
ocorrência de certas sequências de eventos ou para impedir que
outras sequências nunca ocorram ou para que ocorram de uma forma
específica.
14. 14
COMUNICAÇÃO DE PROCESSOS
MEMÓRIA COMPARTILHADA
A memória compartilhada é um mecanismo frequentemente
utilizado para a comunicação entre processos diferentes onde uma
região de memória é reservada para uso comum dos processos
envolvidos na comunicação. A área de memória reservada para os
processo ´e semelhante a um buffer, mas nesta situação todos os
processos envolvidos podem escrever e ler neste buffer.
15. 15
COMUNICAÇÃO DE PROCESSOS
MEMÓRIA COMPARTILHADA
De forma geral, a solução é semelhante aquela do problema
de produtores e consumidores, aplicada a n processos que podem
tanto ler ou escrever numa região de memória específica, sendo
frequentemente utilizada para passagem de mensagens entre
processos.
16. 16
COMUNICAÇÃO DE PROCESSOS
OUTROS MECANISMOS DE IPC
Contadores de eventos
Uma outra solução para o problema produtor-consumidor, proposta por
Reed e Kanodia, que assim como os semáforos, não é necessário obter a exclusão
mútua. Essa solução utiliza uma variável chamada contador de eventos que
possui três definições definidas:
read (E) - retorna o valor corrente de E.
advance (E) – incrementa, automaticamente, o valor de E de uma
unidade.
await (E, v) – espera que E tenha o valor igual ou superior a v.
17. 17
COMUNICAÇÃO DE PROCESSOS
OUTROS MECANISMOS DE IPC
Monitores
Um monitor é um conjunto de procedimentos, variáveis e
estruturas de dados, todas agrupadas em um módulo especial.
Somente um processo pode estar ativo dentro do monitor em um
instante.
18. 18
THREADS
Linha ou Encadeamento de execução, é uma forma de
um processo dividir a si mesmo em duas ou mais tarefas que podem
ser executadas concorrentemente. O suporte à thread é fornecido pelo
próprio sistema operativo (SO), no caso da linha de execução ao nível
do núcleo, ou implementada através de uma biblioteca de uma
determinada linguagem, no caso de uma User-Level Thread (ULT).
Uma thread permite, por exemplo, que o usuário de um programa
utilize uma funcionalidade do ambiente enquanto outras linhas de
execução realizam outros cálculos e operações.
19. REFERÊNCIAS
1. JANDL JR, Peter. Notas sobre sistemas operacionais. 2004.
2. TANENBAUM, Andrew S. Sistemas Operacionais Modernos. Pearson
Brasil, 2003.
19