Gerência de Memória

O gerenciamento de memória é necessário porque a memória primária (ou memória principal - RAM), que é um dos elementos básicos da arquitetura computacional atual, tem a velocidade de suas operações de leitura e escrita consideravelmente mais baixas, do que a velocidade dos processadores, o que é conhecido como gargalo de Von Neumann. Como todo processo utiliza memória primária, ao gerenciarmos memória estamos, indiretamente, gerenciando os processos.

A gerência de memória é a parte do SO responsável por garantir que cada programa tenha uma área de memória para o seu código e os seus dados, garantidas a segurança e integridade para a sua execução.

Em um computador atual, vários processos estão em execução simultaneamente e, para isso, precisam estar alocados na memória. Em um sistema computacional o armazenamento de dados ocorre hierarquicamente, ou seja, em diversos níveis de acordo com os tipos de dispositivos, devido a quatro fatores básicos:

  • Tempo de acesso; 
  • Velocidade de operação; 
  • Custo por unidade de armazenamento; 
  • Capacidade de armazenamento. 

Devido às dificuldades tecnológicas, associadas à construção de dispositivos eficientes de memória e seu custo, o armazenamento de dados em um sistema computacional apresenta a seguinte organização:

a) Armazenamento interno: são posições de memória disponíveis internamente no processador, como os registradores e seu cache interno;

b) Armazenamento primário: são posições de memória externa, diretamente acessíveis pelo processador, como os circuitos do tipo RAM, EEPROM, EPROM, PROM ou ROM;

c) Armazenamento secundário: são as posições de memória externa que não podem ser acessadas diretamente pelo processador, devendo ser movidas para o armazenamento primário antes de sua utilização, como as unidades de disco rígido e mídias removíveis.

Termo do glossário: Cache: é um dispositivo de memória com acesso rápido que serve de intermediário entre um operador de um processo e o dispositivo de armazenamento ao qual esse operador acessa e que guarda temporariamente os dados acessados. Em um novo acesso, os dados são obtidos da própria cache ao invés de acessar o dispositivo de armazenamento. 

O armazenamento interno é aquele que possui as maiores velocidades de acesso e as mais altas taxas de transferência de dados, embora sendo os mais caros. Por este motivo as quantidades e memória deste tipo são menores. Em contrapartida, os dispositivos de armazenamento secundário são os de maior capacidade e de melhor relação custo por byte, mas significativamente mais lentos. A memória primária representa um caso intermediário, onde a velocidade e tempo de acesso são adequados à operação, mas ainda não com o nível desejado. A Figura 69 apresenta a organização da memória em níveis.


O modelo apresentado na Figura 69 pode ser percebido nos computadores atuais, onde temos no topo do armazenamento secundário os discos rígidos, com capacidade média de 1 TeraByte (TB), custando aproximadamente R$ 200,00 e com taxa de transferência de dados de 300MB/s; para o armazenamento primário temos memória RAM DDR4 com capacidade de 4 GigaBytes (GB), custando aproximadamente R$ 200,00 e com taxa de transferência de dados de 16GB/s (16 GigaBytes por segundo); para comprar um processador com 6MB de cache adicional paga-se aproximadamente R$ 200,00, com uma taxa de transferência de 64GB/s. Ou seja, os 3 dispositivos têm o mesmo custo, porém a quantidade de bytes armazenados é 1TB, 4GB e 6MB respectivamente, e as taxas de transferência dos dados (velocidade) são 300MB/s, 16GB/s e 64GB/s.

Com a evolução dos computadores, a atual organização conta com outros elementos adicionados para otimizar a performance do sistema e ainda assim reduzir seu custo, como mostra a Figura 70.


Os registradores são implementados em número limitado, devido ao seu custo, e utilizados para armazenar temporariamente os dados dentro do processador enquanto estão sendo manipulados. Os caches interno e externo, devido à suas maiores velocidades, são usados para manter uma pequena porção do programa e dos dados mais usados que pode, assim, ser acessada mais rapidamente do que na memória principal, aumentando o desempenho do sistema (DEITEL, 2005).

A memória primária armazena os programas e dados em execução no sistema. Os dispositivos de armazenamento secundário são usados para armazenamento dos dados de forma permanente, embora também possam ser usados para expandir as capacidades da memória primária. O cache de disco é utilizado para acelerar a operação das unidades de disco, podendo, esta técnica, ser utilizada para outros tipos de periféricos.

A necessidade de manter múltiplos programas ativos na memória do sistema, obriga o SO a controlar como esta memória é utilizada por estes vários programas. Como a memória é um recurso caro, cuja administração influencia diretamente a eficiência e desempenho de um sistema computacional, o SO precisa considerar as três estratégias para sua utilização:

Estratégias de busca (fetch): as estratégias de busca preocupam-se em determinar qual o próximo bloco de programa ou dados que deve ser transferido da memória secundária para a memória primária. Usualmente se utilizam estratégias de demanda, ou seja, são transferidos os blocos determinados como necessários para a continuação do processamento; 

Estratégias de posicionamento (placement): são as estratégias relacionadas com a determinação das regiões da memória primária (física) que serão efetivamente utilizados pelos programas e dados, ou seja, pela determinação do espaço de endereçamento utilizado;

Estratégias de reposição ou substituição (replacement): são as estratégias preocupadas em determinar qual bloco será enviado à memória secundária para disponibilização de espaço na memória principal para execução de outros programas, ou seja, determinam quais blocos de memória serão substituídos por outros.

Todo SO possui alguma estratégia de busca e alguma estratégia básica de posicionamento. O aumento da sofisticação dos sistemas computacionais exige a utilização de estratégias de busca e posicionamento mais sofisticadas e, para maximizar-se as capacidades dos sistemas computacionais, são necessárias as estratégias de reposição. 


Comentários

Postagens mais visitadas deste blog

Transferência de arquivo por FTP

TIPOS DE PROCESSOS

Tipos de Servidores