Professional Documents
Culture Documents
Introduo
Processos e Threads
Nveis de implementao
Modelos de Multithreads
Exemplo de uso
Multiprogramao pesada
Custo de gerenciamento de processos fator limitante
Criao do processo
Troca de contexto
Esquemas de proteo, memria virtual, ...
Soluo:
Aliviar os custos
Reduzir o overhead
envolvido
Exemplo: RPC
tempo
pedido
RPC
pedido
RPC
processo 1
serv
serv
thread A
(processo 1)
pedido
RPC
serv
thread B
pedido
RPC
serv
executando
bloqueado
6
Espao de
ender. do
usurio
Pilha
do
usurio
Pilha
do
ncleo
PCB
Espao de
ender. do
usurio
Thread
Thread
Thread
TCB
TCB
TCB
Pilha
do
usurio
Pilha
do
usurio
Pilha
do
usurio
Pilha
do
ncleo
Pilha
do
ncleo
Pilha
do
ncleo
Multithreading
Suporte a mltiplas threads de
execuo dentro de um nico
processo
um processo
uma thread
vrios processos
uma thread por processo
Ex.: MSDOS
um processo
vrias threads
vrios processos
vrias threads por processo
Ex.: JVM
10
11
Thread: implementao
2 principais nveis de implementao:
Threads no espao de usurio (user level threads, N:1)
Threads no espao de kernel (kernel level threads,1:1)
a) Modelo N:1
b) Modelo 1:1
12
c) Modelo N:M
Threads de usurio
admitidas no nvel do usurio e gerenciadas sem o suporte
do kernel
thread requisita I/O bloqueia todo o processo
13
Threads de kernel
admitidas e gerenciadas diretamente pelo SO
kernel chaveia entre threads, independente do processo a que
pertencem
14
15
Modelos de multithreading
a) Modelo N:1
b) Modelo 1:1
16
c) Modelo N:M
17
PC1 SP1
Espao
de
usurio
PC2 SP2
PCn SP3
processo
SP
pilha
PC cdigo dados
escalonador
biblioteca
CPU virtual
biblioteca
Espao
de
sistema
dados
escalonador
sistema operacional
pilha
CPU
18
19
Espao
de
usurio
PC1 SP1
PC2 SP2
PCn SP3
Espao
de
sistema
dados
processo
SP
pilha
PC cdigo dados
CPU
virtual
CPU
virtual
CPU
virtual
escalonador
sistema operacional
pilha
CPU
20
21
PC1 SP1
Espao
de
usurio
PC2 SP2
PCn SP3
processo
escalonador
biblioteca
SP
pilha
PC cdigo dados
CPU
virtual
CPU
virtual
CPU
virtual
biblioteca
Espao
de
sistema
dados
escalonador
sistema operacional
pilha
CPU
22
Bibliotecas de Threads
Oferece uma API para a criao e gerenciamento de
threads
2 formas de implementar bibliotecas:
Biblioteca no espao do usurio sem suporte do kernel
Biblioteca no espao do ncleo com suporte direto do SO
int main(){
pthread_t t0, t1;
pthread_create(&t0, NULL, Thread0,NULL);
pthread_create(&t1, NULL, Thread1,NULL);
pthread_join(t0,NULL);
pthread_join(t1,NULL);
printf("Main ....\n");
}
for(i=10;i<20;i++)
printf(" Thread1 - %d\n",i);
25
Escalonamento de Threads
Threads de kernel
Threads de usurio
26
Exemplos de threads
hello.c
hello_arg.c
hello_args.c
hello_join.c
27