quinta-feira, 3 de março de 2011

Gestão de Memória

Introdução

A Gestão de memória é um complexo campo da ciência da computação e são constantemente desenvolvidas várias técnicas para torná-la mais eficiente. Na sua forma mais simples, está relacionado em duas tarefas essenciais, sendo elas, a alocação e a reciclagem.
A gestão da memória deve desempenhar as seguintes funções:
 permitir a partilha da memória (para um sistema multi-tarefas);
 permitir atribuir blocos de memória às diferentes tarefas;
 proteger os espaços memória utilizados (impedir, por exemplo, um utilizador de alterar uma tarefa executada por um outro utilizador);
 optimizar a quantidade de memória disponível, nomeadamente por mecanismos de extensão da memória.
A memória é um recurso importante que deve ser gerido com muito cuidado. Chama-se “memória” a todos os componentes electrónicos capazes de armazenar temporariamente dados. Podemos então, distinguir duas categorias de memórias:
 a memória central (chamada de memória interna), permite memorizar temporariamente os dados aquando da execução dos programas. A memória central é realizada com a ajuda de microcondutores, ou seja, circuitos electrónicos especializados rápidos. A memória central corresponde ao que se chama de memória viva.
 a memória de massa (chamada de memória física ou memória externa),permite armazenar informações a longo prazo, incluindo aquando do arranque do computador. A memória de massa corresponde aos dispositivos de armazenamento magnéticos, como o disco duro, os dispositivos de armazenamento óptico, correspondendo por exemplo ao CD-ROM ou os DVD-ROM, bem como as memórias mortas.
A memória tem como principais características: a capacidade, o tempo de acesso, o tempo de ciclo, o débito e a não volatilidade.


Atribuições de instruções e dados à memória (Binding)

A maior parte dos SO permite que um programa possa ser colocado em qualquer posição de memória. No entanto, esta atribuição pode ser em:
 Tempo de compilação – se a localização do programa poder ser conhecida a priori é gerado código com endereços absolutos. Alterações à localização do programa obrigam à sua recompilação.

 Tempo de carga – obriga o compilador a gerar código relocatável, a atribuição do programa a um determinado conjunto de endereços é feita na sua carga para memória

 Em run-time – se durante a execução do programa este poder ser recolocado noutra localização de memória. O que implica a utilização de hardware específico

Endereços Lógicos e Físicos

Nos sistemas actuais, quando a imagem de um processo é gerada, nunca é conhecido o local onde vai ser carregado um processo.
Durante a execução de um processo, este pode vir a ser carregado em zonas distintas de memória.
A separação entre o espaço de endereçamento lógico e espaço de endereçamento físico de um processo é essencial para a Gestão de Memória:
 Endereços lógicos – gerados pelo CPU, também conhecidos por endereços virtuais;
 Endereços físicos – endereços efectivamente enviados para a memória.
O mapeamento (correspondência) entre o espaço lógico e físico é realizado por um dispositivo hardware fundamental:
 Unidade de Gestão Memória ou Memory Management Unit.

Overlays

 Permite que a execução de um programa com tamanho superior ao total de memória disponível
 Apenas ficam em memória as instruções necessárias no momento
 O programador é responsável pelo controlo dos overlays, o SO não tem qualquer papel no seu controlo
 Fora de uso!!!
Swapping

É um mecanismo que permite retirar um processo da memória principal e para a memória secundária (disco), podendo ser utilizado em conjunto com o critério de escalonamento. Pode também ser utilizado em Round-Robin, sendo o processo retirado para o disco assim que terminar o seu time quantum.
Na questão da prioridade, os processos menos prioritários são retirados para o disco até poderem ser executados.
Pode reduzir fortemente a performance do sistema, por exemplo, o tempo necessário para retirar um processo com 1MB da memória e colocá-lo em disco é aproximadamente de 208ms.


Conclusão

A memória principal e os registos e o cache são os únicos dispositivos de armazenamento que o CPU pode aceder directamente. Quando um programa é executado, o seu código tem portanto de ser trazido de disco para a memória central, a imagem do processo é carregada em memória.
Para que o processo possa ser carregado em memória é necessário atribuir-lhe um espaço que pode ser em qualquer zona da memória física que esteja livre, ou num designado por espaço de endereçamento físico do processo.
Uma vez que existem inúmeros processos carregados simultaneamente em memória (residentes), os processos residentes em memória devem ter espaços físicos distintos e têm de existir mecanismos de protecção memória para assegurar a separação entre eles.


Autores: Patrícia Pirraça, Helder Lebreiro e Ricardo Galope

Sem comentários:

Enviar um comentário