Memória Virtual
A
memória virtual é o que existe de mais importante em sistemas
muliprogramação, multiusuário. Consiste na divisão
de um programa em uma série de pedaços, sendo que estes pedaços
ficam gravados no disco e a partir de então quando o sistema solicitar
que cada pedaço seja processado, este é transportado para
a memória principal e então processado. Este transporte é
feito a nível de microprogramação e estou querendo
explicar apenas os princípios básicos do tratamento de um
sistema operacional com memória virtual. A cada transporte de partes
do programa o sistema se encarrega de atualizar as cópias que estão
na memória secundária através de uma tabela denominada
tabela de paginação pois, as partes do programa são
tratados como páginas, estas páginas possuem tamanhos fixos
e iguais.
É a separação
entre os conceitos de espaço de endereçamento e posições
de memória. É a definição de mapeamento do
espaço de endereçamento nos endereços de meória
real.
Procedimento de paginação
em um computador de 16 bits com memória de 4k:
-
O programa superior à capacidade de
memória é gravado parcialmente na memória principal
e outra parte na memória secundária;
-
As palavras correspondentes àquelas
superiores a 4096 seriam localizadas na memória secundária;
-
Estas palavras seriam carregadas para a memória
principal;
-
O mapa de endereços é mudado
para mapear os endereços superiores nas posiçoes de 0 a 4095;
-
A execução do programa continuaria
como se nada tivesse acontecido.
O mapa de memória
relaciona endereços virtuais (memória secundária)
a endereços físicos (memória principal).
Na memória virtua
temos a cópia de um programa completo na memória secundária
e suas partes são transportadas para a memória principal
como já foi dito. Os tamanhos de páginas variam de 512 a
4096 conforme o sistema operacional mas, o tamanho será sempre uma
potência de 2. É através de uma tabela de páginas
que está no nível de microprogramação que o
sistema operacional "sabe" onde encontrar a página solicitada para
execução. Nesta tabela temos a localização
da página (principal ou secundária), como setor ou trilha
caso esteja na memória secundária, caso contrário,
o endereço da página na memória principal. A tabela
é descrita abaixo:
|
bit (0 ou 1)
|
M. Secundária
|
M. Principal
|
Na primeira coluna temos
um bit de indicação em que quando o valor for 0 então
a página solicitada está na memória secundária,
caso contrário está na memória principal. A segunda
coluna possui 8 bits que irá indicar a posição, setor,
trilha em que está a página. Na terceira coluna de 3 bits
indica a posição na memória principal.
® [email protected]