Sistemas Operacionais
Gerência de Memória
Thiago Leite
[email protected]
1
Gerência de Memória
• Hierarquia de memórias
• Memórias pequenas e rápidas
• Memórias grandes e lentas
2
Gerência de Memória
• Como é o acesso a cada uma delas?
• Sistema operacional abstrai o acesso
• Uma parte do sistema operacional se
encarrega da gestão da memória
3
Gerência de Memória
• Gerenciador de Memória
• Parte do sistema operacional que
gerencia as memórias principais e
secundárias
• Alocar e liberar memória quando
necessário
• Identificar espaço livre e espaço utilizado
4
Gerência de Memória
• Vários esquemas diferentes de
gerenciamento de memória
• níveis inferiores utilizam mecanismos
rústicos por hardware • níveis mais sofisticados utilizam softwares
complexos
5
Gerência de Memória
• Como seria realizado o processo de
gerenciamento de memória sem um gestor
de memória? • acesso sem abstração
6
Gerência de Memória
• Sem abstração de memória
• Endereços absolutos em memória
• MOV REGISTER1, 1000
7
Gerência de Memória
• Sem abstração de memória
• Processos podem alterar qualquer região
da memória • Apenas um programa por vez em
memória
8
Gerência de Memória
• Como permitir que o sistema operacional
co-exista com outro processo em
memória? • Os dados podem ser organizados em
três variações possíveis de alocação da
memória
9
Organização da Memória
10
Gerência de Memória
• Como executar múltiplas aplicações sem
abstração?
• Troca de processos em memória
(swapping)
11
Gerência de Memória
• Problemas ainda persistem
• Proteção de acesso
• Realocação de memória
12
Gerência de Memória
• Proteção de acesso
• dois processos tentando atuar na mesma
região de memória
13
Problema de realocação
14
Gerência de Memória
• Realocação estática
• sistema define tamanhos de memória que os
processos podem ocupar
• processos quando criados são divididos em módulos
• cada módulo possui uma variável para o endereço de
acesso
• ex: JMP endx (endereço X)
• os processos não preenchiam totalmente as
partições onde eram carregados
15
Gerência de Memória
• Realocação dinâmica
• Partições sem tamanho fixo, onde cada programa
utiliza o espaço que necessita
• Registradores-base e registradores-limite
• Registrador-base possui endereço de onde o
programa começa
• Registrador-limite identifica o limite máximo de
leitura
• Em tempo de execução
16
Gerência de Memória
• Realocação dinâmica
• Instruções de leitura e escrita são
modificadas
• Processo executa a instrução
• JMP 28 • Hardware trata
• JMP 16412
17
Registrador-base e registrador-limite
18
Gerência de Memória
• E quando a memória física não comporta
todos os processos?
• Dois métodos distintos para lidar com a
sobrecarga de memória
• swapping
• memória virtual
19
Gerência de Memória
• Swapping
• Alocar os processos mais necessários
• Liberar espaço dos processos menos
necessários
• Otimizar o uso da memória
20
Swapping
21
Gerência de Memória
• Swapping
• Processos devem ser alocados em
espaços contínuos • Espaços desalocados podem surgir
• Compactação de memória
• Registradores base e limite funcionam
bem
22
Gerência de Memória
• Swapping
• Processos podem crescer
• Alocação dinâmica de memória
• Uso de área temporária de memória
(heap)
• Se acabar o espaço em memória e em
disco (memória swap) o processo é
suspenso até que se libere mais memória
23
Alocação de espaço para expansão
24
Gerência de Memória
• Gerenciando a memória livre
• mapa de bits
• listas livres
25
Gerência de Memória
• Mapa de bits
• memória dividida em unidades de igual tamanho
• cada unidade correspondente à um bit no mapa
(1 ocupado e 0 livre)
• quanto menor a unidade maior o mapa de bits e
do uso eficiente da memória
• quanto maior a unidade menor o mapa de bits e
maior o desperdício da memória
26
Gerência de Memória
• Listas Encadeadas • segmentos são porções livres ou
ocupadas de unidades sequenciais • atualização simples quando um espaço
contínuo é transformado de livre para
ocupado ou o contrário
• ineficiente para acessos não sequenciais
27
Gerência de Memória
• Listas duplamente encadeadas
• as sequências de espaço livres são
colocadas no início da lista
• sequências de espaços ocupados são
colocadas no final da lista
• as sequências mais ao final da fila são as
sequências menos solicitadas
28
Mapa de Bits e Listas Encadeadas
29
Lista Encadeada e suas Atualizações
30
Gerência de Memória
• Algoritmos de alocação de processos em
memória
• first-fit
• next-fit
• best-fit
• worst-fit
• quick-fit
31
Gerência de Memória
• Algoritmo first-fit (primeiro encaixe)
• ocupa a primeira porção de memória
disponível com o tamanho necessário ao
processo
32
P3
P1
P4
P2
Exemplo de Algoritmo First-Fit
33
Processos a serem alocados em ordem
212k
417k
112k
426k
Exemplo de Algoritmo First-Fit
34
Gerência de Memória
• Algoritmo next-fit (próximo encaixe)
• semelhante ao first-fit
• não inicia no início da lista a cada nova
procura
35
Gerência de Memória
• Algoritmo best-fit (melhor encaixe)
• escolha na lista inteira o local mais
apropriado para alocar nova área
• mais lento que os demais algoritmos
• curiosamente é o menos eficiente dos
algoritmos apresentados
• muitos pequenos espaços não alocados e
inúteis
36
Processos a serem alocados em ordem
212k
417k
112k
426k
Exemplo de Algoritmo Best-Fit
37
Gerência de Memória
• Algoritmo worst-fit (pior encaixe)
• escolhe segmentos que sobrarão mais
espaço depois de alojados
• simulações não apresentam bons
resultados
38
Gerência de Memória
• Algoritmo quick-fit (rápido encaixe)
• mantém várias listas com os tamanhos de
segmentos de memória mais solicitados
• percorre cada uma das listas como o
algoritmo first-fit com a eficiência de uso
do best-fit
39
Gerência de Memória
• Solicitação de mais espaço em memória
• Processos podem solicitar mais memória
• Alocação dinâmica de memória
Gerência de Memória
• Problema a resolver: bloatwares
• programas crescem mais rapidamente
que a memória
• 1980: 4 MB para dezenas de usuários
• Atualmente: mínimo de 1 GB para rodar
Windows 8
41
Gerência de Memória
• Problema a resolver: necessidade de
execução simultânea de vários processos
não individualmente comportados
• Coletivamente excedem a memória
• Exemplo: memória de 1 GB e dois
processos de 1 GB cada precisam estar
em execução simultaneamente
42
Gerência de Memória
• Primeira solução: Sobreposições (Overlays)
• Inicializado apenas o gerenciador de
sobreposições
• Programador dividia o código em blocos
(sobreposição)
• Gerenciador decide quais sobreposições
deveriam ficar em memória
43
Sobreposição (Overlays)
44
Gerência de Memória
• Problemas de Sobreposições (Overlays)
• Divisão do programa em módulos pelo
programador
• Propenso a erros (programadores erram)
• Que critérios seriam utilizados para gerir
as sobreposições?
45
Gerência de Memória
• Memória virtual
• Cada programa possui espaço de
endereçamento próprio
• Espaço de endereçamento dividido em
blocos (páginas ou frames)
• O SO é responsável pela gestão das
páginas
46
Gerência de Memória
• Gestor de Memória mapeia memória
principal e secundária em memória virtual
• Programa pode referenciar parte que
está ou não em memória física (principal)
• SO é responsável em carregar página de
referência quando ela não está na
memória física
47
Gerência de Memória
• Multiprogramação com memória virtual
• CPU poderá ser dada a outro processo
enquanto um processo espera sua página
ser carregada
• Melhor aproveitamento da CPU
48
Gerência de Memória
• Memória virtual
• Sistemas utilizam técnica de paginação
• Conjunto de endereços virtuais
• Constitui o espaço de endereçamento virtual
• Lista de ponteiros para os endereços físicos
• Em computadores sem memória secundária
o endereço virtual é idêntico ao endereço
físico
49
Gerência de Memória
• Dispositivo responsável em traduzir as
instruções de acesso à memória virtual
• MMU (Memory Management Unit)
50
Localização e função da MMU
51
Gerência de Memória
• Tabela de páginas
• Mapeia endereços virtuais em endereços físicos
• Exemplo
• tabela de endereços virtuais de 16 bits de
páginas de 64KB
• memória física de 32 KB de memória física
• programas de 64 KB
52
Tabela de páginas
53
Gerência de Memória
• Paginação
• Páginas (pages)
• Molduras de página (page frames)
• Páginas em memória física
• Apenas as molduras de páginas podem
acessadas simultaneamente
• E se tentarmos acessar uma instrução não
presente?
54
Gerência de Memória
• Interrupção por falta de moldura de página
(page fault)
• Escolhe moldura pouca usada e salva em
disco
• Carrega nova moldura
• Atualiza tabela de páginas
• Reinicia instrução causadora
55
Freqüência de faltas de páginas de acordo
com o número de molduras alocadas
56
Tradução de Endereços pela MMU
57
Gerência de Memória
• Exemplo de uso da MMU apresentada
• 16 bits de entrada na tabela de páginas
• 15 bits de memória física
• endereço 37413 (1001 0010 0010 0101)
• endereço físico 21029 (101 0010 0010 0101)
• endereço 57348 (1110 0000 0000 0100)
• Page fault
58
Tabela de Páginas
15
00
0
14
00
0
13
00
0
12
10
1
11
00
0
10
00
0
9
00
0
8
11
1
7
00
0
6
01
1
5
00
0
4
00
0
3
00
0
2
00
0
1
00
1
0
00
0
Saída: {11} 1110 1110 0000
Conversão de memória
virtual de 16 bits para
memória física de 14 bits
Entrada: {1000} 1110 1110 0000
Exemplo de Tabela de Páginas
59
Gerência de Memória
• Possível solução para alocar mais molduras
de página
• Páginas compartilhadas
60
Dois processos que compartilham o mesmo
programa compartilhando sua tabela de página
61
Gerência de Memória
• Bibliotecas compartilhadas
• Evitar ligar estaticamente todas as
bibliotecas a cada programa
• Windows
• DLL (Dynamic-Link Library)
• Linux
• SO (Shared Object)
62
Gerência de Memória
• No Linux
$ ldd /bin/ls linux-­‐gate.so.1 => (0xffffe000) libselinux.so.1 => /lib/libselinux.so.1 (0xb76e7000) librt.so.1 => /lib/librt.so.1 (0xb76dd000) libcap.so.2 => /lib/libcap.so.2 (0xb76d7000) libacl.so.1 => /lib/libacl.so.1 (0xb76cd000) libc.so.6 => /lib/libc.so.6 (0xb755f000) libdl.so.2 => /lib/libdl.so.2 (0xb755a000) /lib/ld-­‐linux.so.2 (0xb7723000) libpthread.so.0 => /lib/libpthread.so.0 (0xb753f000) libattr.so.1 => /lib/libattr.so.1 (0xb7539000)
63
Gerência de Memória
• No Mac OS X
$ otool -­‐L /bin/ls /bin/ls: /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0) /usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
64
Revisão
•
Hierarquia de
memórias
• Gerenciador de
memória
• Gerenciamento de
• Proteção da memória
em sistemas sem
abstração
• Problema de
realocação de
memória
memória de baixo
nível
• Realocação estática de
•
Sistemas sem
abstração de memória
• Realocação dinâmica
•
Organização da
memória
• Espaço de
• Executando múltiplas
aplicações sem
abstração
memória
de memória
endereçamento
• Registrador-base e
registrador-limite
• Swapping
65
• Memória virtual
• MMU
• Memória heap
• Sobreposições
• Multiprogramação com
memória virtual
• Tabela de páginas
• Páginas e molduras de
páginas
• Paginação
• Páginas compartilhadas
• Bibliotecas
compartilhadas
Universidade Federal
de Alagoas
As páginas no armazenamento virtual são o
mesmo que:
a)Page Frames.
b)Programas.
c)Partes de Programas.
d)Setores do disco.
e)Espaço de memória.
66
Correios
(CESPE) Um programa carregado na memória e
em execução é denominado processo. Nos
sistemas operacionais de tempo compartilhado e
nos multiprogramados, os jobs devem ser
mantidos na memória ao mesmo tempo que são
executados e, por isso, o sistema deve prover
recursos de gerência de memória e proteção.
a) Certo
b) Errado
67
Tribunal Regional do
Trabalho
A Memory Management Unit (MMU) tem como
função:
a)mapear os endereços virtuais para endereços físicos
de memória.
b)dividir a memória em partições de tamanhos variados.
c)pesquisar e selecionar o job que melhor se ajuste ao
tamanho da partição.
d)gerenciar os registradores de base e registradores de
limite.
68
FUB
(CESPE) Em sistemas multiprogramados, uma
forma de resolver o problema da realocação
consiste em alterar as instruções do
programa de acordo com a partição de
memória em que ele será carregado.
a) Certo
b) Errado
69
FUB
(CESPE) Swaping é a troca de processos
entre a memória e o disco, quando a
memória principal não é suficiente para
conter todos os processos.
a) Certo
b) Errado
70
FUB
(CESPE) Para que um programa possa ser
executado, o seu tamanho, incluindo os
dados e a pilha, não pode ser maior que a
quantidade de memória física disponível no
computador para a sua execução.
a) Certo
b) Errado
71
DETRAN-ES
(CESPE) No gerenciamento de memória virtual,
um sistema operacional pode ter uma parte dos
espaços de endereçamento atribuída à memória
principal e outra ao disco rígido, sendo possível
alternar o uso desses espaços de acordo com a
necessidade de gerenciamento e uso.
a) Certo
b) Errado
72
Universidade Federal
de Pernambuco
Um dos tipos de gerenciamento de memória utilizados por sistemas operacionais é
a memória virtual. Este tipo de memória pode ser gerenciada por segmentação.
Assinale a alternativa que descreve o funcionamento do gerenciamento de memória
virtual por segmentação:
a)Divide o espaço de endereçamento virtual e espaço de endereçamento real em
blocos do mesmo tamanho chamados de segmentos.
b)Divide o espaço de endereçamento virtual e espaço de endereçamento real em
blocos do mesmo tamanho chamados de buffer.
c)Divide o espaço do endereçamento virtual em blocos de tamanhos diferentes
chamados segmentos.
d)Divide o espaço de endereçamento virtual e espaço de endereçamento real em
blocos do mesmo tamanho chamados de páginas.
e)Divide o endereçamento memória virtual em partes semelhantes chamadas de
blocos.
73