Sistemas Operacionais l Processos Plano de Apresentao O

  • Slides: 25
Download presentation
Sistemas Operacionais l Processos Plano de Apresentação £ O Modelo de Processo ¤ ¤

Sistemas Operacionais l 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 Interprocessos ¤ ¤ Comunicação Interprocessos Condição de competição Seções críticas zeque - Grad. CC ¤ Exclusão mútua ¥ solução de software ¥ TSL Primitivas de comunicação ¥ sleep/wakeup ¥ semáforos ¥ contadores de eventos Monitor ¥ Problemas Clássicos 1

O Modelo de Processo Definição l l Um processo é um programa que está

O Modelo de Processo Definição l l Um processo é um programa que está sendo executado Um processo é uma atividade assíncrona UNIX: Programas Processos pilha do processo no kernel Área de usuário argv , envp pilha do usuário heap Tabela de símbolos bss-block started by symbol Dados Inicializados Texto Cabeçalho Número Mágico Espaço de Endereços Arquivo Executável zeque - Grad. CC 2

O Modelo de Processo Características l l l Processos seqüenciais Multiprogramação Processamento de Interrupçoes

O Modelo de Processo Características l l l 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 zeque - Grad. CC 3

O Modelo de Processo Hierarquia de Processos l l Processos de Sistema Processos de

O Modelo de Processo Hierarquia de Processos l l Processos de Sistema Processos de Usuário Hierarquia na Criação l l Processo PAI Processo FILHO zeque - Grad. CC 4

O Modelo de Processo Implementação de Processo l l Contexto: Representação de um processo

O Modelo de Processo Implementação de Processo l l Contexto: Representação de um processo por um conjunto de dados Registro descritor ou bloco de controle: estado do processo, contador de instruções, apontador para pilha de execução, alocação de memória, arquivos, dispositivos contabilidade, escalonamento zeque - Grad. CC 5

O Modelo de Processo Estados de um Processo l l l pronto bloqueado em

O Modelo de Processo Estados de um Processo l l l pronto bloqueado em execução zeque - Grad. CC 6

O Modelo de Processo Transição de Estado de um Processo despacho (proc. Id): pronto

O Modelo de Processo Transição de Estado de um Processo despacho (proc. Id): pronto em execução tempoesgotado(proc. Id): em execução pronto bloqueio(proc. Id): em execução bloqueado desbloqueio(proc. Id): bloqueado pronto Em execução interrupção do relógio Chamada ao sistema Bloqueado despacho atendimento do pedido Pronto Diagrama de transição de estados de um processo zeque - Grad. CC 7

O Modelo de Comunicação P 1 P 2 Pn Chamada ao sistema Despacho Sistema

O Modelo de Comunicação P 1 P 2 Pn Chamada ao sistema Despacho Sistema Operacional Inicia E/S D 1 Interrupção D 2 Dk zeque - Grad. CC 8

Comunicação Interprocessos l l l Condição de competição Seções críticas Exclusão mútua £ l

Comunicação Interprocessos l l l Condição de competição Seções críticas Exclusão mútua £ l Primitivas de comunicação £ l l espera ocupado espera bloqueado Monitor Problemas Clássicos zeque - Grad. CC 9

Comunicação Interprocessos Exclusão Mútua l l Desabilitando interrupções Controlando por software (construção MUTEXBEGIN/MUTEXEND) processo

Comunicação Interprocessos Exclusão Mútua l l Desabilitando interrupções Controlando por software (construção MUTEXBEGIN/MUTEXEND) processo p 1 faça até acabar calcule; MUTEXBEGIN acesse RC; MUTEXEND calcule; fim. processo p 2 faça até acabar calcule; MUTEXBEGIN acesse RC; MUTEXEND calcule; fim. zeque - Grad. CC 10

Comunicação Interprocessos Exclusão Mútua l MUTEXBEGIN/MUTEXEND £ variáveis de bloqueio MUTEXBEGIN: enquanto (ocupado) faça

Comunicação Interprocessos Exclusão Mútua l MUTEXBEGIN/MUTEXEND £ variáveis de bloqueio MUTEXBEGIN: enquanto (ocupado) faça ocupado = V; MUTEXEND: ocupado = F; £ alternância estrita MUTEXBEGIN: enquanto (vez = Minha. Vez) faça ; MUTEXEND: Vez = Vez. Outro; zeque - Grad. CC 11

Comunicação Interprocessos Exclusão Mútua l MUTEXBEGIN/MUTEXEND £ solução de Peterson MUTEXBEGIN: necessidade(minha) = V;

Comunicação Interprocessos Exclusão Mútua l MUTEXBEGIN/MUTEXEND £ solução de Peterson MUTEXBEGIN: 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; MUTEXEND: necessidade(minha) = F; vez = outro; zeque - Grad. CC 12

Comunicação Interprocessos Exclusão Mútua l instrução TSL (Test and Set Lock) MUTEXBEGIN: TESTANDSET(ocupado) enquanto

Comunicação Interprocessos Exclusão Mútua l instrução TSL (Test and Set Lock) MUTEXBEGIN: TESTANDSET(ocupado) enquanto (codigo) faça TESTANDSET(ocupado); fim; MUTEXEND: ocupado = F; zeque - Grad. CC 13

Comunicação Interprocessos l l l sleep/wakeup semáforos contadores de eventos monitores passagem de mensagens

Comunicação Interprocessos l l l sleep/wakeup semáforos contadores de eventos monitores passagem de mensagens outras zeque - Grad. CC 14

Primitivas de Comunicação l lock/unlock declare (g) gate; lock (g); . . . unlock(g);

Primitivas de Comunicação l lock/unlock declare (g) gate; lock (g); . . . unlock(g); l sleep/wakeup block/wakeup sleep; . . . wakeup(p); zeque - Grad. CC 15

Primitivas de Comunicação l Semáforos declare (s) semaphore initial (i); P(s); /* espera até

Primitivas de Comunicação l Semáforos declare (s) semaphore initial (i); P(s); /* espera até que s>0 e então decrementa s */. . . V(s); /* incremanta s */ zeque - Grad. CC 16

Primitivas de Comunicação l Contadores de eventos declare (e) event_counter; Read(e); /* retorna o

Primitivas de Comunicação l Contadores de eventos declare (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 17

Monitor l Construção de concorrência Px P j. P b Pv Pq. P a

Monitor l Construção de concorrência Px P j. P b Pv Pq. P a entradai-1 entradai Pi Região Crítica condiçãoj Pk condiçãok Pr P entradai+1 Sinalizador Visão abstrata do Conceito de Monitor zeque - Grad. CC 18 t. P c

Monitor: Problemas Clássicos l Controle de um Recurso resource: Monitor; declare(in_use) bit; declare(available) condition;

Monitor: Problemas Clássicos l Controle 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 19

Monitor: Problemas Clássicos l O BUFFER Circular. Buffer: Monitor; declare(Buffer(5))character(80)varying; declare(head, tail, #Buffers, #Full)fixed;

Monitor: Problemas Clássicos l O BUFFER Circular. Buffer: Monitor; declare(Buffer(5))character(80)varying; declare(head, tail, #Buffers, #Full)fixed; declare(Buffer. Vacant, Buffer. Occupied)condition; do Head=1; Tail=1; #Buffers=5; #Full=0; end; Spool: Entry(Contents); . . . end Spool; Un. Spool: Entry(Contents); . . . end Un. Spool; end Circular. Buffer; zeque - Grad. CC 20

Monitor: Problemas Clássicos l O BUFFER Circular (cont) Spool: Entry(Contents); declare(Contents)character(*)varying; if #Full=#Buffers then

Monitor: Problemas Clássicos l O BUFFER Circular (cont) Spool: Entry(Contents); declare(Contents)character(*)varying; if #Full=#Buffers then wait(Buffer. Vacant); Buffer(Tail)=Contents; Tail=mod(Tail, #Buffers)+1; #Full=#Full+1; signal(Buffer. Occupied); end Spool; zeque - Grad. CC 21

Monitor: Problemas Clássicos l O BUFFER Circular (cont. ) Un. Spool: Entry(Contents); declare(Contents)character(*)varying; if

Monitor: Problemas Clássicos l O BUFFER Circular (cont. ) Un. Spool: Entry(Contents); declare(Contents)character(*)varying; if #Full=0 then wait(Buffer. Occupied); Contents=Buffer(Head); Head=mod(Head, #Buffers)+1; #Full=#Full-1; signal(Buffer. Vacant); end Un. Spool; zeque - Grad. CC 22

Monitor: Problemas Clássicos l Leitores/Escritores File. Access: Monitor; declare(true, false)bit; declare(#Reading)bit; declare(active. Writer)bit; declare(Ok.

Monitor: Problemas Clássicos l Leitores/Escritores File. Access: Monitor; declare(true, false)bit; declare(#Reading)bit; declare(active. Writer)bit; declare(Ok. To. Read, Ok. To. Write)condition; do true=1’b’; false=0’b’; #Reading=0; active. Writer=false; end; zeque - Grad. CC 23

Monitor: Problemas Clássicos l Leitores/Escritores (cont. ) Start. Read: Entry; if active. Writer| empty(Ok.

Monitor: Problemas Clássicos l Leitores/Escritores (cont. ) Start. Read: Entry; if active. Writer| empty(Ok. To. Write) then wait(Ok. To. Read); #Reading=#Reading+1; signal(Ok. To. Read); end Start. Read; End. Read: Entry; #Reading=#Reading-1; if #Reading=0 then signal(Ok. To. Write); end End. Read; zeque - Grad. CC 24

Monitor: Problemas Clássicos l Leitores/Escritores (cont. ) Start. Write: Entry; if #Reading =0|active. Writer

Monitor: Problemas Clássicos l Leitores/Escritores (cont. ) Start. Write: Entry; if #Reading =0|active. Writer then wait(Ok. To. Write); active. Writer=true; end Start. Write; End. Write: Entry; active. Writer=false; if empty(Ok. To. Read) then signal(Ok. To. Read) else signal(Ok. To. Write); end End. Write; end File. Access; zeque - Grad. CC 25