Este documento discute vários aspectos da gestão de memória em sistemas operativos, incluindo a organização da memória real e virtual, os algoritmos de substituição de páginas e o papel da gestão de memória na multiprogramação. Aborda tópicos como paginação, segmentação, tabelas de páginas e a hierarquia da memória.
1. UNIVERSIDADE LURIO
FACULDADE DE ENGENHARIA
LICENCIATURA EM ENGENHARIA INFORMÁTICA
SISTEMA OPERATIVO
Gestão de Memória
Estudantes:
Abel Mondlane
Alberto Cipriano
Cesar Moda
2. Introdução
A seguir discutiremos várias formas de gerir a memória em que podemos observar
qual o papel da memória na multi-programação, como a memória real e virtual está
organizada, assim como os algoritimos de substituição de páginas em caso de haver
falta de uma páginas.
Na gestão de memória, os algoritmos variam desde uma abordagem primitiva da
bare-machine até estratégias de paginação e segmentação. Cada abordagem tem as
suas próprias vantagens e desvantagens. A Seleção de um método de gestão de
memória para um sistema específico depende de muitos factores, especialmente da
concepção do hardware do sistema.
Como veremos, muitos algoritmos requerem suporte de hardware, embora os
designs recentes integraram de perto o hardware e o sistema operativo. O trabalho
tem como bjectivo geral, descrever as principais técnicas de gestão de memória
implementas pelos sistemas operativos modernos.
3. Gestão de Memória
● Segundo (Silberschatz, Galvin, & Gagne, 2009), a memória principal é uma
grande variedade de palavras ou bytes, de centenas de milhares a milhares de
milhões. Cada palavra ou byte tem o seu próprio endereço. A memória principal
é um repositório de acesso rápido dos dados partilhados pelo CPU e
dispositivos E/S.
4. Gestão de Memória
● Segundo (Silberschatz, Galvin, & Gagne, 2009), o sistema operativo é
responsável pelas seguintes actividades relacionadas com gestão de memória:
● Manter um registo de que partes da memória estão actualmente a ser utilizadas
e por quem;
● Decidir quais os processos (ou partes dos mesmos) e dados a entrar e a sair de
memória;
● Atribuição e desalocação de espaço de memória conforme necessário.
5. Hierarquia
As restrições de concepção da memória de um computador podem ser resumidas
em três questões:
● Quanto?
● Com que rapidez?
● Quanto custa?
6. Hierarquia
Existe uma relação entre as três características-chave de memória: capacidade,
tempo de acesso, e custo. Uma variedade de tecnologias são utilizados para
implementar sistemas de memória, e em todo este espectro de tecnologias, as
relações seguintes mantêm-se:
● Tempo de acesso mais rápido, maior custo por bit; Maior capacidade, menor
custo por bit;
● Maior capacidade, velocidade de acesso mais lenta.
8. Hierarquia
● É possível organizar os dados em toda a hierarquia de modo a que a
percentagem de acessos a cada nível sucessivamente inferior é
substancialmente menor do que a de o nível acima. O tipo de memória mais
rápido, mais pequeno e mais caro consiste nos registos internos para o
processador.
● Cada local na memória principal tem um endereço único, e a maioria das
instruções da máquina referem-se para um ou mais endereços de memória
principais. A memória principal é normalmente estendida com um de maior
velocidade, menor cache.
● A memória cache não é normalmente visível para o programador mas sim para
o processador. É um dispositivo para encenar o movimento de dados entre
memória principal e registos do processador para melhorar o desempenho.
9. Hierarquia
● As formas de memória descritas são, tipicamente, voláteis. A memória externa,
não volátil, é também referida como memória secundária ou memória auxiliar,
que são utilizadas para armazenar ficheiros de programas e de dados, e são
normalmente visíveis para o programador apenas em termos de ficheiros e
registos.
10. Papel da gestão da memória em multi-
programação: Arquitectura de partições fixas
● Para que a multprogramação exista, é necessário que vários programas
possam coexistir em memória primária. A forma mais simples de o fazer é
dividir a memória do computador em partições, carregando-se um programa em
cada uma delas;
● O grau de multprogramação máximo é dado pelo número de partições
existentes.
11. Papel da gestão da memória em multi-
programação: Programas Recolocáveis
● Inicialmente os programas eram compilados para uma determinada partição, e
somente nessa poderiam ser executados. Isso porque quer as variáveis quer o
código estavam associados a endereços que só faziam sentido numa partição;
● Em algumas situações, uma partição podia ter uma fila de programas a espera
de serem executados, enquanto outra estava vazia. Para resolver esse
problema tornaram-se os programas recolocáveis.
12. Papel da gestão da memória em multi-
programação: Programas Recolocáveis
● A recolocação efectuada deste modo tem um custo elevado que se repete
sempre que o programa é carregado em memória. Uma evolução consistiu em
dotar os computadores de um registo base que era carregado com o endereço
físico do início da partição.
● Em tempo de execução, o hardware somava o valor do registo base com o
endereço proveniente do programa para obter o endereço real. Esse tipo de
endereçamento, também chamado endereçamento baseado, constitui já uma
aproximação ao endereçamento virtual, pois conta com uma ajuda do hardware
para transformar os endereços.
13. Papel da gestão da memória em
multiprogramação: Proteção
● A existência de programas de vários utilizadores simultâneos obriga a
existência de mecanismos de proteção entre eles, para impedir que um
programa, que se esteja a executar numa partição, possa aceder as zonas de
memória de outra. Houve varias tentativas para obviar alguns destes problemas
usando endereçamento real, mas apenas o endereçamento virtual surgiu como
resposta para estes problemas.
14. gestão da memória em multiprogramação:
Arquitectura de partições variáveis
● Devido a inflexibilidade imposta pelas partições fixas, era um importante factor
de perda de eficácia, que poderia ser resolvido mudando de forma dinâmica, o
número e a dimensão das partições em tempo de execução.
● Ao colocar um segundo processo em execução, procede-se de maneira
semelhante, cria-se uma partição de memória de dimensão suficiente para
conter o seu espaço de endereçamento. Isto é o número de partição poderá
crescer ate se esgotar a memória (Marques, Ferreira, Ribeiro, Veiga, &
Rodrigues,2012, pp. 312-313).
15. Papel da gestão da memória em multi-
programação: Multprogramação com partições
variáveis
16. PAPEl da gestão da memória em
multiprogramação: Fragmentação
● Para este método, quando um processo termina, o bloco de memória onde
estava sendo executado e liberado, e normalmente assocado ao outro bloco
livre que lhe seja contiguo, o que pode permitir a execução de outro programa
que estivesse executável e não residente (Marques, Ferreira, Ribeiro, Veiga, &
Rodrigues, 2012).
17. Organização de memória real
● Segundo (Marques, Ferreira, Ribeiro, Veiga, & Rodrigues, 2012), a gestão de
memória tem por objectio:
● Gerir o espaço de endereçamento dos processos
● Assegurar que cada processo dispõe da memória que precisa;
● Garantir que cada processo só aceda a memória a que tem direito (protecção);
● Optimizar as transferências de informação em memórias organizadas
hierarquicamente.
18. Organização de memória real: Endereçamento
Real
● Um endereço real refere-se sempre a memória primária, nunca a memória
secundária. Este método apresenta desvantagens como: A dimensão dos
programas é limitada pela dimensão da memória primária do computador;
● Um programa só pode funcionar nos endereços físicos para onde foi escrito, ou
gerado por um compilador de uma linguagem de alto nível, não podendo ser
executado directamente noutra máquina com um mapa de memória diferente
ou mesmo noutro endereço da mesma máquina;
● A multiplicação fica seriamente dificultada. Como os endereços físicos onde o
programa se vai executar têm de ser decididos numa fase inicial (compilação
ou carregamento em memoria), não é possível executar simultaneamente dois
programas que tivessem sido preparados para se executarem nos mesmos
endereços.
19. Organização de memória virtual
● Memória virtual é uma técnica que permite a execução de processos que não
estejam completamente na memória; porque com este esquema de alocação
de memória é possível endereçar a memória secundária como se esta fizesse
parte da memória principal (Silberschatz, Galvin e Gagne, 2009; Stallings, 2012)
22. Organização de memória virtual: Segmentação Da
Memória Virtual
● Segmentação é um esquema de gestão de memória com espaços de
endereços ou segmentos completamente diferentes. Cada segmento consiste
numa sequência linear de endereços (Tanembaum & Bos, 2015; Silberschatz,
Galvin e Gagne, 2009).
23. Organização de memória virtual: Segmentação Da
Memória Virtual-Organização
● Legenda:
● M = 1, segmento modificado;
● M = 0, segmento não modificado
● Segment base, o primeiro endereço físico do segmento.
● Length, o tamanho do segmento.
24. Organização de memória virtual: Segmentação Da
Memória Virtual-paginação
● Um endereço virtual usando paginação é composto por dois campos:
1. Número de páginas: usado com um índice para a tabela de páginas que contem
os enderecos base e de cada página em memória.
2. Deslocamento: é combinado com o endereço-base para definir o endereço físico
para ser enviado à unidade de memória.
25. Organização de memória virtual: Implementação
da Tabela de Páginas
● Cada processo tem uma Tabela de Páginas, onde há uma entrada para cada
página do processo. Com a memória virtual, um processo pode consistir de um
grande número de páginas, impossibilitando alocar a Tabela de Páginas dentro
da memória física. As Tabelas de Páginas desses processos são
implementadas em memória virtual (disco).
● Para evitar esse problema, é usada uma memória cache especial Translation
Lookaside Buffer (TLB), para entradas da Tabela de Páginas.
26. Organização de memória virtual: Translation
Lookaside Buffer (TLB)
● O Translation Lookaside Buffer (TLB) funciona como uma memória cache e
contém as entradas (i.e. as linhas) da Tabela de Páginas mais recentemente
usadas. Para localizar uma dada página, TLB é consultado e se encontrar (TLB
hit), o número do bloco correpondente é obtido e se nao encontrar (TLB miss).
27. Organização de memória virtual: Tabelas de
Páginas
Existem duas formas básicas de projetar tabelas de páginas:
● Ter uma única tabela de páginas, através de uma matriz de rápidos
registradores de hardware, com uma entrada para cada página virtual, indexada
pelo número da página. Esta é uma solução cara se a tabela de páginas é
grande;
● Manter a tabela de páginas inteiramente na memória principal, sendo que o
hardware precisa de apenas um registrador que aponta para o início da tabela
de páginas.
28. Algoritmos de substituiçãode páginas
● Quando ocorre uma falta de página, o sistema operacional tem de escolher uma
página para remover da memória a fim de abrir espaço para a que está
chegando. Se a página a ser removida foi modificada enquanto estava na
memória, ela precisa ser reescrita para o disco a fim de atualizar a cópia em
disco. Se, no entanto, ela não tiver sido modificada (por exemplo, ela contém
uma página de código), a cópia em disco já está atualizada, portanto não é
preciso reescrevê-la.
29. Algoritmos de substituiçãode páginas
Vários critérios podem ser usados para :escolher “vítimas”, ou seja, páginas a
transferir da memória para a área de troca no disco como:
● Idade da página;
● Frequência de acessos à página;
● Data do último acesso;
● Prioridade do processo proprietário;
● Conteúdo da página;
● Páginas especiais.
30. Algoritmos de substituiçãode páginas
● O algoritmo ótimo de substituição de página;
● O algoritmo de substituição de páginas não usadas recentemente (NRUNot
Recently Used);
● O algoritmo de substituição de páginas primeiro a entrar, primeiro a sair (first in,
first out-- FIFO).
● O algoritmo de substituição de página WSClock
31. Algoritmos de substituiçãode páginas
● O algoritmo de substituição de páginas segunda chance (SC-Second Chance).
32. Algoritmos de substituiçãode páginas
● Algoritmo de substituição de páginas usadas menos recentemente (LRULeast
Recently Used ).
● Uma boa aproximação para o algoritmo ótimo é baseada na observação de que
as páginas que foram usadas intensamente nas últimas instruções
provavelmente o serão em seguida de novo. De maneira contrária, páginas que
não foram usadas há eras provavelmente seguirão sem ser utilizadas por um
longo tempo. Essa ideia sugere um algoritmo realizável: quando ocorre uma
falta de página, jogue fora aquela que não tem sido usada há mais tempo.
(Tanenbaum, 2010).
34. Algoritmos de substituiçãode páginas
● Simulação do LRU em software
Porque as abordagens de soluções em Hardware enfrentam problemas, dos quais:
dependem de um Hardware especial e necessitam procurar uma solução em
Software, surge o Algoritmo NFU (Not Frequently Used) e o Algoritmo Aging.
35. Algoritmos de substituiçãode páginas
● O algoritmo de substituição de páginas do conjunto de trabalho
Na forma mais pura de paginação, os processos são inicializados sem nenhuma de
suas páginas na memória. A seguir a CPU tenta buscar a primeira instrução, ela
detecta uma falta de página, fazendo que o sistema operacional traga a página
contendo a primeira instrução. Outras faltas de páginas para variáveis globais e a
pilha geralmente ocorrem logo em seguida. Após um tempo, o processo tem a
maior parte das páginas que ele precisa para ser executado com relativamente
poucas faltas de páginas. Essa estratégia é chamada de paginação por demanda,
pois as páginas são carregadas apenas sob demanda, não antecipadamente.
(Tanenbaum, 2010)
36. Algoritmos de substituiçãode páginas
● O algoritmo de substituição de páginas do conjunto de trabalho
Eles apresentam uma localidade de referência significando que durante qualquer
fase de execução o processo referencia apenas uma fração relativamente pequena
das suas páginas. O conjunto de páginas que um processo está atualmente usando
é o seu conjunto de trabalho.
38. Algoritmos de substituiçãode páginas
● O algoritmo de substituição de página WSClock
Uma vez que esse limite de tráfego de disco tenha sido alcançado, não serão
escalonadas mais escritas novas. Há dois casos que precisamos considerar:
Pelo menos uma escrita foi escalonada;
Nenhuma escrita foi escalonada.
39. Algoritmos de substituiçãode páginas
● O algoritmo de substituição de página WSClock
Na ocorrência de um Page Fault: Se o bit R desta página for 0, ela é substituída, e
o ponteiro roda uma casa;
Se R=1, é feito o reset e o ponteiro avança para a próxima página até encontrar uma
página com R=0.
40. Algoritmos de substituiçãode páginas
● Algoritmo ARC – Adaptive Replacement Cache
Divide a memória em duas áreas de gestão, uma com as páginas recémcarregadas
e outra armazenando aquelas que receberam mais de um acesso. Entretanto, a
substituição é feita sempre utilizando o critério LRU em uma das duas áreas. A
seleção da área se dá de forma balanceada, de acordo com o estado em que cada
uma delas se encontra nos momentos de substituição (Megiddo & Modha, 2003).
41. Conclusão
Sistemas computacionais mais simples não precisam realizar nenhum tipo de
gerenciamento pois, usualmente, seus programas rodam diretamente na memória
principal disponível. No entanto, esta não é a situação mais comum. Na maioria
dos sistemas em uso, os programas são muito maiores que a quantidade de
memória principal disponível e/ou é necessário rodar mais de um programa ao
mesmo tempo. Nestes casos, a utilização de esquemas de troca, páginas e
segmentos pode ser uma alternativa. Um modelo de memória virtual, que fornece
um espaço de endereçamento maior do que o físico, pode ser disponibilizado para
os programadores no desenvolvimento de seus sistemas. Internamente, no
entanto, o S.O. deve ser capaz de gerenciar a memória de forma a manter as partes
do programa em uso na memória principal, armazenando as demais partes em
disco.
42. Referências Bibliográficas
● Maziero, C. A. (2017). Sistemas Operativos: Conceitos e Mecanismos. Curitiba:
DINF-UFPR.
● Megiddo, N., & Modha, D. (2003). ARC: a self-tuning, low overhead replacement
cache. USENIX.
● Silberschatz, A., Galvin, P. B., & Gagne, G. (2009). Operating System Concepts (8
ed.). Danvers, United States of America: John Willey&Sons, Inc. Acesso em Maio
de 2021
● Stallings, W. (2011). Operating Systems: Internals and Design Principles (7 ed.).
(P. E. Inc, Ed.) New Jersay, United States of America: Pretince Hall. Acesso em
Maio de 2021
● Tanenbaum, A. S. (2010). Sistemas Operacionais Modernos (3 ed.). (P.
Education, Ed.) Sao PAulo, Brasil: Pearson Education, Inc. Acesso em Maio de
2021
● Marques, J. A., Ferreira, P., Ribeiro, C., Veiga, L., & Rodrigues, R. (2012.).
Sistemas Operativos. FCA.