Gerenciamento de memória
Fundamentos
Todos os computadores possuem memória principais que guardam programas em execução. Em sistemas simples, cada programa é alocado um por vez na memória. Assim, neste caso se outro programa for utilizar a memória, o primeiro deve ser removido e assim é alocado outro.
Atualmente, nos sistemas modernos, vários programas são executados na memória ao mesmo tempo. Nestes sistemas existem meios de proteção gerenciados pelo SO onde cada programa não interfere no outro.
Hoje em dia temos processos de 32 e 64 bits, no passado se acontecesse da memória principal ser toda preenchida, o processo seria perdido ou travava a máquina. Em nossos dias nada disso acontece, se a memória for toda preenchida, o SO aloca parte do programa em disco e vai utilizando conforme seu processamento. A esta parte da memória que é alocada em dissco chamamos de memória virtual.
Swapping
É uma técnica aplicada à gerência de memória que visa dar maior taxa de utilização à memória principal, melhorando seu compartilhamento. Visa também resolver o problema da falta de memória principal num sistema. Toda vez que um programa precisa ser alocado para execução e não há espaço na memória principal num sistema. Toda vez que um programa precisa ser alocado para execução e não há espaço na memória principal, o SO escolhe entre os processos alocados que não têm previsão de utilizar a CPU nos próximos instantes (quase sempre entre aqueles que estão em interrupção de E/S ou no final da fila de pronto), e “descarrega” este processo da memória para uma área especial em disco, chamada arquivo de swap, onde o processo fica armazenado temporariamente. Durante o tempo em que o processo fica em swap, o outro que necessitava de memória entra em execução ocupando o espaço deixado pelo que saiu. Pouco antes de chegar a vez do processo armazenado em swap utilizar a CPU, o sistema escolhe um outro processo para descarregar para swap e devolve o anterior da área de swap para a