Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila+ SD PDF
Apostila+ SD PDF
DISTRIBUDOS
Notas de Aula
Sistemas Distribudos
Introduo
Sistema distribudo fracamente acoplado
Sistemas Distribudos
Sistemas Distribudos
aplicaes soft-real-time
Sistemas Distribudos
aplicaes hard-real-time
(aplicaes militares, ...)
Tarefa
Tarefa um processo.
Processo
a unidade de escalonamento que possui um conjunto prprio de recursos.
Figura 05 - Processo
Sistemas Distribudos
Redes de computadores
Modelo OSI/ISO
O Open System Interconection ou Modelo de Referncia para interconexo de sistemas
abertos (RM-OSI/ISO) um documento da ISO que tem como objetivo padronizar as
arquiteturas de redes locais. Esse modelo consiste em sete camadas ou mdulos a saber:
Camada 7
Aplicao
Camada 6
Apresentao
Camada 5
Sesso
Camada 4
Transporte
Camada 3
Rede
Camada 2
Enlace
Camada 1
Fsica
Camada de aplicao
Suporte a utilizao de recursos distribudos (servios de alto nvel) ex.: login remoto,
transferncia de arquivos, correio eletrnico, ODP (Open Distributed Processing) - Bancos
de dados distribudos.
Camada de apresentao
Transforma os dados representados internamente numa representao
(representao de rede). Protocolo EDP (External Data Representation).
Outras transformaes:
- codificao secreta dos dados (criptografia);
- compresso dos dados.
cannica
Camada de sesso
Estabelece conexes virtuais entre dois processos comunicantes
Camada de transporte
Responsvel pela entrega de mensagens atravs de circuitos virtuais ou de datagramas. A
camada estabelece:
- traduo de endereo lgico para endereo fsico;
- segmentao de mensagens;
- prover transmisso confivel para circuitos virtuais;
Sistemas Distribudos
Camada de rede
Gera rotas para transmisso dos pacotes oriundos da camada de transporte (utilizada para
WANs).
Camada de enlace
Transmite pacotes entre hosts efetuando deteco e recuperao de erros, controle de fluxo,
etc.
Camada fsica
Controla os drivers de rede.
Sistemas Distribudos
Sistemas Distribudos
IEEE 802.5
Sistemas Distribudos
Mecanismos de comunicao
-
Tipos de comunicao
- Sncrona
- Assncrona
Mecanismos
- Troca de mensagens (sncrona/assncrona).
- Compartilhamento de dados (no compartilhamento de memria!; pois trata-se de
sistemas distribudos).
- Chamada de processamento remoto (sncrono, do tipo servidor-cliente) [rendezvous-> ADA]
Sistemas Distribudos
Comunicao interprocessos
Troca de mensagens
Supe endereos (origem/destino)
10
Sistemas Distribudos
P2
int j;
char buff[20];
recebe b;
sscanf(b,%d,&j);
Troca de mensagens no UNIX
Domnio (famlia)
- UNIX (entre 2 processos da mesma mquina). Superado!
- INET (Internet).
Protocolos
- UDP (User Data Protocol) (no confivel (SIC), entrega de datagramas, baseado no
IP);
- TCP/IP (confivel, baseado em stream).
Endereo de Host
- 32 bits (unsigned long) endereo fsico.
- nome simblico (strings) eg. alias, Leblon, ..., Iemanja,....,
Leblon.Def.FEE.Unicamp.br endereo lgico.
- Nome lgico SYS CALL Nome fsico.
Soquete (Socket).
Global
na
mquina
Local ao
processo
Atribuio/Associao (Binding) de
nomes.
Nmero de ports so inteiros
BIND (s, ...)
O nmero do port pode ser atribudo pela aplicao (soquete passivo) ou pelo S.O. (soquete
ativo).
11
Sistemas Distribudos
- cria socket
- bind
- send
} aguarda resultado
- receive
- close socket
Servidor
Cliente
Conexo
Liberao de um soquete
12
Sistemas Distribudos
Close (s).
[ UDP at 8 kbytes por mensagem : 64k garante que funciona ]
XDR :
- conceito de filtro (utilizado na codificao ou decodificao).
[cra-se] stream : buffer utilizado para codificar ou decodificar.
Filtro uma funo utilizada tanto na codificao quanto na decodificao de dados.
int Filtro (Stream,&dado);
p/ inteiro no XDR:
int buff[128];
int i; float F;
XDR *str;
str = xdrmem_create(&str,buff,128,XDR_Encode);
i = 3;
xdr_int(&str,&i);
F=3.14;
Idr_float(&str,&F);
/* abre socket */
write(s,buff,128);
|
|
|
|
|
|
|
|
|
|
|
peer
read (s,buff,128);
13
Sistemas Distribudos
Funcionalidade
Um mapeador de portas um processo cuja funo principal prestar informaes acerca
de servios disponveis em um ou mais hosts, no que diz respeito ao host que oferece o
servio e porta do processo correspondente. Para que cumpra o seu objetivo, o mapeador
possui dois tipos de funes:
Projeto e Implementao
Na fase de projeto de um mapeador de portas, deve-se tomar decises quanto: forma de
comunicao entre os processos, poltica de acesso seguida pelo mapeador quando um
servio oferecido por vrios servidores, e quanto ao tratamento de inconsistncias
causadas pela morte de um servidor.
14
Sistemas Distribudos
Poltica de Acesso
Quando um servio oferecido por vrios servidores, o mapeador deve escolher um deles
para enviar como resposta ao cliente. Para garantir uma melhor distribuio de carga entre
os servidores decidiu-se pela escolha atravs de uma distribuio uniforme entre eles.
Tratamento de Inconsistncias
Quando um dos servidores morre devido a um crash no sistema, ou a um problema interno
ao prprio processo, deve-se tomar alguma providncia no sentido de no informar ao
cliente que determinado servio est disponvel, quando na verdade ele no est. Neste
sentido, vrias solues so possveis, com maior ou menor confiabilidade:
Cadastro Peridico dos Servidores: onde cada servidor faz o seu recadastramento
peridico, indicando que o servio ainda est disponvel. Esta possui o incoveniente
de o servidor morrer logo aps um recadastramento e o mapeador continuar a
informar que o servio oferecido por ele ainda est disponvel, porm, este um
indeterminismo que existe em maior ou menor grau em qualquer das solues
encontradas para o problema. Esta soluo, alm de causar sobrecarga na rede,
tambm implica em um aumento da complexidade de cada servidor cadastrado;
15
Sistemas Distribudos
16
Sistemas Distribudos
transparncia total
- RPC embutido na linguagem de programao [no existe]; ou
- Usar pr-processador (STUB) das chamadas, que identifica se chamada
local/remota, extrai os tipos de parmetros, codifica, localiza, abre ports, comunica,
recebe (depende do compilador, verso difcil manter).
transparncia limitada.
Estrutura do servidor
17
Sistemas Distribudos
18
Sistemas Distribudos
SUN RPC
-
19
Sistemas Distribudos
MAILBOXES
Idntico a troca de mensagens, exceto no conceito de port.
MAILBOX (MB) uma extenso do conceito de port. mais abstrato, de mais alto nvel.
identificado por u nome simblico XYZ.
Eventualmente tipado, i.., um MB do tipo t recebe mensagens apenas do tipo t.
Eventualmente possui um grupo de proprietrios. Dois esquemas : 1 l ou todos lem.
Possui limites na criao (e.g. tamanhos diferentes de mensagens pendentes).
Primitivas bsicas :
[grupos de]
cria_mb(XYZ,tipo,limites,usurios);
ch=acessa_mb(XYZ);
port_mb(ch,msg);
get_mb(ch,&msg);
destri_mb(ch);
RENDEZVOUS (ADA)
Para comunicao entre tarefas.
Normalmente embutido na linguagem de programao.
Similar RPC, mas com aceite da execuo da procedure explicitado pelo servidor.
20
Sistemas Distribudos
Sistemas Distribudos
Desvantagens :
-
MRMW
equivalente a anterior, muito mais com replicao total sempre consistente tolerante a
falhas.
22
Sistemas Distribudos
Desvantagens :
-
Estruturao de memria
-
Vantagens :
-
Desvantagens :
-
velocidade de comunicao;
controle de acesso (e.g. problemas de corrida- transao ).
23
Sistemas Distribudos
Fetch (real)
Store (write)
atmicas (sic)
atravs de processos
memria centralizada
24
Sistemas Distribudos
Desvantagens :
-
cadeia de ponteiros;
broadcast (com quem est?);
25
Sistemas Distribudos
-
consistncia garantida;
implementao simples;
paralelismo de leitura/gravao (para regies disjuntas mi mj = ).
Desvantagens :
-
Obs.: Esse esquema tambm permite imigrao (por ex. para balanceamento dinmico de
carga, sobrevivncia a paradas programadas).
- frames
26
Sistemas Distribudos
- leitura.
- gravao.
Locking em 2 fases
Teorema : Se um conjunto de operaes (R/W) obedece as regras :
a) antes de ler ou gravar uma regio de memria, obtenha o respectivo lock para aquela
regio;
b) depois de liberar um lock nenhum outro ser requisitado para essa seqncia de
operaes;
Ento qualquer conjunto de operaes realizvel (preserva a consistncia mas no a
ordem temporal em sistemas distribudos deadlocks)
1) Locking por marcas de tempo (m.t.) (menos flexvel para locks em regies interdependentes).
Regies de memria compartilhada tm a elas associadas marcas de tempo;
-
uma leitura numa dada regio de memria s se processa se a M.T.W. (marca de tempo
de gravao) for menor que o time-stamp.
Uma gravao numa dada regio da M.C. s se processa se:
MTW < TS
MTREAD < TS
(Se qualquer dessas operaes falhar, o processo pede outra M.T. e tanta repetir a operao)
27
Sistemas Distribudos
Controle interprocessos
Mecanismos :
-
instanciao (criao)
e controle da execuo (e.g. Suspenso, trmino)
sincronizao
tratamento de excees.
28
Sistemas Distribudos
Deadlock
Figura 23 - Deadlock
Caracterizao do deadlock
Sejam Pj processos aguardando eventos Ei; Pj P; Ei E; Pj (Ei) (Pj aguarda evento Ei), de
sorte que Ek E somente ocorre por ao de Pe P.
29
Sistemas Distribudos
Tratamento de deadlocks
a)
b)
c)
d)
Preveno
1) adio de recursos (condio 1);
2) protocolo de requisio (condio 2);
-
Sistemas Distribudos
ineficincia;
starvation.
Fuga
Algoritmo de banqueiro (empresta quando disponvel, seleciona quando escasso, mantm
sempre uma situao saudvel)
Dados :
-
Algoritmo
1) Se REQ [i,j] NE [i,j] prossiga SENO reporte erro;
2) Se REQ [i,] DISP [] prossiga SENO processo deve esperar;
3) Compute DISP[] = DISP[] REQ [i, ];
ALOC [i, ] = ALOC [i, ] + REQ [i, ];
NEC [i, ] = NEC [i, ] REQ [i, ];
4) Para este novo estado, verifica a sua segurana
Seja W [k] = DISP [k], k=1, __ , m;
F [k] = FALSO, k=1, __, m;
a) escolha k tal que :
F [k] = FALSO;
NEC [i,k] DISP [k];
Se k v para c
b) W [k] = W [k] + ALOC [i,k];
F [k] = VERD;
c) Se F [k] = VERD k ento o estado seguro, caso contrrio inseguro.
5) Se o estado seguro, conceda os recursos solicitados, caso contrrio desfaa o passo 3 e
no conceda.
Exemplo
31
Sistemas Distribudos
Deteco
1) W [k] = DISP [k]
Se ALOC [i,k] 0
F [i] = FALSO. SENO F [i] = VERD
2) escolha i tal que
F [i] = FALSO
REQ [i,k] W [k]
Se i v para 4
3) W [k] = W [k] + ALOC [i,k]
F [i] = VERD
V para 2
4) Se F[i] = FALSO para um dado i, ento o sistema est em deadlock e o processo Pi
P.
Processamento de transaes
32
Sistemas Distribudos
leitura (R);
Gravao (W).
/* abertura */
/* aquisio obtm os locks */
/* operaes */
/* finalizao */
seleo da vtima;
tomada dos recursos;
roll_back (volta para algum estado anterior consistente).
Obs.: custoso (geralmente evita-se usando locks com time-outs) ; garante que no h
deadlocks, mas no garante que haja progresso.
Deadlock em Sistema Distribudo
33
Sistemas Distribudos
estratgia hierrquica
34
Sistemas Distribudos
Locking em 2 fases mais simples, mais usado (nesse todos os locks s so liberados
no final da transao, pois seno poderia ser lido um valor inconsistente alterado por
uma transao que ainda iria ser abortada (para garantir atomicidade).
Soluo: no prover primitivas para liberar locks s atravs do End_Transction ou
Abort_Transaction.
Timestamp necessita de marcas de tempo globais.
Locking em 2 fases
Atomicidade : restaurar estado anterior:
- cpia de objetos antes das modificaes.
- undo log (guarda operao inversa ocupa menos espao em disco, mas mais
difcil de implementar).
Persistncia
-
Sistemas Distribudos
-
Tem que, aps falhas, deixar no estado aps a ltima transao (de escrita) terminada
com sucesso.
checkpoint global ao final das transaes.
checkpoint parcial + log.
Protocolo de finalizao
-
Commit em 2 fases
1 fase
pr-commit (o coordenador pergunta aos participantes se esto prontos para
terminar)
se algum responder no abort para todos e recuperando estado dos objetos,
seno:
RPC
- time-outs
- priorizao (processos leves).
SELECT
Verifica o estado dos descritores para leitura, gravao e condues especiais .
36
Sistemas Distribudos
37
Sistemas Distribudos
Arquiteturas distribudas
Arquiteturas
-
Arquiteturas (nveis)
-
estrutural
- definio dos agentes;
- vias de comunicao;
- vias de controle.
plano de controle/comunicao ( nvel de detalhamento como as aes de controle so
tomadas, gerenciadas; e.g. como sair de um deadlock)
38
Sistemas Distribudos
Nvel estrutural
hierarquias vias de controle e comunicao formam uma rvore e um agente no nvel i
: * controla N agentes no nvel i+1; * comunica-se com n agentes no nvel i+1 e P agentes
no nvel i-1.
Figura 31 - Hierarquias
39
Sistemas Distribudos
Figura 32 Heterarquia
Exemplo de heterarquia
Plano de controle/comunicao
BLACKBOARD (pool de dados) monitor; fila de escalonamento uma hierarquia(sic)
data oriented; memria passada com 2 BBs.
TIME ASSNCRONOS
eg. a) minimizar funes;
b) caixeiro viajante.
40
Sistemas Distribudos
Modelo de Objetos
-
Modelos de objetos
-
classificao/instanciao;
41
Sistemas Distribudos
-
herana;
polimorfismo. eg. Print(...) /* p/quadrado, circulo, etc. */
Objetos
So instncias de classes
Classe
um conjunto de atributos (que iro definir o estado do objeto) mais um conjunto de
operaes (mtodos) envolvendo os atributos.
Classe
{
char rd[16]; /* identificao do sensor */
double leitura;
/* conjunto de atributos (pode haver dados pblicos */
float frequncia;
/* no acessados s por operaes) */
int estado;
....
int le_sensor();
/* conjunto de operaes (mtodos) */
double valor();
...
} sensor;
sensor S1;
S1.le_sensor();
Estrutura de objetos
42
Sistemas Distribudos
objetos passivos
no define mtodos so apenas dados no tm funes.
objetos ativos
os mtodos possuem execuo autnoma
43
Sistemas Distribudos
Problemas
Chamada de mtodos em paralelo manter a consistncia dos dados ( memria
compartilhada 1 mtodo por vez, semforo, lock por regies, ...)
44
Sistemas Distribudos
Interao inter-objetos
-
Localizao do objeto
- Identificador de objeto (Servidor de nomes, host + n do port que recebe RPC)
<ID Global, Host, PORT>
- nameserver (cache)
- broadcast (cache) n ltimas sequncias.
Problema
Gerenciamento de falhas (ocorre nas 2 extremidades quem chama e quem serve)
tme-out
probing ( a cada intervalo de tempo, verifica se est ok).
Gerenciamento de recursos
-
45
Sistemas Distribudos
46
Sistemas Distribudos
Temporizao
Problema : S.O. orientado para time-sharing (e.g. UNIX)
mtodos peridicos
Tratamento de prioridades
-
associadas a clientes
47
Sistemas Distribudos
Figura 43 - Preempo
Problemas de terminao forada e preempo : consistncia do estado do objeto
Solues possveis : - objetos sem estado
- transao
Multi-Threaded Objects
48
Sistemas Distribudos
49
Sistemas Distribudos
50
Sistemas Distribudos
51
Sistemas Distribudos
ARQUITETURA E PROCESSOS
Lado cliente:
browser;
proxy (inicialmente para permitir ao browser executar protocolos de
aplicao diferentes do HTTP. Hoje, usado para filtrar requisies e
respostas, entrar em sistemas, comprimir arquivos, e armazenar).
Problemas com proxies (RFC 3143);
Lado servidor:
Presena grande de replicao: clusters com front end (dispatcher) para
redirecionar requisies de clientes a uma das rplicas. Trs estratgias:
o Distribuio de requisio por contedo: requisies para o mesmo
documento ao mesmo servidor. Para no sobrecarregar o front end,
um (outro) dispatcher repassa a conexo TCP ao servidor;
o DNS de varredura cclica, onde um nico nome de domnio
associado a vrios IPs. O Bind, servidor de DNS, por ex. move em
crculo as entradas das listas de endereo ao enviar o RR Registro
de Recursos;
o Broadcast: o front end repassa a requisio a todos, que decidem
em conjunto qual servidor ir atender a requisio.
COMUNICAO
Baseada em HTTP, que por sua vez baseado no TCP.
52
Sistemas Distribudos
SINCRONIZAO
Poucos trabalhos em sincronizao.
CACHING
Possibilidades (RFC 3040):
53
Sistemas Distribudos
REPLICAO
Dados requisitos de desempenho, disponibilidade e custo, importante estimar
quantas rplicas so necessrias (muitas rplicas aumentam o desempenho, mas
tambm o custo e a necessidade de banda) (RFC 3040).
A replicao soluciona problemas que no podem ser resolvidos unicamente
atravs dos caches, pela dificuldade desses armazenarem contedo no esttico,
por exemplo. Assim, necessrio considerar:
COORDENAO
Algumas abordagens:
54
Sistemas Distribudos
TOLERNCIA A FALHAS
Algumas abordagens (nenhuma RFC !!!):
SEGURANA
A abordagem predominante baseada em canais e transaes seguras
(RFC 2084):
55
Sistemas Distribudos
Relgio Lgico
uma marca (nmero inteiro) associada a cada evento.
Cada processo mantm um nico relgio lgico e adiciona o seu contedo aos eventos
gerados pelo processo.
Notao :
Protocolo:
R1 : Na produo de um evento pelo processo : hi = Hi + d (1).
R2 : Quando o processo i recebe uma mensagem, ele atualiza o relgio:
hi = max(hi,hmensagem)
[e-executa R1] se a recepo de mensagem tambm for um evento
56
Sistemas Distribudos
Relgios fsicos
57
Sistemas Distribudos
58
Sistemas Distribudos
59
Sistemas Distribudos
Escalonamento
Time sharing
Prioridade :
esttica)
F(CPU_utilizada,
recursos
consumidos,
prioridade
60
Sistemas Distribudos
61
Sistemas Distribudos
Sistemas Distribudos
Threads
Uma thread conceitualmente um tipo de dados que representa um fluxo de
controle. s threads deve ser associado um conjunto de operaes de manipulao,
incluindo formas de controlar seu escalonamento e comunicao. Um processo leve
representa uma thread de controle no intimamente ligado a um espao de endereamento.
Threads normalmente podem executar mais rapidamente que processos normais.
Isso porque sua comunicao se d atravs de memria compartilhada ao invs de sistema
de arquivos. A disponibilidade de uso de processos leves prov uma abstrao adequada
para a implementao de programas que rejam a eventos assncronos (como servidores, por
exemplo). So adequados tambm para a implementao de programas de simulao que
modelem situaes concorrentes.
Pode-se considerar a abstrao de processos leves superior de sinais. No sistema
Unix, por exemplo, um sinal ocasiona uma espcie de troca de contexto, para uma nova
instruo, por exemplo, e as regies podem ser implementadas desabilitando interrupes.
Com processos leves, a nica forma de tratar eventos assncronos atravs de threads. No
existem excees assncronas em uma thread. Sees crticas so implementadas atravs de
monitores, no havendo necessidade de travar interrupes, com a possibilidade de perda
de informaes enquanto a regio crtica estiver sendo processada.
Funcionalidade
As bibliotecas referentes processos leves usualmente provem primitivas para
manipulao de threads e controle de eventos em um processador. Vrias delas fornecem
suporte apenas para processos a nvel de usurio. Nesses casos, a fatia de tempo alocada
pelo sistema operacional a um processo deve ser compartilhada por todas as threads que
pertencem quele processo. Alm disso, seus objetos no so acessveis fora desse
processo.
63
Sistemas Distribudos
SunOS, em particular.
64
Sistemas Distribudos
#include <lwp/stackdep.h>
#define MAXPRIO 10
main(argc, argv)
int argc;
char *argv;
{
thread_t tid;
int task();
printf(main here\n);
/* Transforma main() em um processo leve, e especifica a
prioridade mxima de escalonamento. main() executa com
prioridade 10, e prioridades 1..10 ficam disponveis. Assim,
main() vai executar at que seja bloqueado ou passe o
controle a outra thread. */
(void) pod_setmaxpri (MAXPRIO);
/* Inicializa um cache de pilhas, a ser usado por
futuras chamadas lwp_newstk(). Cada uma dessa chamadas dever
retornar uma pilha de pelo menos 1000 bytes, sendo que o
cache dever conter 2 pilhas. Muitas pilhas requerem mais
memria, mas causam menos falhas de pilhas. No caso de falha,
um cache de mesmo tamanho ser alocado. Quando uma thread
morrer, sua pilha automaticamente liberada. */
lwp_setstkcache (1000, 2);
/* Cria uma thread que iniciar sua execuo em task(),
com prioridade 10 de escalonamentoe e usar o cache de pilhas.
Sua identidade retornada em tid. */
lwp_create (&tid, task, MAXPRIO, 0, lwp_newstk(), 0);
}
task() {
printf(hello world\n);
}
65
Sistemas Distribudos
possvel utilizar threads como co-rotinas puras, onde uma thread outorga
explicitamente controle a outra. A primitiva lwp_yield() permite que uma thread aguarde
uma thread especfica de mesma prioridade, ou a prxima thread de mesma prioridade.
main(argc, argv)
int argc;
char ** argv[];
{
int coroutine(), other();
lwp_self(&co1);
lwp_setstkcache (1000,3);
lwp_create (&co2, coroutine, MINPRIO, 0, lwp_newstk(),
0);
lwp_create (&co3, other, MINPRIO, 0, lwp_newstk(), 0 );
printf (1\n);
lwp_yield (THREADNULL); /* yield to coroutine */
printf (4\n);
lwp_yield (co3); /* yield to other */
printf (6\n);
exit(0);
}
coroutine()
{
printf (2\n);
if (lwp_yield(THREADNULL) < 0) {
lwp_perror (bad yield);
return;
}
printf (7\n);
}
other()
66
Sistemas Distribudos
{
printf (3\n);
lwp_yield (THREADNULL);
printf (5\n);
}
Escalonadores customizados
H trs formas de prover controle de escalonamento ao cliente. A primeira no
fazer nada, e prover ao cliente simplesmente um ponteiro para um contexto de thread que
pode ser escalonada vontade dele. O grande empecilho deste mtodo que a maioria dos
clientes no desejam construir seus prprios escalonadores.
A segunda forma consiste em prover uma nica poltica de escalonamento, onde o
cliente possui muito pouco controle sobre o que ser executado na seqncia. Um exemplo
dessa poltica a sistema operacional Unix. Essa abordagem a mais simples do ponto de
vista do cliente, mas torna difcil implementar polticas que levem em conta os diferentes
tempos de resposta das threads clientes.
A terceira forma consiste em prover primitivas que podem interferir na poltica de
escalonamento padro, permitindo a construo de diferentes polticas de escalonamento.
Exemplos de tais primitivas so lwp_suspend(), lwp_yield(), lwp_resume(),
lwp_setpri() e lwp_resched(). A primitiva lwp_suspend() pode tambm ser utilizada em
processos de correo de erros (debugging), para assegurar que uma thread tenha sido
interrompida, antes de analis-la.
/* Exemplo de um programa que constri um escalonador roundrobin, time-sliced. Uma thread de mais alta prioridade atua
como escalonador e dorme pelo quantum de tempo desejado. */
#include <lwp/lwp.h>
#include <lwp/stackdep.h>
#define MAXPRIO 10
main(argc, argv)
int argc;
char **argv;
{
int scheduler(), task(), i;
(void) pod_setmaxpri(MAXPRIO);
lwp_setstkcache (1000,5);
67
Sistemas Distribudos
68
Sistemas Distribudos
A biblioteca de threads aloca um novo buffer de contexto para cada novo contexto
inicializado com uma thread, e disponibiliza um ponteiro para esse contexto para salvar e
restaurar rotinas definidas nesse contexto.
Para utilizar esse mecanismo de contexto, necessrio primeiro definir um contexto
especial, atravs da primitiva lwp_ctxset(). Isso requer que sejam definidas as formas de
salvar e restaurar os estados do contexto, atravs de procedimentos para isso.
Uma vez que o contexto tenha sido definido, pode-se inicializar threads que
utilizem o recurso multiplexado pelo contexto especial, usando a primitiva lwp_ctxinit(). A
inicializao de uma thread que utilize um contexto especial pode ser feita diretamente ou,
se os recursos permitirem, atravs de uma trap, quando o recurso for usado por uma thread
pela primeira vez.
(_libc_save,
libcrestore,
sizeof
69
Sistemas Distribudos
70
Sistemas Distribudos
Referncias bibliogrficas
1. Networking Programming- Manual da SUN.
2. BALL,H.E., STEINER,J.G., TANEMBAUM,A.S. Programming Languages for
Distributed Computing Systems, ACM Computing Servers, vol 21 n 3, Set. 1989.
3. COULOUNS,G.F., DOLLEMORE, J. Distributed Systems Concepts and Design,
1988.
4. FURTH, B. et al, KLUWER. Real Time Unix Systens, Academia Publisher, 1991.
5. J.E.B. MOSS. Nested Transactions Na Approach to Realiable Distributed
Computing, MIT Press, 1989.
6. LAMPORT, L. Time. Clocks and the Ordering of Events in a Distributed System,
Communication os the ACM, Vol. 21, n 7, Julho 1978.
7. NITZBERG,B.& LO,V. Distributed Shared Memory. A servey and Algorithms, IEEE
Computer, Agosto 1991.
71
Sistemas Distribudos
72