Você está na página 1de 4

A memória logica - de um processo é aquela que o processo enxerga ou seja, aquela que é

capaz de endereçar e acessar usando suas instruções, Os endereços manipulados pelo


processo são endereços lógicos. Em outras palavras, as instruções de máquina de um processo
especificam endereços lógicos.

A memória física - é aquele que vai para a memoria física, ou seja, é usado para endereçar
circuitos integrados de memorias

Espaço de endereçamento logico de um processo é formado por todos os endereços que esse
processo gerar, o espaço de endereçamento físico é formado por todos endereços aceitos pelo
circuito integrado de memoria

A unidade de gerência de memória (memory management unit, MMU) é o componente do


hardware responsável por prover os mecanismos básicos que serão usa- dos pelo sistema
operacional para gerenciar a memória. Entre outras coisas, é a MMU que vai mapear os
endereços lógicos gerados pelos processos nos correspondentes endereços fi ́sicos que serão
enviados para a memória.
Existem situações nas quais naõ é possiv
́ el manter todos os processos simultanea- mente na
memória. Uma soluçaõ para essas situações é o mecanismo chamado de swapping. A gerência de
memória reserva uma área do disco para o seu uso. Em determinadas situações, um processo é
completamente copiado da memória para o disco. Sua execuçaõ é suspen- sa, ou seja, seu descritor
de processo é removido da fila do processador e colocado em uma fila de processos suspensos. É
dito que esse processo sofreu um swap-out. Mais tarde, ele sofrerá um swap-in, ou seja, será copiado
novamente para a memória. Seu descritor de processo volta entaõ para a fila do processador, e sua
execuçaõ será reto- mada. O resultado desse revezamento no disco é que o sistema operacional
consegue executar mais processos do que caberia em um mesmo instante na memória. Swapping
impõe aos programas um grande custo em termos de tempo de execuçaõ . Copiar todo o processo da
memória para o disco e mais tarde de volta para a memória é uma operaçaõ demorada. Swapping
pode ser usado tanto com partições fixas como com partições variáveis.

O espaço de endereçamento lógico de um processo é dividido em pá- ginas lógicas de


tamanho fixo. No exemplo, todos os números mostrados são valo- res binários. A memória
lógica é composta por 12 bytes. Ela foi dividida em 3 páginas lógicas de 4 bytes cada uma. O
endereço lógico também é dividido em duas partes: um número de página lógica e um
deslocamento dentro dessa página. No exem- plo, endereços lógicos possuem 5 bits.

A memória fi ́sica também é dividida em páginas fi ́sicas com tamanho fixo, idênti- co ao
tamanho da página lógica0 Os endereços de memória fi ́sica também podem ser vistos como
compostos por duas partes: os 3 primeiros bits indicam um número de página fi ́sica; os 2
últimos bits indicam um des- locamento dentro dessa página fi ́sica.

Um programa é carregado página a página. Cada página lógica do processo ocupa exatamente
uma página fi ́sica da memória fi ́sica. Entretanto, a área ocupada pelo processo na memória
fi ́sica não precisa ser conti ́gua. Mais do que isso, a ordem em que as páginas lógicas aparecem
na memória fi ́sica pode ser aleatória, não precisa ser a mesma da memória lógica. Na
paginação, uma página lógica pode ser carregada em qualquer página fi ́sica que esteja livre.
Dessa forma, não existe fragmentação externa. Como a unidade de aloca- çao ̃ é a página, e o
tamanho de um processo raramente é igual a um múltiplo do ta- manho de página, isso
introduz uma fragmentação interna.
O registrador de base da tabela de páginas (page table base register, PTBR) indica o endereço
fi ́sico de memória onde a tabela está colocada. O registrador de limite da tabela de páginas
(page table limit register, PTLR) indica o número de entradas da tabela.

O objetivo principal da memória virtual é disponibilizar aos usuários uma capacidade de


memória independente da quantidade real de memória fi ́sica (RAM) instalada em um
computador. Para cumprir esse objetivo, o sistema operacional, por meio da im- plementação
do suporte à memória virtual, cria a ilusão de que cada processo possui um espaço de
endereçamento conti ́guo em memória e, em princi ́pio, sem restriçao ̃ de tamanho.

A paginação sob demanda é a implementação de memória virtual baseada no me- canismo de


paginação simples, isso é, cada processo possui uma memória lógica, conti ́gua, a qual é
dividida em páginas lógicas de mesmo tamanho. As páginas lógicas são carregadas em páginas
fi ́sicas, que são áreas de igual tamanho na memória fi ́sica (RAM). A associação (mapeamento)
de qual página fi ́sica corresponde a uma determi- nada página lógica é feita por meio da tabela
de páginas. Na paginação por demanda, apenas as páginas efetivamente acessadas pelo
processo são carregadas para a memória fi ́sica.

Na paginação simples, todas as páginas lógicas de um processo são sempre car- regadas para a
memória fi ́sica, resultando em uma entrada válida na tabela de páginas para cada página
lógica do processo.

Na “paginação por demanda pura”, somente são carregadas para a memória fi ́sica aquelas
páginas realmente referenciadas pelo processo (a carga das páginas é feita à medida que
ocorrem as faltas). O processo inicia só com a sua página zero na memória, ou seja, todas as
entradas da sua tabela de páginas, exceto a primeira, são inválidas.

Para ser executado, um processo necessita estar carregado na memória o que, no caso da
paginação por demanda, implica em se ter em memória uma certa quantidade de páginas
lógicas. Isso significa alocar uma quantidade equivalente de páginas fi ́sicas da memória RAM
para esse processo.

Nas seções anteriores ficou claro que, como parte do atendimento à uma interrupção por falta
de página, uma página fi ́sica livre deve ser alocada. Entretanto, à medida que processos vão
sendo carregados para a memória, é possi ́vel que todas as páginas fi ́si- cas acabem ocupadas.
Nesse caso, para atender à falta de página, é necessário antes liberar uma página fi ́sica
ocupada. Isso significa escolher uma página lógica que está na memória, copiar seu conteúdo
de volta para o disco e marcá-la como inválida na tabela de páginas do seu processo. A página
escolhida para ser copiada de volta ao disco é chamada de página vi ́tima. O algoritmo de
substituição de páginas é responsável pela escolha da página vi ́tima. Ele é muito importante
para a eficiência do mecanismo como um todo. Uma esco- lha errada significa que a página
removida será novamente acessada em seguida, gerando uma nova falta de página.

O bit de sujeira (dirty bit) indica quando uma página foi alterada durante a execução do
processo. Esse bit é zerado pelo sistema operacional quando a página é carregada para a
memória.
O bit de referência (reference bit) indica quando uma página foi acessada pelo processo. Este
bit é feito igual a zero pelo sistema operacional quando a página é car- regada para a memória.

O bit de tranca (lock bit) serve para o sistema operacional “trancar” uma página lógica na
memória fi ́sica.

Em um sistema multiprogramado, a memória é compartilhada por um certo número de


processos, isso é, as páginas lógicas desses processos são alocadas a páginas fi ́sicas até que
não haja mais memória RAM disponi ́vel. A partir desse ponto, para alocar mais memória o
sistema operacional deve liberar uma página fi ́sica selecionando, por consequência, uma
página lógica associada a essa página fi ́sica. A determinação da página a ser substitui ́da é feita
por um algoritmo de substituição de páginas que recai em uma de duas classes genéricas
possi ́veis: classe global e classe local.

̃ é aquele que escolhe uma página lógica que já foi


Logo, o algoritmo ótimo de substituiçao
utilizada por um programa e não será mais necessária ou aquela página que será utilizada no
futuro mais distante. O objetivo é evitar que uma página em breve necessária venha a ser
substitui ́da.

O algoritmo FIFO (first in – first out) escolhe para substituição a página que está há mais tempo
residente em memória. A principal vantagem do FIFO é sua implementação simples: basta uma
lista de até M posições e um ponteiro para indicar a frente da fila.

O sistema de armazenagem LIFO significa “last in, first out”, o que quer dizer, em
português, “último que entra, primeiro que sai”, enquanto o sistema FIFO significa
“first in, first out”, ou seja, “primeiro que entra, primeiro que sai”.
O algoritmo LRU (least recently used) surge então como opção para corrigir a defi- ciência do
FIFO de não considerar a localidade de referência. O LRU escolhe como página vi ́tima aquela
que foi acessada a mais tempo, isso é, a que foi “menos recentemente utilizada”.

Algoritmos locais

O princi ́pio de funcionamento dessa poli ́tica é novamente ilustrado com a análise de um
algoritmo ótimo. Nesse caso, para cada processo, o algoritmo ótimo ajus- ta o número de
páginas em memória de acordo com as suas futuras referências.

O modelo de working set é uma aproximaçao ̃ do algoritmo ótimo que estima quais as páginas
serão necessárias no futuro com base em quais páginas foram acessadas no passado.

O tratamento de uma falta de página é várias ordens de grandeza mais lento que um acesso
normal à memória. Logo, o impacto da taxa de falta de página sobre o tempo de execuçao ̃ de
um processo é muito grande. Quando um processo possui um número muito pequeno de
páginas fi ́sicas para executar, a sua taxa de falta de página aumenta e, à medida que isso
acontece, o processo para de realizar qualquer trabalho útil. Tudo que o processo faz é esperar
pelo atendimento de faltas de páginas. Nesse momento, é dito que está ocorrendo thrashin
Para os usuários, o thrashing se apresenta como o sintoma de um congelamento no sistema.
No caso da alocação local, esse congelamento poderá estar limitado a apenas alguns
processos.