7 Mecanismos de gestão de memória Prof. Ricardo Silva
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
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
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
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
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
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
Hierarquia de memória volátil persistente Mais cara mais barata 8
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
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
Endereços reais e virtuais Espaço de endereçamento Visto pelo programador Memória física Espaço de endereçamento Visto pelo programador Memória física UGM Endereçamento em memória real Endereçamento em memória virtual 11
Endereçamento virtual 12