A memória de um sistema computacional é um recurso escasso e que deve ser gerenciado da maneira correta pelo sistema operacional. Diversas estratégias são utilizadas tanto para otimizar o espaço disponível para cada processo quanto para otimizar o tempo de resposta das memórias. Os sistemas operacionais usam o conceito de Hierarquia de memória para criar abstrações que tornem possível a aplicação desse conceito em sistemas reais.
Com múltiplos processos sendo executados ao mesmo tempo, é inviável que suas instruções referenciem endereços de memória físicos da máquina, pois isso poderia causar erros de execução e um processo poderia sobrescrever os dados de outro. A partir disso surgiu a necessidade de criar alguma abstração que permitisse que os programas referenciassem endereços lógicos, sem se preocupar com os reais endereços físicos do hardware, e que o sistema operacional se ocupasse de traduzir esses endereços para os reais endereços absolutos em hardware. Isso, além de garantir mais segurança e permitir a execução de vários processos ao mesmo tempo, também facilita o desenvolvimento de programas, pois não é necessário pensar nos endereços absolutos de cada hardware, basta apenas trabalhar no próprio contexto de endereçamento privado do programa.

Espaço de endereçamento

A abstração mais básica para resolver o gerenciamento de memória é o espaço de endereçamento. Um espaço de endereçamento é o conjunto de endereços que um processo pode usar para endereçar a memória. Cada processo tem seu próprio espaço de endereçamento isolado dos demais processos.
Uma forma simples de se implementar o espaço de endereçamento é a utilização de registradores base e limite implementados em hardware. Quando um processo é executado, o endereço de memória física no programa começa é armazenado no registrador base, e o tamanho do programa é armazenado no registrador limite. Dessa forma, toda vez que um processo referencia a memória, o hardware da CPU automaticamente adiciona ao endereço referenciado o valor presente no registrador base, e então verifica se esse valor ultrapassa o do registrador limite, para impedir que o processo referencie endereços fora do seu espaço de armazenamento.

Troca de processos (swapping)

É comum que em sistemas modernos a memória necessária para executar todos os processos ativos ultrapassa o tamanho da memória física disponível. Tendo isso em vista, é necessário algum mecanismo que permita que os processos possam ser executados sem aumentar a quantidade de memória disponível. Para resolver esse problema foi desenvolvida a técnica de swapping, que consiste em, ao invés de manter todos os processos carregados na memória principal ao mesmo tempo, carregar um processo que está sendo executado pelo processador naquele momento para a memória principal, e manter processos ativos, porém que não estão sendo executados naquele momento, armazenados no disco.