2. Introdução
• Um programa reside no disco sob a forma de ficheiro
executável
• Para ser executado, o programa tem de ser colocado em
memória e associado a um processo
• Em função da política de gestão de memória, o processo
poderá transitar entre o disco e a memória durante o seu
tempo de execução
• À medida que o processo é executado, este pode aceder ao
subsistema de gestão de memória para:
– aceder ao seu código
– aceder a dados
– requisitar espaço de memória
• Ao terminar, a memória por ele utilizada é libertada
2
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos
3. Mecanismos de gestão de memória
• O módulo de gestão do SO faz:
– Gestão e optimização da memória física
– Suporta a memória virtual
– Implementa algoritmos de manipulação do espaço
de endereçamento dos processos
– Torna transparente a localização dos dados entre a
memória primária e secundária
3
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos
4. Espaço de endereçamento de um processo
• É o conjunto de posições de memória que
esse processo pode referenciar
• Toda a informação relevante está associada ao
contexto do processo
• O espaço de endereçamento é imposto pelo
SO
• O espaço de endereçamento é dividido em:
– Secção de nível utilizador
– Secção de nível sistema
4
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos
5. Espaço de endereçamento de um processo
• Stack
– Variáveis automáticas
(argumentos de funções,
variáveis locais)
• Heap
– Estruturas de dados
dinâmicas
• Data
– Variáveis globais e estáticas
• Text
– Texto e dados do programa
5
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos
6. Referências de memória
• Os programas referenciam memória para:
– Ler instruções
– Ler e escrever dados
• A leitura ou escrita de dados implica a
transferência de múltiplos bytes entre o
processador e a memória
• Os endereços referenciam bytes
• Um endereço permite aceder a um byte
endereço -> valor
6
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos
7. Modelo computacional
• O programador tem acesso a um conjunto de
instruções que pode usar para manipular o
espaço de memória de um processo
Operações
Alocar – reservar memória
Libertar – liberta a memória anteriormente reservada
Proteger – proteger dados contra escrita
Mapear – associar um espaço de memória ao conteúdo de um ficheiro
Desmapear – destruir a associação anterior
Associar – associar um espaço de memória a outro espaço de memória partilhado
Deassociar – destruir a associação anterior
7
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos
8. Hierarquia de memória
volátil persistente
Mais cara mais barata
8
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos
9. Endereços reais e virtuais
• Os primeiros computadores suportavam apenas endereçamento
real
– Os endereços gerados pelo programa têm uma relação directa com os
endereços da memória primária
• Um endereço real refere-se sempre à memória primária, nunca à
memória secundária
• Este método apresenta desvantagens
– A dimensão do programa é limitado pela dimensão da memória
primária
– Um programa só pode funcionar na máquina onde foi compilado, não
podendo executar noutra máquina com um diferente mapa de
memória
– A multiprogramação não é possível
• Dois programas podiam ser compilados para usar os mesmos endereços de
memória
• A resposta está no endereçamento virtual
9
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos
10. Endereços reais e virtuais
• Um endereço virtual não se refere nem à memória primária nem à
memória secundária
• O hardware gere a gestão de memória
• O sistema operativo, através da UMG (Unidade Gestão Memória)
gere a correspondência entre endereços virtuais e reais
• O byte referenciado pelo endereço virtual pode estar na memória
primária ou secundária
– Se estiver na memória primária, o endereço virtual é traduzido para o
endereço físico e o byte é lido
– Se estiver na memória secundária, o SO é avisado e este carrega o
byte em causa em memória primária (afecta o desempenho)
• Assim é possível ter um espaço de endereçamento virtual maior
que a memória primária
10
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos
11. UGM
Endereços reais e virtuais
Endereçamento em memória real Endereçamento em memória virtual
Espaço de endereçamento
Visto pelo programador
Memória física Memória física
Espaço de endereçamento
Visto pelo programador
11
Ricardo Silva - Sistemas Operativos e
Sistemas Distribuídos