Escolar Documentos
Profissional Documentos
Cultura Documentos
3. Gestão de Memória
Introdução
Registos
Microprogramação
Cache
Memória principal
Sistema Operativo
Discos (memória secundária)
Tapes Software de Backup
1
6/2/2009
Sistemas Mono-programados
Sistemas Mono-programados
Organização da memória
Espaço de Espaço de
endereçamento endereçamento
Device
ROM
Drivers
Programa
RAM Programa
Fronteira RAM
Sistema Sistema
Operativo Operativo
2
6/2/2009
Sistemas Multi-programados
Grau de multi-programação
Uma medida aproximada da utilização do CPU
quando vários programas correm “simultaneamente”
Suponha que os processos passam uma fracção do
tempo da sua existência – p – bloqueados em
operações de I/O
Se n processos estiverem a correr, a probabilidade do
CPU estar desocupado será então dada por pn
(corresponde à probabilidade de todos os processos
estarem bloqueados em operações de I/O)
A taxa de ocupação do CPU será então dada por 1-pn
n designa-se por grau de multi-programação
5
Sistemas Multi-programados
Grau de multi-programação
100%
80%
Utilização da CPU
60%
A curva que melhor se ajusta à realidade estará situada entre 80% e 90% I/O
3
6/2/2009
Sistemas Multi-programados
Partições fixas
Memória dividida em várias partições de dimensão
fixa, definidas inicialmente pelo gestor de sistema
Cada programa é carregado numa partição com uma
dimensão adequada
Fragmentação da memória:
Interna – espaço desperdiçado dentro de cada partição
Externa – partições inteiras desperdiçadas.
Sistemas Multi-programados
Formas de implementação
Partição 2 Partição 2
500K 500K
Partição 1 Partição 1
100K 100K
Sistema Sistema
Operativo Operativo
0K 0K
4
6/2/2009
Sistemas Multi-programados
Colocação e Protecção
A multi-programação trouxe dois problemas a resolver:
Colocação – garantir que os endereços referenciados por um
programa sejam os correctos independentemente da posição de
memória a partir da qual é carregado
Registo Base – a todos os endereços referenciados pelo
programa soma-se o endereço base da partição onde este é
carregado. Os programas são escritos como se o primeiro
endereço fosse 0.
Sistemas Multi-programados
Colocação e Protecção
Base e limite para a partição 1
Exemplos
896K
Partição 3
Verificação de acesso ao endereço End 768K
Partição 2
N
End < Limite ? 512K
Partição 1
Limite = 384K
S
Programa
Falha de
End = Base + End
protecção Base = 128K 128K
Sistema
Operativo
0K
10
5
6/2/2009
Sistemas Multi-programados
Partições variáveis
Outro esquema consiste em atribuir partições com
dimensões dinâmicas, ajustadas à dimensão dos
programas
Deixa de existir fragmentação interna, mas continua a
haver fragmentação externa
Para resolver a fragmentação, utiliza-se de tempos
em tempos um procedimento de agrupamento da
memória num bloco de endereços contíguos –
compactação da memória
11
Sistemas Multi-programados
Swapping
Esquema que envolve a memória principal e a
memória secundária (disco)
A ideia consiste em transferir processos da memória
principal para o disco e vice-versa
Um possível critério será transferir para o disco um processo
que bloqueie, e trazer para a RAM um processo que se torne
activo
Esta estratégia é utilizada em conjunto com partições
de dimensões variáveis
Conduz à proliferação de buracos (fragmentação) – é
necessário recorrer à compactação da memória
12
6
6/2/2009
Sistemas Multi-programados
Exemplo
Início
Entrada A Entrada B Entrada C swap-out A
(RAM livre)
C C
B B B
A A A
C C C C B
B C C
A A
A A
D D D
S.O. S.O. S.O. S.O. S.O. S.O.
13
Sistemas Multi-programados
Representação da memória
Estrutura-se a memória em unidades
(blocos) de dimensão fixa 0
1 P1
Representa-se o estado da memória
2
através de: 3
Listas ligadas 4
5
P 0 3 L 3 4 P 7 2 6
7
P2
8
L 9 2 P 11 4 L 15 1
9
10
Bitmaps 11
1110000110011110 12
P3
13
1 – representa bloco ocupado 14
0 – representa bloco livre 15
14
7
6/2/2009
Sistemas Multi-programados
Algoritmos
First fit – procura o primeiro buraco da lista com dimensão
suficiente para carregar o programa
Next fit – variante do anterior – procura a partir do ponto em
que foi encontrado um buraco anteriormente
Best fit – procura o buraco com a dimensão que melhor se
15
Sistemas Multi-programados
Memória dinâmica
Um processo pode ter necessidade de obter mais
memória em tempo de execução
Uma solução seria efectuar swap-out do processo e
depois swap-in com uma nova dimensão
Demasiado lento...
Stack
Outra solução será reservar
Espaço para
antecipadamente espaço para crescimento
crescimento do stack e da heap
Rápido, mas com algum Heap
desperdício de memória
(é o mais utilizado) Programa
16
8
6/2/2009
Sistemas Multi-programados
Na linguagem C existem algumas funções que para manipulação
de memória dinâmica
malloc(size_t m)
reserva um bloco de m bytes e devolve um apontador para o bloco
criado
calloc(size_t n, size_t m)
reserva dinamicamente um array de n elementos com m bytes cada
um. Devolve um apontador para a primeira posição do array criado
free(*ptr)
liberta o espaço referenciado pelo apontador ptr. Este apontador
pode ser o devolvido anteriormente por malloc ou calloc
17
Sistemas Multi-programados
Na linguagem C++ existem dois operadores:
18
9
6/2/2009
Memória Virtual
19
Memória Virtual
Endereços reais
Endereços físicos que correspondem ao acesso aos
dispositivos de uma forma directa
Endereços virtuais
Endereços utilizados internamente pelo sistema, e
que não estão ligados aos dispositivos físicos de uma
forma directa – um endereço virtual pode ser muito
diferente de um endereço real
São convertidos em endereços reais através de
estruturas e algoritmos nos quais intervém o S.O. e
também uma unidade de hardware designada MMU
(Memory Management Unit)
20
10
6/2/2009
Memória Virtual
CPU
Controlador
Memória
de
RAM
Disco
MMU
Bus de endereços
21
Memória Virtual
Multi-programação Multi-programação
Mono-
programação
Partições Partições
Paginação Segmentação Misto
fixas variáveis
22
11
6/2/2009
Paginação
Método mais comum de gestão da memória virtual
Páginas (pages)
O espaço de endereçamento virtual é divido em
blocos de dimensão fixa designadas por páginas.
A dimensão de cada página é uma potência de 2
Paginação Espaço
virtual RAM
512K 256K
448K 192K
x
384K 128K
x
320K 64K
256K 00K
molduras
192K
x
128K
64K
x
00K
páginas
Endereço virtual Endereço físico
478K = 448K+30K 128K+30K = 158K
24
12
6/2/2009
n bits m bits
0 Descritor 0
1 Descritor 1
2 Descritor 2
3 Descritor 3
moldura
bit de presença protecção controlo
26
13
6/2/2009
0000 1 101
0001 0 xxx
0010 1 110
0011 0 xxx
0100 1 100
0101 1 111
0110 1 010
0111 0 xxx
1000 0 xxx
1001 0 xxx
1010 1 001
1011 0 xxx
1100 0 xxx
1101 0 xxx
1110 1 000
1111 1 011 110 0110 1010 0001 0x66A1 (26273)
27
28
14
6/2/2009
29
0 0
1 1
2 2
1023 1023
0
1
2
1023
30
15
6/2/2009
31
32
16
6/2/2009
33
34
17
6/2/2009
35
R=0
f e d c b a
0 0 1 0 1 1 bit R
b a f e d
0 0 0 0 1 c é descartada
36
18
6/2/2009
a a
h 0 b h 0 b
1 1 1 0
g c g c
1 1 1 0
f d f d
0 e 0 0 e 0
1 1
37
38
19
6/2/2009
39
40
20
6/2/2009
41
Working Set
O Working Set é o conjunto de páginas que estão a
ser utilizadas por um processo
Se todo o Working Set de um processo está
carregado em memória, então não ocorrem page
faults
Tirando partido deste facto, existem algoritmos de
substituição de páginas que funcionam tendo em
conta o working set de um processo
A ideia será substituir páginas que não se encontrem dentro
do working set de um processo
42
21
6/2/2009
43
44
22
6/2/2009
Segmento 1
(8K)
Segmento 5 Segmento 5 Fragmentação
(6K) (6K)
tempo
45
3 Descritor 3
Endereço Físico
Estrutura de um descritor
P Base Limite Protecção Controlo
Bit de presença
46
23
6/2/2009
Vantagens:
Fácil implementação de partilha de dados
Divisão de um processo em segmentos diferentes
(e.g., código, heap, stack)
Múltiplos espaços de endereçamento linear por
processo
Desvantagens:
Maior fragmentação da memória
Impossibilidade de se definirem segmentos maiores
do que a memória física (a não ser que se utilize
também paginação ou overlays)
47
48
24
6/2/2009
Vantagem:
Elimina as desvantagens de um esquema puro de
segmentação, mas mantém as suas vantagens
Desvantagens:
Maior complexidade das MMUs
Mais acessos à memória para conversão de
endereços virtuais em físicos
49
50
25
6/2/2009
dinâmica de memória
Segmento do stack – cresce e decresce ao longo do tempo,
à medida que vão havendo chamadas a funções
NOTA: não é utilizada segmentação, por isso estes
segmentos correspondem a um conjunto de páginas
Dois processos diferentes podem partilhar o mesmo
segmento de texto (se o programa executado for o
mesmo)
51
Processo A Processo B
Stack Stack
Dados Dados
Espaço virtual Espaço virtual
do processo A Texto Texto do processo B
Molduras
SO
52
26
6/2/2009
53
...
Moldura 2
Moldura 1
Sempre carregados
em memória principal Moldura 0
Core
Map
Kernel do SO
54
27
6/2/2009
56
28
6/2/2009
29