Sei sulla pagina 1di 4

E. E. E. PROFISSIONAL DR.

SOLON TAVARES
CURSO TÉCNICO EM DESENVOLVIMENTO DE SOFTWARE
MÓDULO I – 12DS
GERENCIAMENTO DE MEMÓRIA
Isabel Stumpf Mitchell1
isabel@isabelmitchell.com

O gerenciamento de memória é uma das partes mais importantes do sistema operacional, pois
é na memória que são armazenados os dados necessários à execução dos programas (NEIVA et all)
Segundo Silva, a memória lógica é o tipo de memória em que o processo enxerga, sendo que
os endereços lógicos são aqueles que são manipulados por um processo. Já a memória física é
implementada pelos circuitos integrados de memória e um endereço físico é aquele que corresponde
a uma posição real na memória.
Conforme COLETTA, o gerenciador de memória é a parte do sistema operacional responsável
por controlar quais partes da memória estão sendo utilizadas, quais as livres, alocar memória a
processos quando eles precisam, desalocar quando eles não necessitarem mais e gerenciar a troca
dos processos entre a memória principal e o disco (quando a memória principal não é suficiente
para manter todos os processos).
Métodos de gerencia de memória:
1. A memória virtual por paginação é a técnica de gerência de memória onde o espaço
de endereçamento virtual e o espaço de endereçamento real é dividido em blocos de mesmo
tamanho, chamados de páginas. As páginas no espaço virtual são denominadas páginas virtuais,
enquanto as páginas no espaço real são chamadas de páginas reais ou frames.
2. A memória virtual por segmentação é a técnica de gerência de memória onde o
espaço de endereçamento virtual é dividido em blocos de tamanhos diferentes chamados segmentos.
Na técnica de segmentação, um programa é dividido logicamente em sub-rotinas e estruturas de
dados, que são alocadas em segmentos na memória principal. (Scribd)

“Memória virtual é uma técnica sofisticada e poderosa de gerência de memória, onde as


memórias principal e secundária são combinadas, dando ao usuário a ilusão de existir uma memória
muito maior que a capacidade real da memória principal. O conceito de memória virtual
fundamenta-se em não vincular o endereçamento feito pelo programa aos endereços físicos da
memória principal. Desta forma, programas e suas estruturas de dados deixam de estar limitados ao
tamanho da memória física disponível, pois podem possuir endereços associados à memória
secundária.” (Scribd)
Ou seja, é uma forma de contornar a falta de memória RAM, de forma que o computador
utiliza a memória do HD para que possa criar, virtualmente uma memória, que funcione que nem a
RAM, mas muito mais lenta. (Wikepedia).
O dispositivo de hardware responsável pela tradução de endereços virtuais é a unidade de
gerência de memória (Memory Management Unit – MMU). Esta é acionada sempre que se faz
referência a um endereço virtual. (Scribd)
A memória virtual consiste em recursos de hardware e software com três funções
básicas[1][2]: (i) relocação (ou recolocação), para assegurar que cada processo (aplicação) tenha o
seu próprio espaço de endereçamento, começando em zero; (ii) proteção, para impedir que um
processo utilize um endereço de memória que não lhe pertença; (iii) paginação (paging) ou troca
(swapping), que possibilita a uma aplicação utilizar mais memória do que a fisicamente existente
(essa é a função mais conhecida).
A memória virtual é dividida em três partes: localidade de referência, alocação de memória
e algoritmos de substituição de páginas na memória.
Conforme Scama, a execução de um programa, geralmente, se concentra em determinados
intervalos, em regiões bem determinadas do espaço de endereçamento do processo e, a constatação
dessa execução está relacionada com o Princípio da localidade e referência. Este, é um programa
que acessa uma porção relativamente pequena do espaço endereçável em um instante qualquer. A
localidade espacial está relacionada com a execução concentrada em uma região., “Analogamente,
um programa é escrito de forma a acessar frequentemente algumas variáveis de controle e empregar
estruturas de dados do tip de vetores e matrizes. Essa característica concentra os acessos a regiões
de memória onde esses dados estão armazenados (localidade espacial). ”(Scama)
“Um processo para ser executado 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 físicas na memória RAM para esse
processo. Algumas questões então estão associadas a essa alocação.“(Scama)
De acordo com Scama, uma das solução para isso é a alocação igualitária, que consiste em
uma divisão entre os processos ativos a a quantidade total de páginas físicas existentes no sistema.
“Dessa forma, cada processo recebe uma quantidade de páginas físicas
equivalente ao número total de páginas físicas existentes dividido pela quantidade total de processos
ativos. Entretanto, essa solução provoca algumas distorções, já que nem todos os processo possuem
as mesmas necessidades de memória. Uma forma de corrigir essa distorção é considerar uma
constante de proporcionalidade (alocação proporcional), como, por exemplo, o tamanho dos
processos. Nesse caso, processos maiores recebem mais páginas físicas que processos menores,
mantendo a relação páginas carregadas sobre tamanho uma constante independentemente do do
tamanho do processo. ” (Scama)
“Em um sistema multiprogramado a memória é compartilhada por um certo número de
processos, a determinação da página a ser substituída é feita por um algoritmo de substituição de
páginas que recai em uma de duas classes genéricas possíveis: classe global e classe local.
”(Scama)
A classe global envolve os algoritmos: FIFO (First In – First Out), LRU (Least Recently
Used). Já a classe local, envolve os algoritmos do tipo frequência de falta de páginas (FFP) e
Trashing.
Os tipo FIFO escolhem para a substituição, a página que está a mais tempo residente em
memória. Sua principal vantagem é que sua implementação é simples, onde necessita apenas de
uma lista de até M posições e um ponteiro para indicar a frente da fila. No entanto, essa estratégia
não considera a utilização de uma página, ou seja, a página apontada como primeira da fila pode ser
uma página acessada muito frequentemente ou que será necessária em breve. Já os algoritmos LRU
escolhem como página vítima aquela que foi acessada a mais tempo, isto é, a que foi “menos
recentemente usada”, ao contrário do FIFO.
“O LRU parte da premissa que as páginas acessadas recentemente por um
processo continuarão a ser necessárias em um futuro próximo. A implementação básica de um
algoritmo LRU é feita mantendo-se uma lista de páginas carregadas em memória com o registro do
tempo do último acesso. Ao ser necessário escolher uma página vítima o SO percorre essa lista
buscando a página lógica que possui a “hora” de acesso mais antiga. A principal desvantagem de
um algoritmo LRU é seu custo computacional pois, a cada acesso à memória, é necessário atualizar
o tempo de acesso da página e/ou reordenar a lista de páginas. Pode-se aproximar o comportamento
do algoritmo LRU através de um histórico de bits de referência, ounde cada página possui um bit de
referência associado. A MMU liga esse bit cada vez que a página é acessada. A gerência de
memória pode implementar um histórico, amostrando periodicamente os bits de referência. A cada
amostragem, esses bits são copiados da tabela de páginas para o histórico e então zerados na tabela
de páginas. Como o histórico possui uma capacidade limitada, é necessário descartar uma
amostragem antiga antes de inserir uma nova.”(Scama)
“O algoritmo de frequência de falta de páginas (FFP) ajusta dinamicamente
a quantidade de páginas físicas alocadas a um processo contabilizando o número de faltas de página
que ele provoca dentro de um intervalo de tempo. Esse método utiliza três parâmetros de
configuração: taxa de falta de página, máxima e mínima, admissíveis no sistema e um período de
contabilização de faltas de página.“(Scama)
E o último, o algoritmo do tipo Thrashing. Como o tratamento de uma falta de página é muito
mais lento que um processo normal à memória, o impacto da taxa de falta de página sobre o tempo
de execução de um processo é muito grande, também. Quando um processo possui um número
muito pequeno de páginas físicas para executar, a sua taxa de falta de página aumenta. Á medida
que a taxa de falta de página aumenta o processo pára de realizar qualquer trabalho útil. Tudo que o
processo faz é esperar pelo atendimento de faltas de páginas. Nesse momento, é dito que está
ocorrendo Thrashing.(Scama)

Referências:
 NEIVA, Danuza, Girlena Oliveira, Menandro Santana. Monografia Sistema
Operacional Linux. Disponível em: <im.ufba.br/pub/MATA58/.../Monografia_Linux.doc>. Acesso
em: 27 de maio de 2010.
 Scama, Rodrigo. Disponível em:
<http://professor.rodrigoscama.com.br/textos/SO_MemoriaVirtual.pdf>. Acesso em: 29 de maio de
2010.
 Scribd. Gerência de memória virtual. Disponível em:
<http://www.scribd.com/doc/5565650/09GERENCIA-DE-MEMORIA-VIRTUAL>. Acesso em: 22
de maio de 2010.
 Scribd. Gerência de memória. Disponível em:
<http://www.slideshare.net/audineisilva1/gerenciamento-de-memoria>. Acesso em: 27 de maio de
2010.
 COLETTA, Alex De Francischi. Disponível em:
<http://www.alexcoletta.eng.br/2008/gerenciamento-de-memoria/>. Acesso em: 29 de maio de
2010.

Potrebbero piacerti anche