O documento discute técnicas de gerência de memória principal em sistemas operacionais, incluindo paginação e segmentação. Ele explica como a memória principal é organizada em páginas e quadros e como uma tabela de paginação mapeia endereços lógicos para endereços físicos. Além disso, aborda proteção de memória, páginas compartilhadas e diferentes estruturas para tabelas de paginação.
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Gerência de Memória: Memória Principal
1. Sistemas Operacionais I
Gerência de Memória: Memória Principal
Prof. Alexandre Duarte : http://alexandrend.com
Centro de Informática | Universidade Federal da Paraíba
Estes slides são baseados no material que acompanha o livro Operating
Systems Concepts de Silberschatz, Galvin and Gagne
2. Objetivos
Fornecer uma descriç ão detalhada sobre
várias formas de organizar o hardware de
memó ria
Discutir técnicas de gerência de memó ria,
incluindo paginaç ão e segmentaç ão
3. Antecedentes
Os programas precisam ser trazidos para a memó ria principal para
poderem ser executados (criaç ão de um processo)
Memó ria principal e registrados são as únicas unidades de armazenamento
acessadas diretamente pela CPU
O acesso a um registrador é feito em um (ou menos) ciclos de CPU
Acessos à memó ria principal podem levar mais ciclos
A memó ria cache se situa entre a memó ria principal e os registradores
Mecanismos de proteç ão de memó ria são necessários para garantir a
operaç ão correta
4. Registradores de base e limite
Um par de registradores (base e limite)
definem um espaç o de endereç amento ló gico
5. Vinculando instruções e dados à memória
Tempo de compilaç ão: Se a localizaç ão de
memó ria for conhecida a priori, o compilador pode
gerar có digo absoluto; requer recompilaç ão caso a
localizaç ão mude
Tempo de carga: Requer a geraç ão de có digo
relocável se a localizaç ão de memó ria não for
conhecida em tempo de compilaç ão
Tempo de execuç ão: A vinculaç ão é adiada até o
momento da execuç ão caso o processo possa ser
movido de um segmento de memó ria para outro
durante a execuç ão. Requer suporte de hardware
para mapas de endereç amento
7. Endereçamento Lógico x Físico
O conceito de espaç o de endereç amento
ló gico, que é vinculado a um espaç o de
endereç amento físico separado é crucial para a
gerência de memó ria
Endereç o ló gico: gerado pela CPU, também conhecido
como endereç o virtual
Endereç o físico: endereço visto pela unidade de
memó ria
Endereç os ló gicos e físicos são os mesmos em
esquemas de vinculaç ão de endereç os em tempo de
compilaç ão ou tempo de carga e são diferentes em
esquemas de vinculaç ão de endereç os em tempo de
execuç ão
8. Unidade de Gerência de Memória (MMU)
Dispositivo de hardware que mapeia um
endereç o virtual em um endereç o físico
Na MMU, o valor de um registrador de relocaç ão
é somado a todo endereç o gerado por um
processo do usuário no momento em que ele é
enviado a memó ria
O programa lida apenas com endereç os ló gicos;
ele nunca vêos endereç os físicos reais
10. Carregamento dinâmico
Uma rotina não é carregada até ser invocada
Melhor utilizaç ão do espaç o de memó ria;
rotinas não utilizadas nunca são carregadas
Útil quando grandes quantidade de có digo são
necessárias para lidar com casos infrequentes
Não requer nenhum suporte especial do
sistema operacional
11. Ligação dinâmica
A ligaç ão é adiada até o momento da execuç ão
Um pequeno pedaç o de có digo (stub) é utilizado
para localizar a rotina apropriada em uma
biblioteca residente na memó ria
O stub substitui a si pró prio com o endereç o da
rotina e a executa
O sistema operacional é necessário para verificar
se a rotina estáno espaç o de endereç amento do
processo
Ligaç ão dinâmica é particularmente útil para
bibliotecas compartilhadas
12. Swapping
Um processo pode ser removido temporariamente da memó ria
para um armazenamento secundário e depois trazido de volta para
continuar sua execuç ão
Armazenamento secundário – disco rápido, grande o suficiente
para armazenar copias dos programas em memó ria de todos os
usuários; precisa fornecer acesso direto a essas có pias de
memó ria
Roll out, roll in – variante de swapping, utilizada em algoritmos
de escalonamento com prioridade; processos de baixa prioridade
são removidos para que processos de mais alta prioridade possam
ser carregados e executados
A maior parte do tempo de swap é gasto transferindo dados
Versões modificadas de um esquema de swapping são encontradas
em praticamente todos os sistemas operacionais
14. Alocação contínua
A memó ria principal é geralmente dividida em duas
partições:
Sistema operacional residente, geralmente na memó ria baixa,
junto com o vetor de interrupç ões
Processos do usuário na parte alta da memó ria
Registradores de relocação são utilizados para proteger os
processos dos usuários uns dos outros e também para evitar
alterações em dados e có digos do sistema operacional
O registrador base contem o menor endereç o de memó ria
permitido
O registrado de limite define o tamanho do espaç o de
endereç amento – cada endereç o ló gico deve ser menor que o
registrador de limite
A MMU mapeia os endereç os ló gicos dinamicamente
16. Alocação contínua
Alocaç ão com múltiplas partiç ões
Buraco – bloco de memó ria disponível; buracos de vários
tamanhos são espalhados na memó ria
Quando um processo é criado ele é alocado em um buraco
grande o suficiente para suas necessidades de memó ria
O sistema operacional mantem informaç ões sobre:
a) partiç ões alocadas b) partiç ões livres (buracos)
SO
processo 5
processo 8
processo 2
SO
processo 5
processo 2
SO
processo 5
processo 2
SO
processo 5
processo 9
processo 2
processo 9
processo 10
17. O problema da alocação dinâmica
de espaço
First-fit: Aloca o primeiro buraco que for
grande o suficiente
Best-fit: Alocar o menor buraco que for
grande o suficiente; precisa pesquisar a lista
inteira a menos que esteja ordenada por
tamanho
Produz o menor buraco remanescente
Worst-fit: Aloca o maior buraco; também
precisa percorrer toda a slista
Produz o maior buraco remanescente
First-fit e best-fit são melhores que o worst-fit em termos
de velocidade e utilizaç ão do espaç o!
18. Fragmentação
Fragmentaç ão externa – exige memó ria suficiente
para atender uma requisiç ão mas ela não é contigua
Fragmentaç ão interna – a memó ria alocada pode
ser levemente maior que a memó ria requisitada; esta
diferenç a de memó ria faz parte da partiç ão mas não
é utilizada
Reduzir fragmentaç ão utilizando compactaç ão
Ordena o conteúdo da memó ria em uma localidade para
juntar todo o espaço livre em um grande bloco
Compactação só é possível com relocação dinâmica
19. Paginação
O espaç o de endereç amento ló gico de um processo
pode ser não-contínuo; o processo recebe memó ria
física na medida em que ela se torna disponível
A memó ria física é dividida em blocos de tamanho
fixo chamados quadros (o tamanho é uma potência
2, entre 512 bytes e 8,192 bytes)
A memó ria ló gica é dividida também em blocos do
mesmo tamanho chamados páginas
Para executar um programa de n páginas é preciso
encontrar n quadros para carregar o programa
Uma tabela de paginaç ão é utilizada para traduzir
endereç os ló gicos em endereç os físicos
20. Esquema de tradução de endereços
Os endereç os gerados pela CPU são divididos em duas partes:
Número da página (p) – utilizado como índice na tabela de paginaç ão que
contem o endereç o base de cada página na memó ria física
Deslocamento (d) – combinado com o endereç o base define o endereç o
físico a ser enviado para a unidade de memó ria
Para um determinado espaç o de endereç amento com 2m
bits e páginas de
tamanho 2n
25. Implementação da tabela de
paginação
Tabela de paginaç ão é mantida na memó ria principal
Page-table base register (PTBR) aponta para a base
Page-table length register (PRLR) indica o tamanho
Neste esquema, cada acesso a dados ou instruç ões
requer dois acessos à memó ria. Um para a tabela de
paginaç ão e outro para o dado/instruç ão
Este problema de dois acessos pode ser amenizado
utilizando um cache de hardware especial chamado
translation look-aside buffers (TLBs)
26. Busca paralela
Traduç ão de endereç o (p, d)
Se p estána memó ria associativa o valor de f é obtido
Se não, obter o valor de f da tabela de paginaç ão na
memó ria
Memória associativa
Page # Frame #
28. Tempo efetivo de acesso
Busca associativa = ε unidades de tempo
Assumir que um ciclo de memó ria dura 1
microssegundo
Taxa de acerto – porcentagem das vezes em que
o número de uma página é encontrado no TLB;
Taxa de acerto = α
Tempo efetivo de acesso (EAT)
EAT = (1 + ε) α + (2 + ε)(1 – α)
= 2 + ε – α
29. Proteção de memória
O mecanismo de proteç ão de memó ria
associa um bit de proteç ão a cada quadro
Um bit Válido-inválido anexado a cada
entrada na tabela de paginaç ão:
“válido” indica que a página associada estáno
espaç o de endereç amento ló gico do processo
“inválido” indica que a página não estáno espaç o
de endereç amento ló gico do processo
30. O bit Válido (v) ou Inválido (i) na tabela
de paginação
31. Páginas compartilhadas
Có digo compartilhado
Uma có pia apenas de leitura do có digo
compartilhada entre vários processos
O có digo compartilhado precisa aparecer no mesmo
local no espaç o de endereç amento ló gico de todos
os processos
Có digo e dados privados
Cada processo mantém uma có pia separada dos
dados e có digo
As páginas para o có digo privado podem aparecer em
qualquer lugar no espaç o de endereç amento ló gico
33. Estrutura da tabela de paginação
Paginaç ão hierárquica
Tabelas de paginaç ão com hash
Tabela de paginaç ão invertida
34. Tabela de paginação hierárquica
Quebra o espaç o de endereç amento ló gico
em múltiplas tabelas de paginaç ão
Uma técnica simples é paginaç ão em dois
níveis
36. Espaç o de endereç amento ló gico (máquina de 32-bit com páginas de 4K) é divido
em :
Um número de página de 20 bits
Um deslocamento na página de 12 bits
Uma vez que a tabela de paginaç ão é também paginada, o número da página é
também dividido em duas partes:
Um número de página de 10 bits
Um deslocamento na página de 10 bits
Portanto, os endereç os ló gicos são construídos da seguinte forma:
onde pi é o índice na tabela de paginaç ão externa e p2 é o deslocamento dentro da
página da tabela de paginaç ão externa
Exemplo de paginação em dois
níveis
39. Tabelas de paginação com hash
Comum em espaç o de endereç amento com mais de
32 bits
O número da página virtual é submetido a uma funç ão
hash e o resultado aponta para uma entrada na
tabela de paginaç ão
Cada entrada na tabela de paginação contem uma lista de
elementos cujo hash apontou para a mesma localidade
(colisões)
O número da página virtual é então comparado com os
valores nessa lista para localizar o quadro na
memó ria física
41. Tabela de paginação invertida
Uma entrada para cada quadro na memó ria principal
As entradas da tabela são os endereç os das páginas
virtuais armazenadas nessas localizaç ão de memó ria,
com informaç ão sobre o processo proprietário
Diminui a quantidade de memó ria necessária para
armazenar a tabela de paginaç ão mas aumenta o
tempo necessário para consultar a tabela
Usar hash para limitar a busca a uma, ou pelo menos, a
umas poucas entradas
43. Segmentação
Esquema de gerência de memó ria que reflete a
visão que o usuário tem da memó ria
Um programa é uma coleç ão de segmentos
Um segmento representa uma unidade ló gica, como:
Programa principal
Procedimento
Funç ão
Método
Objeto
Variáveis locais
Variáveis globais
Pilha
Tabela de símbolos
45. Arquitetura de segmentação
O espaço de endereçamento ló gico consiste em uma tupla:
<número do segmento, deslocamento>,
Tabela de segmentos – mapeia os endereços virtuais em
endereços físicos; cada entrada tem:
base – contem o endereç o inicial do segmento na memó ria
limite – especifica o tamanho do segmento
Segment-table base register (STBR) aponta para a
base da tabela de segmentação na memó ria
Segment-table length register (STLR) indica o número
de segmentos utilizados por um programa;
o número de segmento s é legal se s < STLR
46. Arquitetura de segmentação
Proteç ão
A cada entrada na tabela de segmentação associamos:
Bit de validade = 0 ⇒ segmento ilegal
Privilégios de leitura/escrita/execuç ão
Bits de proteç ão associados a segmentos;
compartilhamento de có digo ocorre no nível dos
segmentos
Uma vez que o tamanho dos segmentos varia,
alocaç ão de memó ria passa a ser uma problema de
alocaç ão dinâmica de armazenamento