Upload
internet
View
109
Download
1
Embed Size (px)
Citation preview
zeque - Grad. CC 1
Sistemas OperacionaisSistemas Operacionais ProcessosProcessos
Plano de ApresentaçãoPlano de Apresentação O Modelo de ProcessoO Modelo de Processo
DefiniçãoDefinição CaracterísticasCaracterísticas HierarquiaHierarquia ImplementaçãoImplementação EstadosEstados Transição de EstadosTransição de Estados
O Modelo de ComunicaçãoO Modelo de Comunicação Comunicação InterprocessosComunicação Interprocessos
Condição de competiçãoCondição de competição Seções críticasSeções críticas
Comunicação InterprocessosComunicação Interprocessos Exclusão mútuaExclusão mútua
solução de softwaresolução de software TSLTSL
Primitivas de comunicaçãoPrimitivas de comunicação sleep/wakeupsleep/wakeup semáforossemáforos contadores de eventoscontadores de eventos
MonitorMonitor Problemas ClássicosProblemas Clássicos
zeque - Grad. CC 2
O Modelo de ProcessoO Modelo de Processo
DefiniçãoDefinição Um processo é um Um processo é um
programa que está programa que está sendo executadosendo executado
Um processo é uma Um processo é uma atividade assíncronaatividade assíncrona
Dados Inicializados
Texto
heap
pilha do usuário
argv , envp
Área de usuário
pilha do processono kernel
bss-block started by symbolTabela de símbolos
Dados Inicializados
Texto
Cabeçalho
Número Mágico
UNIX:UNIX:ProgramasProgramasProcessosProcessos
Arquivo Executável
Espaço de Endereços
zeque - Grad. CC 3
O Modelo de ProcessoO Modelo de Processo
CaracterísticasCaracterísticas Processos seqüenciaisProcessos seqüenciais MultiprogramaçãoMultiprogramação Processamento de InterrupçoesProcessamento de Interrupçoes
Tipos de InterrupçõesTipos de Interrupções chamadas ao supervisorchamadas ao supervisor interrupções de dispositivosinterrupções de dispositivos interrupções externasinterrupções externas excessõesexcessões falhas de máquinafalhas de máquina
Chaveamento de processosChaveamento de processos
zeque - Grad. CC 4
O Modelo de ProcessoO Modelo de Processo
Hierarquia de ProcessosHierarquia de Processos Processos de SistemaProcessos de Sistema Processos de UsuárioProcessos de Usuário
Hierarquia na CriaçãoHierarquia na Criação Processo PAIProcesso PAI Processo FILHOProcesso FILHO
zeque - Grad. CC 5
O Modelo de ProcessoO Modelo de Processo
Implementação de ProcessoImplementação de Processo Contexto:Contexto:
Representação de um processo por um conjunto de Representação de um processo por um conjunto de dadosdados
Registro descritor ou bloco de controle:Registro descritor ou bloco de controle:estado do processo, contador de instruções,estado do processo, contador de instruções,apontador para pilha de execução,apontador para pilha de execução,alocação de memória,alocação de memória,arquivos, dispositivosarquivos, dispositivoscontabilidade, escalonamentocontabilidade, escalonamento
zeque - Grad. CC 6
O Modelo de ProcessoO Modelo de Processo
Estados de um ProcessoEstados de um Processo prontopronto bloqueadobloqueado em execuçãoem execução
zeque - Grad. CC 7
O Modelo de ProcessoO Modelo de Processo
Transição de Estado de um ProcessoTransição de Estado de um Processodespacho (procId): prontodespacho (procId): prontoem execuçãoem execução
tempoesgotado(procId): em execução tempoesgotado(procId): em execução prontopronto
bloqueio(procId): em execução bloqueio(procId): em execução bloqueadobloqueado
desbloqueio(procId): bloqueado desbloqueio(procId): bloqueado prontopronto
Em execução
Bloqueado Pronto
Chamada aosistema
interrupção dorelógio
despacho
atendimento dopedido
Diagrama de transição de estados de um processo
zeque - Grad. CC 8
O Modelo de ComunicaçãoO Modelo de Comunicação
Sistema Operacional
P1 P2 Pn
D1 D2 Dk
Chamada aosistema Despacho
InterrupçãoIniciaE/S
zeque - Grad. CC 9
Comunicação InterprocessosComunicação Interprocessos
Condição de competiçãoCondição de competição Seções críticasSeções críticas Exclusão mútuaExclusão mútua
espera ocupadoespera ocupado Primitivas de comunicaçãoPrimitivas de comunicação
espera bloqueadoespera bloqueado MonitorMonitor Problemas ClássicosProblemas Clássicos
zeque - Grad. CC 10
Comunicação InterprocessosComunicação Interprocessos
Exclusão MútuaExclusão Mútua Desabilitando interrupçõesDesabilitando interrupções Controlando por softwareControlando por software
(construção MUTEXBEGIN/MUTEXEND)(construção MUTEXBEGIN/MUTEXEND)
processo p1processo p1 processo p2processo p2faça até acabarfaça até acabar faça até acabarfaça até acabar calcule; calcule; calcule; calcule; MUTEXBEGIN MUTEXBEGIN MUTEXBEGIN MUTEXBEGIN acesse RC; acesse RC; acesse RC; acesse RC; MUTEXEND MUTEXEND MUTEXEND MUTEXEND calcule; calcule; calcule; calcule; fim. fim. fim. fim.
zeque - Grad. CC 11
Comunicação InterprocessosComunicação Interprocessos
Exclusão MútuaExclusão Mútua MUTEXBEGIN/MUTEXENDMUTEXBEGIN/MUTEXEND
variáveis de bloqueiovariáveis de bloqueioMUTEXBEGIN:
enquanto (ocupado) faça ocupado = V;
MUTEXEND:ocupado = F;
alternância estritaalternância estritaMUTEXBEGIN:
enquanto (vez = MinhaVez) faça;
MUTEXEND:Vez = VezOutro;
zeque - Grad. CC 12
Comunicação InterprocessosComunicação Interprocessos
Exclusão MútuaExclusão Mútua MUTEXBEGIN/MUTEXENDMUTEXBEGIN/MUTEXEND
solução de Petersonsoluçã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;
fim;
MUTEXEND:necessidade(minha) = F;vez = outro;
zeque - Grad. CC 13
Comunicação InterprocessosComunicação Interprocessos
Exclusão MútuaExclusão Mútua instrução TSLinstrução TSL
(Test and Set Lock)(Test and Set Lock)
MUTEXBEGIN:TESTANDSET(ocupado)enquanto (codigo) faça
TESTANDSET(ocupado); fim;
MUTEXEND:ocupado = F;
zeque - Grad. CC 14
Comunicação InterprocessosComunicação Interprocessos
sleep/wakeupsleep/wakeup semáforossemáforos contadores de eventoscontadores de eventos monitoresmonitores passagem de mensagenspassagem de mensagens outrasoutras
zeque - Grad. CC 15
Primitivas de ComunicaçãoPrimitivas de Comunicação
lock/unlocklock/unlockdeclare (g) gate;declare (g) gate;
lock (g);lock (g);......unlock(g);unlock(g);
sleep/wakeupsleep/wakeupblock/wakeupblock/wakeupsleep;sleep;......wakeup(p);wakeup(p);
zeque - Grad. CC 16
Primitivas de ComunicaçãoPrimitivas de Comunicação
SemáforosSemáforosdeclare (s) semaphore initial (i);
P(s); /* espera até que s>0 e então decrementa s */...V(s); /* incremanta s */
zeque - Grad. CC 17
Primitivas de ComunicaçãoPrimitivas de Comunicação
Contadores de eventosContadores de eventosdeclare (e) event_counter;
Read(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) event;
Completion(e)= ...; /* true or false */...call p event(e);wait(e);
zeque - Grad. CC 18
MonitorMonitor
Construção de concorrênciaConstrução de concorrência
Região Crítica
condiçãoj
condiçãok
Sinalizador
Pi
entradai
Visão abstrata do Conceito de Monitor
Pk
Pr PtPc
PbPj
Px
Pv
PaPq entradai+1
entradai-1
zeque - Grad. CC 19
Monitor: Problemas ClássicosMonitor: Problemas Clássicos
Controle de um RecursoControle de um Recurso
resource:Monitor; declare(in_use) bit; declare(available) condition;
do in_use=false end do;
acquire:Entry; if in_use then wait(available); in_use=true; end acquire;
release:entry; in_use=false; signal(available); end release; end resource;
zeque - Grad. CC 20
Monitor: Problemas ClássicosMonitor: Problemas Clássicos
O BUFFER CircularO BUFFER Circular
CircularBuffer: Monitor; declare(Buffer(5))character(80)varying; declare(head,tail,#Buffers,#Full)fixed; declare(BufferVacant,BufferOccupied)condition;
do Head=1; Tail=1; #Buffers=5; #Full=0; end;
Spool: Entry(Contents); ... end Spool;
UnSpool: Entry(Contents); ... end UnSpool; end CircularBuffer;
zeque - Grad. CC 21
Monitor: Problemas ClássicosMonitor: Problemas Clássicos
O BUFFER Circular (cont)O BUFFER Circular (cont)
Spool: Entry(Contents); declare(Contents)character(*)varying;
if #Full=#Buffers then wait(BufferVacant); Buffer(Tail)=Contents; Tail=mod(Tail,#Buffers)+1; #Full=#Full+1; signal(BufferOccupied); end Spool;
zeque - Grad. CC 22
Monitor: Problemas ClássicosMonitor: Problemas Clássicos
O BUFFER Circular (cont.)O BUFFER Circular (cont.)
UnSpool: Entry(Contents); declare(Contents)character(*)varying;
if #Full=0 then wait(BufferOccupied); Contents=Buffer(Head); Head=mod(Head,#Buffers)+1; #Full=#Full-1; signal(BufferVacant); end UnSpool;
zeque - Grad. CC 23
Monitor: Problemas ClássicosMonitor: Problemas Clássicos
Leitores/EscritoresLeitores/Escritores
FileAccess: Monitor; declare(true,false)bit; declare(#Reading)bit; declare(activeWriter)bit; declare(OkToRead,OkToWrite)condition;
do true=1’b’; false=0’b’;#Reading=0; activeWriter=false; end;
zeque - Grad. CC 24
Monitor: Problemas ClássicosMonitor: Problemas Clássicos
Leitores/Escritores (cont.)Leitores/Escritores (cont.)
StartRead: Entry; if activeWriter|empty(OkToWrite) then wait(OkToRead); #Reading=#Reading+1; signal(OkToRead); end StartRead;
EndRead: Entry; #Reading=#Reading-1; if #Reading=0 then signal(OkToWrite); end EndRead;
zeque - Grad. CC 25
Monitor: Problemas ClássicosMonitor: Problemas Clássicos
Leitores/Escritores (cont.)Leitores/Escritores (cont.)
StartWrite: Entry; if #Reading=0|activeWriter then wait(OkToWrite); activeWriter=true; end StartWrite;
EndWrite: Entry; activeWriter=false; if empty(OkToRead) then signal(OkToRead) else signal(OkToWrite); end EndWrite; end FileAccess;