Como o sistema operacional gerencia o armazenamento e a memória

Autor: 
Dave Coustan and Curt Franklin

Quando o sistema operacional gerencia a memória do computador, duas grandes tarefas precisam ser cumpridas.

  1. Cada processo deve ter memória suficiente para ser executado. Ele não pode utilizar a memória de outro processo e outro processo também não pode utilizar a sua memória.
  2. Os diferentes tipos de memória no sistema devem ser bem utilizados para que cada processo seja executado de forma eficaz.

Para realizar a primeira tarefa, o sistema operacional tem de definir os limites de memória para cada tipo de software e aplicativo.

Como um exemplo, vamos criar um pequeno sistema imaginário com 1 Gigabyte (1.000 megabytes) de memória RAM. Durante o processo de boot (inicialização), o sistema operacional do nosso computador imaginário vai utilizar toda a memória disponível. Depois ele "recua" o suficiente para atender às necessidades do próprio sistema operacional. Vamos supor que o SO precise de 300 megabytes para rodar. Agora, o sistema operacional vai para o fim da memória RAM e distribui essa memória para diversos drivers necessários para controlar os subsistemas do computador. No nosso computador imaginário, os drivers ocupam 200 megabytes. Agora que o sistema operacional foi completamente carregado, existem 500 megabytes disponíveis para os processos dos aplicativos.

Quando os aplicativos começam a ser carregados na memória, eles são carregados em blocos. O tamanho desses blocos é determinado pelo sistema operacional. Se o tamanho do bloco é 2 megabytes, todo processo carregado receberá um pedaço da memória que é múltiplo de 2 megabytes. Os aplicativos serão carregados nestes tamanhos fixos de blocos. Os blocos iniciarão e terminarão nos limites estabelecidos por palavras de 4 ou 8 bytes. Esses blocos e limites organizam o carregamento dos aplicativos, impedindo sobreposição. Depois que o processo estiver concluído, a pergunta que nos resta é: o que se pode fazer quando o espaço de 500 megabytes for ocupado?

Na maioria dos computadores, é possível adicionar mais memória, além da capacidade original. Por exemplo, você pode expandir a memória RAM de 1 para 2 Gigabytes. Isto funciona, mas custa caro. Este fato também ignora um dado importante da computação: a maioria da informação que um aplicativo armazena na memória não está sendo usada o tempo inteiro. Como um processador só pode acessar um local da memória por vez, a maior parte da memória RAM não é utilizada. Como o espaço de disco rígido é mais barato do que a memória RAM, mover a informação da memória RAM para o disco rígido é uma solução sem custo algum. Esta técnica é conhecida como gerenciamento da memória virtual.

O armazenamento em disco é apenas um dos tipos de memória que podem ser gerenciados pelo sistema operacional. Também é a memória mais lenta. A seguir, veja uma classificação por velocidade dos tipos de memória em um computador.

  • Memória cache de alta velocidade. Pequenas quantidades de memória disponíveis para a CPU através das conexões mais rápidas. Os controladores de memória cache prevêem que tipo de dados a CPU vai precisar e os transferem da memória principal para a memória cache de alta velocidade para aumentar o desempenho do sistema.
  • Memória principal. Está é a memória RAM, medida em mega e  em gigabytes.

    ­

  • Memória secundária. É um tipo de armazenamento magnético rotativo que mantém os aplicativos e dados prontos para serem usados. Também serve como memória RAM virtual gerenciada pelo sistema operacional.

­O sistema operacional deve equacionar as necessidades dos diversos processos com a disponibilidade dos diferentes tipos de memória. Ele pode mover dados em blocos (chamados de páginas) para a memória disponível de acordo com a necessidade dos processos.