Notas de Aula - MAC 5755 - Sistemas Operacionais Distribuídos
Aula 7 - 10/9/2003
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); onde key é um
número único ou IPC_PRIVATE; devolve o shmid
void *shmat (int shmid, const void *shmaddr, int shmflg); se o
shmaddr é NULL, escolhe um endereço e o devolve
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 ou distribuído
- Múltiplos Leitores / Único Escritor
- modelo centralizado (Fig 4.4 Galli)
- 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) (e.g., mesmo tamanho dos pacotes de rede)
- Estrutura do Espaço de Memória
- sem estrutura (seqüência de bytes)
- 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