Buscar

Sistemas de Tempo Real Distribuídos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas de Tempo Real
Material Teórico
Responsável pelo Conteúdo:
Prof. Dr. Cléber Silva Ferreira da Luz
Revisão Textual:
Prof.ª Esp. Kelciane da Rocha Campos
Sistemas de Tempo Real Distribuídos
• Introdução;
• Definição de Sistema Distribuído;
• Modelos de Programação;
• Plataformas de Processamento;
• MPI;
• Conclusão e Resumo da Unidade.
 · Apresentar todos os conceitos envolvidos no desenvolvimento de sis-
temas de tempo real distribuídos.
OBJETIVO DE APRENDIZADO
Sistemas de Tempo Real Distribuídos
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem 
aproveitado e haja maior aplicabilidade na sua 
formação acadêmica e atuação profissional, siga 
algumas recomendações básicas: 
Assim:
Organize seus estudos de maneira que passem a fazer parte 
da sua rotina. Por exemplo, você poderá determinar um dia e 
horário fixos como seu “momento do estudo”;
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
alimentação saudável pode proporcionar melhor aproveitamento do estudo;
No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos 
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você 
também encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão 
sua interpretação e auxiliarão no pleno entendimento dos temas abordados;
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o 
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e 
de aprendizagem.
Organize seus estudos de maneira que passem a fazer parte 
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Determine um 
horário fixo 
para estudar.
Aproveite as 
indicações 
de Material 
Complementar.
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
Não se esqueça 
de se alimentar 
e de se manter 
hidratado.
Aproveite as 
Conserve seu 
material e local de 
estudos sempre 
organizados.
Procure manter 
contato com seus 
colegas e tutores 
para trocar ideias! 
Isso amplia a 
aprendizagem.
Seja original! 
Nunca plagie 
trabalhos.
UNIDADE Sistemas de Tempo Real Distribuídos
Introdução
Sistemas de tempo real são sistemas computacionais que se preocupam em 
responder a eventos em um determinado intervalo de tempo. Neste sistema com-
putacional, eventos chegam a todo o momento, e o sistema deve responder a tais 
eventos em prazo determinado. Um sistema de tempo real deve ser capaz de res-
ponder a diversos eventos simultaneamente. Dessa forma, a programação paralela 
e destruída possui grande influência em sistemas de tempo real. Um sistema com-
putacional que responde a eventos de tempo real pode utilizar tanto computação 
paralela, como computação distribuída, visando responder aos diversos eventos 
simultaneamente e não perdendo nenhum prazo.
Nesta aula, iremos realizar um estudo sobre sistemas de tempo real distribuído, 
isto é, sistemas de tempo implementados na forma de sistemas distribuídos. Todos 
os conceitos e elementos envolvidos na computação distribuída serão estudados 
nesta unidade, bem como a definição de sistema distribuído, plataforma de proces-
samento, modelos de programação, entre outros.
Definição de Sistema Distribuído
Vamos começar pela definição de um sistema distribuído. Segundo Tanenbaum 
(2003), “um sistema distribuído é uma coleção de computadores independentes 
entre si que se apresenta ao usuário como um sistema único e coerente”. Em outra 
definição mais clara, um sistema distribuído é um sistema computacional composto 
por vários computadores conectados por uma rede física que se apresenta ao usu-
ário como um único computador.
Em um sistema distribuído, cada computador é considerado como uma unida-
de de processamento. Uma unidade de processamento recebe vários nomes, tais 
como nó, node, máquina, host, entre outros. Nesta unidade, como uma forma 
de padronizar a nomenclatura, iremos nos referir a uma unidade de processa-
mento como node. Toda vez que falamos a palavra node, estamos nos referindo 
a um computador do sistema distribuído. Um sistema distribuído visa distribuir o 
processamento de dados entre os n nodes presentes no sistema computacional 
(TANENBAUM, 2003).
Um sistema distribuído pode ser classificado como:
• Homogêneo; e
• Heterogêneo.
Um sistema distribuído homogêneo é um sistema composto por unidades de 
processamento iguais, isto é, todos os computadores do sistema distribuído são 
iguais. Já um sistema distribuído heterogêneo é composto por vários computadores 
diferentes, cada node no sistema é diferente um do outro.
8
9
Node 01
Node 02
Node 05 Node 06
Node 04 Node 03
Figura 1 – Sistema distribuído
Agora que já definimos um sistema distribuído, por que implementar um sistema de 
tempo real de forma distribuída? A próxima seção nos ajuda a entender essa questão.
Por Que Criar um Sistema de Tempo Real Distribuído?
Existem 4 motivos para criar um sistema de tempo real de forma distribuída.
• Compartilhamento de recursos;
• Aumento da velocidade;
• Confiabilidade;
• Comunicação.
Compartilhamento de recursos: uma das principais vantagens de criar um 
sistema de tempo real de forma distribuída é o compartilhamento de recursos. 
Um mecanicismo de compartilhamento em um sistema distribuído deve prover 
o compartilhamento de arquivos, dados, processamento e recursos. Por exem-
plo, um sistema distribuído permite compartilhar o processamento. Cada node se 
apresenta como uma unidade de processamento. Dessa forma, um sistema dis-
tribuído pode distribuir o processamento dos diversos eventos a que ele deve res-
ponder simultaneamente e, assim, responder a todos os eventos ao mesmo tempo 
(TANENBAUM, 2003).
Aumento da velocidade: um sistema de tempo real deve responder a todos os 
eventos no intervalo de tempo determinado, isto é, não deve haver perda de prazo. 
Se o sistema de tempo real puder compartilhar as tarefas que devem ser realizadas 
ao se responder a um evento, o tempo de resposta irá diminuir proporcionalmen-
te. Por exemplo, uma tarefa leva 4 minutos para ser respondida. Se o sistema de 
tempo real distribuído possuir 4 recursos capazes de compartilhar o processamento 
de tal resposta, o tempo de resposta seria de 1 minuto. Com o compartilhamento 
9
UNIDADE Sistemas de Tempo Real Distribuídos
da tarefa, a velocidade de processamento aumenta e o tempo de resposta diminui 
(TANENBAUM, 2003).
Confiabilidade: um sistema de tempo real deve ser totalmente tolerante a fa-
lhas, caso as mesmas ocorram o sistema deve completar a tarefa no prazo deter-
minado. Em um sistema de tempo real distribuído, caso um node falhe, os demais 
nodes podem continuar o processamento sem problema nenhum, isto é, se o 
processamento realizado no momento da falha for independente. Caso o proces-
samento dependa dos outros nodes, o sistema deve identificar e corrigir a falha 
imediatamente. É importante enfatizar que o fato de o sistema agora possuir mais 
unidades de processamento não mascara a ocorrência de falhas, as mesmas podem 
ocorrer e devem ser solucionadas imediatamente (TANENBAUM, 2003).
Comunicação: um sistema de tempo real distribuído facilita a comunicação 
entre os processos. Quando várias máquinas estão conectadas umas às outras por 
uma rede, a comunicação, isto é, a troca de mensagem, é realizada de forma fácil 
e eficaz (TANENBAUM, 2003).
É importante ressaltar que, para aumentar a velocidade no processamento e, 
consequentemente, ganhar mais desempenho no processamento de uma aplicação 
distribuída, o sistema computacional deve possuir um bom mecanismo de balan-
ceamento de carga. Um mecanismo de balanceamento de carga irá balancear 
as cargas de trabalhos entre os diversos nodes do sistema distribuído. Uma má 
distribuiçãona carga de trabalho entre os recursos de processamento pode sobre-
carregar alguns recursos e deixar outros ociosos, impactando no desempenho da 
aplicação (GALVIN, 2000).
Modelos de Programação
Diversos modelos de programação são utilizados em sistemas de tempo real, 
entre eles estão:
• Modelo mestre e escravo;
• Pool de tarefa;
• Pipeline.
As próximas seções apresentam mais detalhes sobre estes modelos de programação.
Modelo Mestre e Escravo
No modelo mestre escravo, um node é definido como mestre e os demais 
nodes são definidos como escravos. O node mestre envia dados para os escravos 
processarem. Os nodes escravos, por sua vez, recebem os dados, processam tais 
dados e os enviam novamente para o mestre. Após receber os dados processados, 
o node mestre envia mais dados para os escravos processarem. O envio e recebi-
mento de dados é realizado até que todos os dados sejam processados.
10
11
Processo Mestre
escravo 1 escravo 2 escravo N
. . .
Figura 2 – Modelo mestre e escravos
Neste modelo de programação, há uma comunicação muito grande entre o mes-
tre e os escravos. Dessa forma, este modelo é muito eficiente quando a granulari-
dade da computação é grossa, isto é, cada computador realiza uma quantidade 
grande de computação. A granularidade grossa mascara o overhead da comunica-
ção. Agora se a granularidade da computação é fina, isto é, a computação que 
cada computador irá realizar é pequena, este modelo já não é tão eficiente, porque 
o overhead da comunicação será maior que a computação (TANENBAUM, 2003).
Para a computação neste modelo ser eficiente, deve-se, também, realizar as 
seguintes observações:
• este modelo funciona perfeitamente quando as tarefas são independentes; e
• quando as tarefas ocorrem de forma inesperada.
Pool de Tarefas
Neste modelo de programação, não há a figura de um elemento central contro-
lando o processamento. Os próprios nodes são responsáveis por pegar, selecionar 
a tarefa que eles irão processar. Como se os nodes mergulhassem em uma “piscina 
de tarefa”. Após processar uma tarefa, o node volta para a “piscina de tarefa” e 
seleciona outra tarefa para processar.
Neste modelo de programação, o processamento só termina quando todas as 
tarefas tiverem sido processadas.
Node 01
Node 02
Node 05 Node 06
Node 04 Node 03
Tarefa 1
Tarefa 2
Tarefa 3
Tarefa 4
Figura 3 – Pool de tarefas
11
UNIDADE Sistemas de Tempo Real Distribuídos
Pipeline
Neste modelo de programação, as unidades de processamento são responsáveis 
por processar uma fração da tarefa. A distribuição do processamento é realizada da 
seguinte forma: cada node realiza um “pedacinho” da tarefa. Conforme ilustrado 
na Figura 4.
Node 01 Node 02 Node 05Node 04Node 03
Tarefa 1
Tarefa 1
Tarefa 1
Tarefa 1
Tarefa 1
Figura 4 – Modelo de programação Pipeline
Plataformas de Processamento
Um sistema de tempo real distribuído pode utilizar diversas plataformas de pro-
cessamento, entre elas:
• Cluster;
• Grid.
Cluster
Um Cluster pode ser considerado como vários computadores conectados por 
uma rede física que se apresenta para o usuário como um único computador. Nes-
te sistema computacional, cada computador é considerado como uma unidade de 
processamento independente, e juntos processam uma aplicação de forma distribu-
ída. Habitualmente, um Cluster possui uma unidade central que se apresenta para 
o usuário como sendo “um único computador”.
12
13
O objetivo principal de um Cluster é distribuir o processamento da aplicação. 
Distribuindo o processamento da aplicação, é possível aumentar a velocidade do 
processamento da aplicação e ganhar mais desempenho no processamento.
Unidade Central
Figura 5 – Cluster
Um Cluster pode usar vários modelos de programação, tais como mestre e es-
cravo, pool de tarefas e pipeline.
Grid
Assim como um Cluster, um Grid é um aglomerado de computadores que se 
apresenta para o usuário como um único computador. Todavia, a diferença entre 
os dois é a forma como as máquinas são conectadas. Em um Grid, os computado-
res são conectados por uma rede internet e não mais por uma rede física.
Um Grid possui o mesmo objetivo de um Cluster, isto é, distribuir o proces-
samento da aplicação. Como também utiliza os modelos de programação de um 
Cluster. Realmente, a única característica que os difere é a forma como os compu-
tadores são conectados. Cluster por uma rede física e Grid pela internet.
MPI
É muito comum um sistema de tempo real distribuído ser implementado utili-
zando um Cluster de computadores. MPI (Message-Passing Interface) é uma bi-
blioteca de desenvolvimento voltada para aplicações distribuídas. Tendo como foco 
o envio e recebimento de mensagem, esta biblioteca é muito utilizada em Cluster 
de computadores. MPI disponibiliza funções para enviar e receber dados entre os 
vários nós do Cluster. Nesta seção, iremos estudar os principais aspectos de desen-
volvimento de um sistema distribuído utilizando MPI. Iremos estudar as principais 
funções do MPI, entre elas daremos mais foco para as funções:
• MPI_Init();
• MPI_Finalize();
13
UNIDADE Sistemas de Tempo Real Distribuídos
• Send();
• Recv();
• Isend();
• Irecv();
• Bcast();
• Scatter();
• Gather().
Em um programa MPI, processos são representados por ranks e estes são nu-
merados, ex.: rank 0, rank 1, rank 2, rank 3 ... rank n.
Um programa MPI sempre começa com MPI_Init(int *argc,char *argv); e ter-
mina com MPI_Finalize(void);, entre MPI_Init e MPI_Finalize deve estar todo o 
código distribuído do programa.
Uma mensagem pode ser enviada pela função MPI_Send(). A sintaxe do MPI_
Send() é a seguinte:
MPI_Send(void *buf,int count,MPI_Datatype 
dtype,int dest,int tag,MPI_Comm comm); 
Nesta função:
• buf é o endereço do dado;
• int count é a quantidade de dados que será enviada;
• MPI_Datatype é o tipo de dado que será enviado;
• Dest é o número do rank destino;
• tag é uma tag de identificação da mensagem;
• comm é o “canal” de comunicação entre os ranks.
Para o recebimento da mensagem, MPI disponibiliza a função MPI_Recv (). Sua 
sintaxe é:
MPI_Recv(void *buf,int count,MPI_Datatype 
dtype,int source,int tag,MPI_Comm comm,MPI_Status *status);
Nesta função:
• buf é o endereço onde o dado será armazenado;
• count é a quantidade de dados que será armazenada;
• MPI_Datatype é o tipo de dado que será armazenado;
• source é a identificação do rank emissor;
• comm é o “canal” de comunicação entre os ranks;
• status é uma estrutura que armazena o status da comunicação.
14
15
A Figura 6 ilustra um pequeno trecho de código em MPI utilizando a função 
Send() e Recv(). Nesse programa, utiliza-se o modelo mestre e escravo.
Figura 6 – Trecho de Código MPI Send e Recv
As funções Send() e Recv() são bloqueantes. Por exemplo, o rank 0 envia uma 
mensagem para o rank 1. O rank 1 ficará bloqueado até que toda a mensagem seja 
transmitida. Após o término da transmissão da mensagem, o rank 1 será desblo-
queado e pode continuar o processamento.
MPI_Send
MPI_Reve
espera
espera
Figura 7 – Send e Recv bloqueantes
MPI também disponibiliza as funções Isend() e IRecv() para o envio de men-
sagem não bloqueante. Utilizando o Isend() e o IRecv(), tanto o receptor como o 
emissor não ficam bloqueados. Por exemplo, o rank 0 pode enviar mensagem 
para o rank 1 e continuar o seu processamento. O mesmo ocorre com o rank 1 
- enquanto os dados são transmitidos, o rank 1 pode continuar o processamento.
A sintaxe do Isend é:
MPI_Isend(void *buf,int count,MPI_Datatype 
dtype,int dest,int tag,MPI_Comm comm,MPI_Request *req)
Nesta função:
• buf é o endereço do dado;
• int count é a quantidade de dados que será enviada;
• MPI_Datatype é o tipo de dado que será enviado;
• Dest é o número do rank destino;
• tag é uma tag de identificação da mensagem;
• comm é o “canal” de comunicação entre os ranks;
15
UNIDADE Sistemas de Tempo Real Distribuídos
• req é o objeto que contém informações sobre a mensagem.
• Já a sintaxe do Irecv() é: 
MPI_Irecv(void*buf,int count,MPI_Datatype dtype, 
int source, int tag, MPI_Comm comm, MPI_Request *req);
Nesta função:
• buf é o endereço onde o dado será armazenado;
• count é a quantidade de dados que será armazenada;
• MPI_Datatype é o tipo de dado que será armazenado;
• source é a identificação do rank emissor;
• comm é o “canal” de comunicação entre os ranks;
• req é o objeto que contém informações sobre a mensagem.
MPI_ISend
MPI_IReve
Figura 8 – ISend e IRecv não bloqueantes
MPI ainda disponibiliza funções para o envio de mensagens coletivas MPI_Bcast(). 
Utilizando-se essa função, uma mensagem será enviada para todos os ranks. MPI_
Bcast() realiza uma de broadcast. Nesta operação todos os processos especificam o 
mesmo processo root (argumento root), cujo conteúdo do buffer será enviado. Os 
demais processos especificam buffers de recepção. Após a execução da chamada, 
todos os buffers contêm os dados do buffer do processo root. Sua sintaxe é a seguinte:
MPI_Bcast(void *buf,int count,MPI_Datatype dtype,int root,MPI_Comm comm);
Nesta função:
• buf é o buffer onde o dado está localizado;
• count é a quantidade de dados que será transmitida;
• MPI_Datatype é o tipo de dado que será armazenado;
• comm é o “canal” de comunicação entre os ranks.
Outras funções de envio e recebimento de dados coletivos são Scatter() e 
Gather(). A função Scatter compartilha os dados armazenados em um buffer 
entre os recursos. Na operação scatter todos os processos especificam o mesmo 
count (número de elementos a serem recebidos). Argumentos send são significan-
tes apenas para o processo root.
16
17
A sintaxe do Scatter é:
MPI_Scatter(void *sendbuf,int sendcount,MPI_Datatype sendtype,void 
*recvbuf,int recvcount,MPI_Datatype recvtype,int root,MPI_Comm comm);
Nesta função:
• buf é o buffer onde o dado está localizado;
• count é a quantidade de dados que será transmitida;
• MPI_Datatype é o tipo de dado que será enviado;
• Recvbuf é o buffer onde os dados serão armazenados;
• Recvcount é a quantidade de dados que serão armazenados;
• Datatype é o tipo de dado que será armazenado;
• root é o rank emissor da mensagem;
• comm é o “canal” de comunicação entre os ranks.
Já a função Gather() é o contrário, recolhe os dados dos buffer de todos os ranks 
e os armazena no buffer do rank mestre. A sintaxe do Gather é:
MPI_Gather(void *sendbuf,int sendcount,MPI_Datatype sendtype,void 
*recvbuf,int recvcount,MPI_Datatype recvtype,int root,MPI_Comm comm); 
Nesta função:
• buf é o buffer onde o dado está localizado;
• count é a quantidade de dados que será transmitida;
• MPI_Datatype é o tipo de dado que será enviado;
• Recvbuf é o buffer onde os dados serão armazenados;
• Recvcount é a quantidade de dados que será armazenada;
• Datatype é o tipo de dado que será armazenado;
• root é o rank emissor da mensagem;
• comm é o “canal” de comunicação entre os ranks.
Conclusão e Resumo da Unidade
Um sistema de tempo real pode ser implementado de forma distribuída. Um sistema 
distribuído é um sistema computacional composto por vários computadores conecta-
dos por uma rede física que se apresenta ao usuário como um único computador.
Em um sistema distribuído, cada computador é considerado como uma unida-
de de processamento. Uma unidade de processamento recebe vários nomes, tais 
como nó, node, máquina, host, entre outros.
17
UNIDADE Sistemas de Tempo Real Distribuídos
Um sistema distribuído pode ser classificado como homogêneo ou heterogê-
neo. Um sistema homogêneo é um sistema composto por unidades de processa-
mento iguais, isto é, todos os computadores do sistema distribuído são iguais. Já 
um sistema distribuído heterogêneo é composto por vários computadores diferen-
tes, cada node no sistema é diferente um do outro.
Ao se criar um sistema de tempo real distribuído, pode-se encontrar 4 vanta-
gens, que são: Compartilhamento de recursos, Aumento da velocidade, Con-
fiabilidade e Comunicação.
Compartilhamento de recursos: um mecanicismo de compartilhamento em 
um sistema distribuído deve prover o compartilhamento de arquivos, dados, pro-
cessamento e recursos.
Aumento da velocidade: um sistema de tempo real deve responder a todos os 
eventos no intervalo de tempo determinado, isto é, não deve haver perda de prazo. 
Se o sistema de tempo real puder compartilhar as tarefas que devem ser realizadas 
ao se responder a um evento, o tempo de resposta irá diminuir proporcionalmente.
Confiabilidade: um sistema de tempo real deve ser totalmente tolerante a fa-
lhas, caso as mesmas ocorram o sistema deve completar a tarefa no prazo deter-
minado. Em um sistema de tempo real distribuído, caso um node falhe, os demais 
nodes podem continuar o processamento sem problema nenhum, isto é, se o 
processamento realizado no momento da falha for independente.
Comunicação: um sistema de tempo real distribuído facilita a comunicação entre 
os processos quando várias máquinas estão conectadas umas às outras por uma rede 
a comunicação, isto é, a troca de mensagem é realizada de forma fácil e eficaz.
Um sistema distribuído deve possuir um mecanismo de balanceamento de carga 
que será responsável por balancear as cargas de trabalhos entre os diversos nodes 
do sistema distribuído.
Um sistema distribuído pode utilizar diversos modelos de programação, entre 
eles estão: o modelo mestre e escravo, pool de tarefas e pipeline.
No modelo mestre escravo, um node é definido como mestre e os demais 
nodes são definidos como escravos. O node mestre envia dados para os escravos 
processarem. Os nodes escravos, por sua vez, recebem os dados, processam tais 
dados e os enviam novamente para o mestre. Após receber os dados processados, 
o node mestre envia mais dados para os escravos processarem.
No modelo pool de tarefas, os próprios nodes são responsáveis por pegar, 
selecionar a tarefa que eles irão processar. Como se os nodes mergulhassem em 
uma “piscina de tarefa”. Após processar uma tarefa, o node volta para a “piscina 
de tarefa” e seleciona outra tarefa para processar.
No modelo Pipeline, as unidades de processamento são responsáveis por pro-
cessar uma fração da tarefa. A distribuição do processamento é realizada da seguin-
te forma: cada node realiza um “pedacinho” da tarefa.
18
19
Um Cluster pode ser considerado como vários computadores conectados por 
uma rede física que se apresenta para o usuário como um único computador. Neste 
sistema computacional, cada computador é considerado como uma unidade de pro-
cessamento independente, e juntos processam uma aplicação de forma distribuída.
Assim como um Cluster, um Grid é um aglomerado de computadores que se 
apresenta para o usuário como um único computador. Todavia, a diferença entre 
os dois é a forma como as máquinas são conectadas. Em um Grid, os computado-
res são conectados por uma rede internet e não mais por uma rede física.
Habitualmente, um sistema de tempo real distribuído é implementado utilizando 
um Cluster de computadores. MPI (Message-Passing Interface) é uma biblioteca 
de desenvolvimento voltada para aplicações distribuídas. Tendo como foco o envio 
e recebimento de mensagem, esta biblioteca é muito utilizada em Cluster de com-
putadores. MPI disponibiliza funções para enviar e receber dados entre os vários 
nós do cluster.
19
UNIDADE Sistemas de Tempo Real Distribuídos
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Vídeos
Sistema em Tempo Real - SO
https://youtu.be/gaO9o-ZfMiU
Sistema em Tempo Real
https://youtu.be/HTLZUCkdQbA
 Leitura
Sistemas de tempo real – parte 1
https://goo.gl/K29zuC
Sistemas de tempo real
https://goo.gl/4bcgvB
20
21
Referências
GALVIN, S. Sistemas operacionais: conceitos. 5ª edição. São Paulo: Prentice 
Hall, 2.000.
________, S. Sistemas operacionais: conceitos e aplicações. 3ª edição. Rio de 
Janeiro: Campus, 1998.
SHAW, A. C. Sistemas e software de tempo real. Porto Alegre: Bookman, 2003.
TANENBAUM, A. S. Sistemas operacionais modernos. 2ª edição.São Paulo: 
Pearson Prentice Hall, 2003.
21

Outros materiais