Hoje em dia, todos os computadores de uso geral são do tipo conhecido como computadores de programas armazenados. Como o nome implica, os computadores de programas armazenados carregam as instruções (os blocos construtores dos programas) em algum tipo de armazenamento interno, onde subsequentemente executam estas intruções.
Os computadores de programas armazenados também usam o mesmo armazenamento para dados. Isto contrasta com os computadores que usam a configuração de seu hardware para controlar sua operação (tais como computadores antigos baseados no plugboard).
O local onde os progrmas eram armazenados nos primeiros computadores de programas armazenados tinha nomes variados e usava diversas tecnologias diferentes, desde pontos num tubo de raio cátodo à pressão em colunas de mercúrio. Felizmente, os computadores de hoje usam tecnologias com maior capacidade de armazenamento e tamanhos como nunca vistos antes.
Algo para ter em mente ao longo deste capítulo é que os computadores tendem a acessar o armazenamento de determinadas maneiras. De fato, a maioria do acesso ao armazenamento tende a exibir um (ou ambos) dos seguintes atributos:
O acesso tende ser sequencial
O acesso tende ser localizado
Acesso sequencial significa que, se o endereço N é acessado pela CPU, é bem provável que o endereço N+1 seja acessado em seguida. Isto faz sentido, já que a maioria dos programas consiste de grandes seções de instruções que são executadas — em ordem — uma após a outra.
Acesso localizado significa que, se o endereço X é acessado, é provável que outros endereços próximos ao X também sejam acessados no futuro.
Estes atributos são cruciais porque permitem que um armazenamento menor e mais rápido carregue um armazenamento maior e mais lento. Esta é a base para a implementação da memória virtual. Mas, antes de abordarmos a memória virtual, precisamos examinar as diversas tecnologias de armazenamento em uso no momento.