Title: Sistemas Operacionais
1Sistemas Operacionais
- Processos
- Plano de Apresentação
- O Modelo de Processo
- Definição
- Características
- Hierarquia
- Implementação
- Estados
- Transição de Estados
- O Modelo de Comunicação
- Comunicação Interprocessos
- Condição de competição
- Seções críticas
- Comunicação Interprocessos
- Exclusão mútua
- solução de software
- TSL
- Primitivas de comunicação
- sleep/wakeup
- semáforos
- contadores de eventos
- Monitor
- Problemas Clássicos
2O Modelo de Processo
- Definição
- Um processo é um programa que está sendo
executado - Um processo é uma atividade assíncrona
3O Modelo de Processo
- Características
- Processos seqüenciais
- Multiprogramação
- Processamento de Interrupçoes
- Tipos de Interrupções
- chamadas ao supervisor
- interrupções de dispositivos
- interrupções externas
- excessões
- falhas de máquina
- Chaveamento de processos
4O Modelo de Processo
- Hierarquia de Processos
- Processos de Sistema
- Processos de Usuário
- Hierarquia na Criação
- Processo PAI
- Processo FILHO
5O Modelo de Processo
- Implementação de Processo
- ContextoRepresentação de um processo por um
conjunto de dados - Registro descritor ou bloco de controleestado
do processo, contador de instruções,apontador
para pilha de execução,alocação de
memória,arquivos, dispositivoscontabilidade,
escalonamento
6O Modelo de Processo
- Estados de um Processo
- pronto
- bloqueado
- em execução
7O Modelo de Processo
- Transição de Estado de um Processo
- despacho (procId) pronto?em execução
- tempoesgotado(procId) em execução ?pronto
- bloqueio(procId) em execução ?bloqueado
- desbloqueio(procId) bloqueado ?pronto
8O Modelo de Comunicação
9Comunicação Interprocessos
- Condição de competição
- Seções críticas
- Exclusão mútua
- espera ocupado
- Primitivas de comunicação
- espera bloqueado
- Monitor
- Problemas Clássicos
10Comunicação Interprocessos
- Exclusão Mútua
- Desabilitando interrupções
- Controlando por software(construção
MUTEXBEGIN/MUTEXEND) - processo p1 processo p2faça até acabar faça
até acabar calcule calcule MUTEXBEGIN
MUTEXBEGIN acesse RC acesse RC
MUTEXEND MUTEXEND calcule calcule
fim. fim.
11Comunicação Interprocessos
- Exclusão Mútua
- MUTEXBEGIN/MUTEXEND
- variáveis de bloqueioMUTEXBEGIN enquanto
(ocupado) faça ocupado VMUTEXEND ocupad
o F - alternância estritaMUTEXBEGIN enquanto (vez
MinhaVez) faça MUTEXEND Vez VezOutro
12Comunicação Interprocessos
- Exclusão Mútua
- MUTEXBEGIN/MUTEXEND
- solução de PetersonMUTEXBEGIN necessidade(minha
) V enquanto (necessidade(outro)) faça se
vez ? minha então faça necessidade(minha)
F enquanto (vez ? minha) faça
necessidade(minha) V fim
fimMUTEXEND necessidade(minha) F vez
outro
13Comunicação Interprocessos
- Exclusão Mútua
- instrução TSL(Test and Set Lock)
- MUTEXBEGINTESTANDSET(ocupado) enquanto
(codigo) faça TESTANDSET(ocupado)
fimMUTEXEND ocupado F
14Comunicação Interprocessos
- sleep/wakeup
- semáforos
- contadores de eventos
- monitores
- passagem de mensagens
- outras
15Primitivas de Comunicação
- lock/unlockdeclare (g) gatelock
(g)...unlock(g) - sleep/wakeupblock/wakeupsleep...wakeup(p)
16Primitivas de Comunicação
- Semáforosdeclare (s) semaphore initial
(i)P(s) / espera até que sgt0 e então
decrementa s /...V(s) / incremanta s /
17Primitivas de Comunicação
- Contadores de eventosdeclare (e)
event_counterRead(e) / retorna o valor atual
de e /Advance(e) / incrementa e
/Await(e,v) / espera que e tenha um valor
igual ou supeior a v /declare (e)
eventCompletion(e) ... / true or false
/...call p event(e)wait(e)
18Monitor
- Construção de concorrência
19Monitor Problemas Clássicos
- Controle de um Recurso
- resourceMonitor declare(in_use) bit
declare(available) condition do in_usefalse
end do acquireEntry if in_use then
wait(available) in_usetrue
end acquire releaseentry
in_usefalse signal(available) end
release end resource
20Monitor Problemas Clássicos
- O BUFFER Circular
- CircularBuffer Monitor declare(Buffer(5))cha
racter(80)varying declare(head,tail,Buffers,
Full)fixed declare(BufferVacant,BufferOccupied
)condition do Head1 Tail1 Buffers5
Full0 end Spool Entry(Contents)
... end Spool UnSpool
Entry(Contents) ... end UnSpool
end CircularBuffer
21Monitor Problemas Clássicos
- O BUFFER Circular (cont)
- Spool Entry(Contents) declare(Contents)chara
cter()varying if FullBuffers then
wait(BufferVacant) Buffer(Tail)Contents
Tailmod(Tail,Buffers)1 FullFull1
signal(BufferOccupied) end Spool
22Monitor Problemas Clássicos
- O BUFFER Circular (cont.)
- UnSpool Entry(Contents) declare(Contents)cha
racter()varying if Full0 then
wait(BufferOccupied) ContentsBuffer(Head)
Headmod(Head,Buffers)1 FullFull-1
signal(BufferVacant) end UnSpool
23Monitor Problemas Clássicos
- Leitores/Escritores
- FileAccess Monitor declare(true,false)bit
declare(Reading)bit declare(activeWriter)bi
t declare(OkToRead,OkToWrite)condition
do true1b false0bReading0
activeWriterfalse end
24Monitor Problemas Clássicos
- Leitores/Escritores (cont.)
- StartRead Entry if activeWriter?empty
(OkToWrite) then wait(OkToRead)
ReadingReading1 signal(OkToRead)
end StartRead EndRead Entry
ReadingReading-1 if Reading0 then
signal(OkToWrite) end EndRead
25Monitor Problemas Clássicos
- Leitores/Escritores (cont.)
- StartWrite Entry if
Reading?0activeWriter then
wait(OkToWrite) activeWritertrue
end StartWrite EndWrite Entry
activeWriterfalse if ?empty(OkToRead)
then signal(OkToRead) else
signal(OkToWrite) end EndWrite end
FileAccess