Sistemas 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


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


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
Dados Inicializados
Texto
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



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


Processos de Sistema
Processos de Usuário
Hierarquia na Criação


Processo PAI
Processo FILHO
zeque - Grad. CC
4
O Modelo de Processo
Implementação de Processo


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



pronto
bloqueado
em execução
zeque - Grad. CC
6
O 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
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
P1
P2
Pn
Chamada ao
sistema
Despacho
Sistema Operacional
Inicia
E/S
D1
Interrupção
D2
Dk
zeque - Grad. CC
8
Comunicação Interprocessos



Condição de competição
Seções críticas
Exclusão mútua


Primitivas de comunicação



espera ocupado
espera bloqueado
Monitor
Problemas Clássicos
zeque - Grad. CC
9
Comunicação Interprocessos
Exclusão Mútua


Desabilitando interrupções
Controlando por software
(construção MUTEXBEGIN/MUTEXEND)
processo p1
faça até acabar
calcule;
MUTEXBEGIN
acesse RC;
MUTEXEND
calcule;
fim.
processo p2
faça até acabar
calcule;
MUTEXBEGIN
acesse RC;
MUTEXEND
calcule;
fim.
zeque - Grad. CC
10
Comunicação Interprocessos
Exclusão Mútua

MUTEXBEGIN/MUTEXEND

variáveis de bloqueio
MUTEXBEGIN:
enquanto (ocupado) faça
ocupado = V;
MUTEXEND:
ocupado = F;

alternância estrita
MUTEXBEGIN:
enquanto (vez = MinhaVez) faça
;
MUTEXEND:
Vez = VezOutro;
zeque - Grad. CC
11
Comunicação Interprocessos
Exclusão Mútua

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;
fim;
MUTEXEND:
necessidade(minha) = F;
vez = outro;
zeque - Grad. CC
12
Comunicação Interprocessos
Exclusão Mútua

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






sleep/wakeup
semáforos
contadores de eventos
monitores
passagem de mensagens
outras
zeque - Grad. CC
14
Primitivas de Comunicação

lock/unlock
declare (g) gate;
lock (g);
...
unlock(g);

sleep/wakeup
block/wakeup
sleep;
...
wakeup(p);
zeque - Grad. CC
15
Primitivas de Comunicação

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

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

Construção de concorrência
Px P
jP
b
Pv
PqP
a
entradai-1
entradai
Pi
Região Crítica
condiçãoj
Pk
condiçãok
Pr P
tP
c
entradai+1
Sinalizador
Visão abstrata do Conceito de Monitor
zeque - Grad. CC
18
Monitor: Problemas Clássicos

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

O 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
20
Monitor: Problemas Clássicos

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
21
Monitor: Problemas Clássicos

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
22
Monitor: Problemas Clássicos

Leitores/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
23
Monitor: Problemas Clássicos

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
24
Monitor: Problemas Clássicos

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;
zeque - Grad. CC
25
Download

Descarregar origem da apresentação