Zeque - Grad. CC1 Sistemas Operacionais l Processos Plano de Apresentação O Modelo de Processo ...

Post on 21-Apr-2015

106 views 1 download

Transcript of Zeque - Grad. CC1 Sistemas Operacionais l Processos Plano de Apresentação O Modelo de Processo ...

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;