Notas de Aula - MAC 5755 - Sistemas Operacionais Distribuídos
Aula 9 - 12/9/2001
Gerenciamento de Memória em Sistemas Centralizados
-
Memória Virtual
-
MMU - unidade de hardware responsável pelo mapeamento de endereços
virtuais para físicos
-
Segmentação
-
segmentos podem ter tamanhos variados e proteção diferenciada
-
desvantagem: favorece fragmentação externa
-
Paginação
-
tamanho fixo, proteção diferenciada
-
desvantagem: favorece fragmentação interna
-
Algoritmos para seleção de onde, na memória física,
colocar uma página virtual
-
Primeiro encaixe (first fit)
-
Melhor encaixe (best fit)
-
Pior encaixe (worst fit)
-
Algoritmos para paginação
-
FIFO
-
NRU (limite estático)
-
LRU
-
MRU
-
LRU + preferência para páginas limpas (que não foram
alteradas)
-
Problema a se evitar: trashing, i.e., o sistema fica paginando o
tempo todo.
-
O maior problema de memória virtual é que ele torna o tempo
de execução de cada instrução totalmente imprevisível.
-
Sistemas de tempo real rígido praticamente não usam MV.
-
Sistemas de tempo real suave podem ou não usar (podem oferecer opção
de memory pinning)
-
Princípio número 1 de desempenho: sobrepor comunicação
e computação
-
Princípio número 2: busca antecipada dos dados antes de precisar
deles (prefetching)
Memória Compartilhada vs. Troca de mensagens
-
Ambos são mecanismos de comunicação entre processos
-
Troca de mensagens usa send e receive
-
Memória compartilhada usa read e write
-
Memória compartilhada exige o uso de mecanismos de sincronização
-
Em multiprocessadores conectados por um barramento, MC é uma opção
bem eficiente
-
Processadores podem guardar cópias dos dados em seus caches
-
Grande problema: manter a consistência dos caches
-
Exclusão mútua em regiões críticas (próxima
aula)
-
cache bisbilhoteiro (snoopy cache)
-
processos monitoram barramento
-
ao detectar mensagem no barramento que altera um dado em seu cache, o marca
como inválido
-
No UNIX: (exemplo de código)
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
void *shmat (int shmid, const void *shmaddr, int shmflg);
int shmdt (const void *shmaddr);
Memória Compartilhada Distribuída
-
Idéia apresentada por Li e Hudak em 1989.
-
Memória presente nas máquinas da rede é compartilhada
por várias máquinas (Fig. 5.1 Sinha)
-
Para melhorar o desempenho, mapeia-se parte das memórias locais
das máquinas ao "espaço de endereçamento global" (caching)
-
O sistema mantém um "serviço de diretório" para guardar
informações sobre o estado do sistema e sobre a localização
das páginas
-
Tipos
-
Leitor e Escritor Únicos
-
modelo centralizado (Fig 4.4 Galli)
-
Múltiplos Leitores / Único Escritor
-
modelo com distribuição estática (Fig 4.5 Galli)
-
modelo distribuído dinâmico (Fig 4.6 Galli) usa broadcast,
ineficiente
-
modelo distribuído dinâmico (Fig 4.7 Galli) sem broadcast,
mais eficiente
-
Múltiplos Leitores / Múltiplos Escritores
-
mais complicado de implementar, mais caro computacionalmente
-
um sequenciador é utilizado para colocar em ordem todas as alterações
aos dados e gerenciar conflitos
-
veremos isso mais prá frente na aula de Sincronização
Distribuída
-
Questões mais importantes
-
Granularidade (blocos grandes (falso compartilhamento) vs. blocos pequenos)
-
Estrutura do Espaço de Memória
-
sem estrutura
-
estruturas de dados da linguagem
-
objetos (Clouds da Georgia Tech)
-
banco de dados (Linda usa tuplas ao invés de endereços para
referenciar porções da memória)
-
Política de Consistência (ou Coerência) e Sincronização
do Acesso
-
Localização e acesso aos dados
-
Estratégia de Substituição de blocos de memória
em um nó do sistema distribuído
-
Trashing
-
Heterogeneidade
-
Nível da implementação:
-
Hardware: MMU
-
Software: Sistema Operacional
-
Software: Sistema de Execução da Linguagem de Programação
(language runtime system)
-
Políticas de Consistência (estudaremos na aula de transações
distribuídas)
Migração de Memória
-
MCD facilita migração de processos
-
Mas a migração de memória é a parte mais custosa
da migração de processos
-
Quando migramos um processo há duas questões a responder
-
Quando no processo de migração do processo se deve migrar
a memória?
-
Quanto da memória se deve migrar?
-
Algoritmos
-
Pára e copia (Fig. 4.8 Galli)
-
Cópia concorrente (Fig. 4.9 Galli) Ulitizado no sistema distribuído
V (~1985)
-
Cópia na referência (Fig. 4.10 Galli)
Questões
-
Atualmente, Memória Distribuída Compartilhada é utilizada
principalmente em sistemas específicos para computação
científica de alto desempenho. Mas, será que ela vai se tornar
mais comum no futuro?
-
Pontos a favor:
-
ler dados da memória de um outra máquina via Fast Ethernet
é mais rápido que ler do disco
-
facilita a migração de processos
-
alguns programadores preferem esse modelo de comunicação
do que troca de mensagens
-
Com o aumento do tamanho da memória e com a queda no preço,
memória virtual vai deixar de ser necessária?
Referências
Próxima Aula
Aula Anterior
Página de MAC 5755
Página do Fabio
Página do DCC