2. Introdução
Atribuição de Endereços, Carregamento Dinâmico, Ligação
Dinâmica
Espaço de Endereçamento Físico versus Lógico
Alocação Contígua Simples
Overlay
Alocação Particionada
Fragmentação Externa e Interna
Gerência de Memória com Mapeamento de Bits
Gerência de Memória com Listas Ligadas
Algoritmos de Alocação de Partições
Swapping
Eduardo Nicola F. Zagari
2
Gerência de Memória - Alocação
3. Memória um dos mais importantes recursos de um computador
necessidade de ser gerenciada
Programas devem ser colocados dentro de um processo e então
carregados em memória para serem executados.
Input queue – coleção de processos no disco que estão aguardando
carregamento em memória para executarem o programa.
Funções de um Gerente de Memória
controlar quais partes da memória estão em uso
controlar quais partes estão livres
alocar memória a processos quando estes precisarem
desalocar quando eles não mais necessitarem
gerenciar a troca (swapping ) dos processos entre memória principal e
disco, quando a memória não é grande o suficiente para guardar todos os
processos
Eduardo Nicola F. Zagari
3
Gerência de Memória - Alocação
4. A CPU busca instruções da memória de acordo com o valor do
contador de instruções (PC) do programa em execução. Essas
instruções podem:
buscar novos valores de endereços específicos da memória
armazenar novos valores em posições específicas da memória
Programas de usuário passam por vários passos antes de
começarem a ser executados.
Instrução
UAL UC
Parâmetros Memória
PC Registrador Principal
Registrador Resultado
Eduardo Nicola F. Zagari
4
Gerência de Memória - Alocação
5. A maioria dos sistemas permite que os processos de usuários
sejam colocados em qualquer parte da memória
assim, embora o espaço de endereçamento comece em 0000, o
endereço inicial de um processo não precisa ser este.
A ligação de endereços de
instruções e de dados para os Programa
endereços de memória podem Fonte
acontecer em 3 estágios
diferentes:
Em tempo de compilação
compilador ou tempo de
código absoluto: se o programa vai montador compilação
ser carregado no endereço E, o
código gerado pelo compilador
inicia-se neste endereço (se for
alterado, deve ser recompilado).
Ex.: “.COMʼʼ do DOS
Código
Objeto
Eduardo Nicola F. Zagari
5
Gerência de Memória - Alocação
6. Em tempo de carga
código relocável: quando não se Código
conhece em tempo de Cód Obj
Objeto de outros
compilação a posição em que o
programa será armazenado. módulos
Ex.:
Compilador: 14 bytes do
início
ligador tempo
Carregador: 74000 + 14
de carga
Código
Biblioteca
Relocável
de sistema
carregador
Eduardo Nicola F. Zagari
6
Gerência de Memória - Alocação
7. Em tempo de execução
Biblioteca
se o processo pode ser movido
de sistema
durante sua execução, a
determinação do endereço deve
ser atrasada para o tempo de carregador
execução
há a necessidade de suporte de
hardware para o mapeamento Biblioteca
de endereços (p.ex.: de sistema
registradores base e limite)
carregada
dinamica-
mente
Código
tempo de
binário
executável execução
Eduardo Nicola F. Zagari
7
Gerência de Memória - Alocação
8. O conceito de um espaço de endereçamento lógico que está
associado a um espaço de endereçamento físico separado é
central ao adequado gerenciamento da 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ógico e Físico são os mesmo nos esquemas de
atribuição de endereços em tempo de compilação e em tempo
de carga.
Endereços Lógico e Físico diferem quando se usa esquema de
atribuição de endereços em tempo de execução.
Eduardo Nicola F. Zagari
8
Gerência de Memória - Alocação
9. Dispositivo de hardware que mapeia endereços virtuais em
endereços físicos.
Através da MMU, o valor do registrador de relocação é
adicionado a todo endereço gerado pelo processo do usuário no
instante em queee é enviado à memória.
O programa do usuário lida com endereços lógicos; ele nunca vê
o endereço físico real.
Eduardo Nicola F. Zagari
9
Gerência de Memória - Alocação
10. Registrador
Base
14000
Endereço Endereço Memória
Lógico Físico
CPU #346 + #14346
Principal
MMU
Unidade de
Gerenciamento
de Memória
Eduardo Nicola F. Zagari
10
Gerência de Memória - Alocação
11. Rotina não é carregada até que ela seja chamada
Melhor utilização do espaço de memória
Rotinas que não são usadas nunca são carregadas.
Útil quando grandes quantidades de código são necessárias
para manipular casos pouco freqüentes.
Nenhum suporte especial do S.O. é requerido
Implementado através do projeto do programa.
Eduardo Nicola F. Zagari
11
Gerência de Memória - Alocação
12. A ligação (linking) é adiada até o tempo de execução.
Stub: um pequeno pedaço de código usado para a localização
da rotina dinâmica, residente em memória, apropriada.
O stub substitui a si próprio com o endereço da rotina e a
executa.
É necessário o suporte do S.O. para verificar se a rotina está no
endereço de memória dos processos.
Ligação Dinâmica é particularmente útil para bibliotecas.
Economia de espaço
Atualização
Controle de concorrência
Eduardo Nicola F. Zagari
12
Gerência de Memória - Alocação
13. Toda vez que desejarmos executar um programa (residente em
memória secundária), deveremos, de alguma forma, carregá-lo
para a memória principal, para que o processador possa
referenciar suas instruções e seus dados
Nos sistemas monoprogramados a gerência da memória não é
muito complexa, mas nos sistemas multiprogramados ela se
torna crítica
A seguir apresentaremos os principais esquemas de
organização e gerência da memória principal
Eduardo Nicola F. Zagari
13
Gerência de Memória - Alocação
14. Implementada nos primeiros SOs e ainda está presente em
alguns sistemas monoprogramados
Esquema mais simples para gerência de memória
A memória principal é dividida em duas partes:
uma para o Sistema Operacional
outra para o(s) programa(s) do(s) usuário(s)
SO pode ocupar tanto a parte baixa quanto a parte mais alta da
memória, dependendo da localização do vetor de interrupções
Eduardo Nicola F. Zagari
14
Gerência de Memória - Alocação
15. No IBM-PC é utilizado o terceiro modelo: nos 8KB mais altos dos
1 MB de endereçamento existe uma ROM com um programa
chamado BIOS (Basic Input Output System), correspondente a
todos os drivers
Memória Principal Memória Principal Memória Principal
0xFF Sistema Drivers de dispo-
Área para o Operacional sitivos em ROM
processo em ROM
do usuário Área para o
Área para o processo
Sistema processo do usuário
Operacional do usuário SO
0x00 em RAM em RAM
Eduardo Nicola F. Zagari
15
Gerência de Memória - Alocação
16. Usuário tem controle sobre toda a memória principal, podendo
acessar até a área do SO (caso do DOS)
PROTEÇÃO: Pode-se implementar um esquema de proteção
usando um registrador que delimite as áreas do SO e usuário
Memória Principal
Registrador
Sistema
Operacional
Área para o
processo
do usuário
Eduardo Nicola F. Zagari
16
Gerência de Memória - Alocação
17. Sempre que um programa do usuário faz referência a um endereço
de memória, o sistema verifica se o endereço está nos seus limites
(registrador base e registrador limite). Caso não esteja, o programa
de usuário pode ser cancelado e ser gerada uma mensagem de
erro
Registrador Registrador
Limite Base
Endereço Endereço Memória
CPU Lógico Físico Principal
< +
MMU
interrupção de software; erro de endereçamento
Eduardo Nicola F. Zagari
17
Gerência de Memória - Alocação
18. Problemas: não permite a utilização
eficiente do processador e nem da
memória principal, além de limitar o
tamanho do programa do usuário
Memória Principal
Em SOs que suportam o conceito de Sistema
MULTIPROGRAMAÇÃO, é preciso que Operacional
existam outras formas de organização da
memória principal, a fim de suportar
vários processos na memória
Processo
simultaneamente
do Usuário
Área Livre
Eduardo Nicola F. Zagari
18
Gerência de Memória - Alocação
19. Sobreposição (Overlay) (usuário)
O que fazer quando se tem um programa que ocupa mais memória
do que a disponível?
Verifica-se se o programa tem seções que não necessitem
permanecer na memória durante toda a execução
Mantém-se na memória somente aquelas instruções e dados
que são necessários a qualquer hora.
Essas seções, uma vez executadas, podem ser substituídas por
outras
A substituição ocorre pela transferência da seção do disco para a
memória na área de overlay, cobrindo a seção anterior
O programa é inicialmente carregado mais rapidamente, entretanto,
a execução ficará um pouco mais lenta, devido ao tempo extra
gasto com a sobreposição
Eduardo Nicola F. Zagari
19
Gerência de Memória - Alocação
20. Armazenamento
Primário Armazenamento
Secundário
Parte fixa Fase inicial Fase Fase final
50K
do intermediária
processo
30K
50K
Rotina de 80K
20K
controle
de overlay
Área
80K
de
Overlay
Eduardo Nicola F. Zagari
20
Gerência de Memória - Alocação
21. O mecanismo de overlay é pouco transparente, pois a definição
das áreas de overlay é função do programador (não é do SO),
através de comandos específicos da linguagem utilizada.
Dependendo da definição, pode ocasionar sérias implicações no
desempenho das aplicações, devido à transferência excessiva
dos módulos entre o disco e a memória
Eduardo Nicola F. Zagari
21
Gerência de Memória - Alocação
22. Motivação:
tornar mais fácil programar uma aplicação, dividindo-a em dois ou
mais processos
existência de serviço interativo para vários usuários
simultaneamente (tempo de resposta)
utilização da CPU (existência de processos I/O bound )
Modelos de Multiprogramação
Modelos Simplista
Se cada processo gasta 20% de seu tempo na memória usando
o processador, então 5 processos alcançam um fator de
utilização da CPU de 100%
E se os 5 processos esperam por E/S simultaneamente?
Eduardo Nicola F. Zagari
22
Gerência de Memória - Alocação
23. Modelo Probabilistico
Cada processo gasta p% de seu tempo com E/S
n processos probabilidade de estarem aguardando E/S
simultaneamente: pn
F.U.CPU = 1 - pn
Exemplo:
– 1 MB de memória, SO de 200K, processos de 200K e cada
um gasta 80% do tempo com E/S 4 processos na
memória FUCPU ≅ 60%
– Adição de 1 MB de RAM grau de 4 p/ 9 FU ≅87%
– Adição de mais 1 MB de RAM grau de multiprogramação
de 9 para 14 FU ≅ 96%
Eduardo Nicola F. Zagari
23
Gerência de Memória - Alocação
24. Nos primeiros SOs multiprogramados a memória principal era dividida em
pedaços de tamanho fixo (possivelmente distintos), chamados partições
O tamanho das partições era estabelecido na fase de inicialização do
sistema (boot), em função dos tamanhos dos programas que iriam ser
executados
alteração de tamanho de partição
Memória Principal
reinicialização
Sistema Operacional
Tabela de partições
Programas a 2 KB
Partição Tamanho Partição 1
serem executados
1 2 KB E D C B A Partição 2 5 KB
2 5 KB 3KB 6KB 1KB 4KB 2KB
8 KB
3 8 KB Partição 3
Eduardo Nicola F. Zagari
24
Gerência de Memória - Alocação
25. A proteção baseia-se em dois registradores, que indicam os limites inferior
e superior da partição onde o programa está sendo executado
Acessos do processo usuário provocam a comparação com o registrador
limite, caso haja invasão, o processo é terminado com uma mensagem de
erro.
Memória Principal Endereço inicial
Endereço final
Sistema Operacional
Partição 1
Partição 2
Partição 3
Eduardo Nicola F. Zagari
25
Gerência de Memória - Alocação
26. E as chamadas aos serviços do SO ?
Isto é resolvido através da instrução chamada ao supervisor
(supervisor call )
Modo Usuário versus Modo Supervisor
Modo Usuário:
Execução das instruções disponíveis aos usuários
Modo Supervisor:
Todas as instruções permitidas (não é feita comparação com o
registrador limite)
A passagem do modo usuário para o modo supervisor ocorre
quando da solicitação de um serviço
Eduardo Nicola F. Zagari
26
Gerência de Memória - Alocação
27. Partições Fixas com Filas Múltiplas:
processo é colocado em uma partição determinada. Se estiver ocupada,
aguarda na fila;
ou, processo é colocado na fila da menor partição em que caiba
Problema: partições não utilizadas
Memória Principal
Programas a
serem executados Sistema Operacional
Partição 1
Partição 2
Partição 3
Eduardo Nicola F. Zagari
27
Gerência de Memória - Alocação
28. Partições Fixas com Fila Única:
fila única para todas as partições;
processo é colocado na fila da menor partição disponível em que caiba
Memória Principal
Programas a Sistema Operacional
serem executados Partição 1
Partição 2
Partição 3
Eduardo Nicola F. Zagari
28
Gerência de Memória - Alocação
29. Problema:
colocação de um programa pequeno em uma partição grande
partições vazias por falta de “clientes”
Uma tentativa de solução:
correr toda a fila antes de escolher o “cliente”
Problema:
discrimina pequenos processos
Eduardo Nicola F. Zagari
29
Gerência de Memória - Alocação
30. Em sistemas em que os compiladores e montadores geram
apenas código absoluto, os processos podem executar em
apenas uma das partições, mesmo que outras estejam livres
Memória Principal
Programas a Se os processos A e
serem executados B estivessem
Sistema Operacional executando e a
2 KB
C A Partição 1 partição 3 estivesse
livre, os processos C
5 KB e E não poderiam ser
E B Partição 2
executados
8 KB
D Partição 3
Eduardo Nicola F. Zagari
30
Gerência de Memória - Alocação
31. Com a evolução dos compiladores, linkers e loaders, tornou-se
possível a geração de código relocável, permitindo que os
processos sejam carregados em qualquer uma das partições
Memória Principal Se os processos A e
B terminarem de
Sistema Operacional executar, o processo
Programas a 2 KB
Processo C E pode ser carregado
serem executados e executado em
5 KB qualquer uma das
D E Processo A
6KB 3KB duas partições
8 KB
Processo B
Eduardo Nicola F. Zagari
31
Gerência de Memória - Alocação
32. Problema da APE: fragmentação excessiva
Fragmentação é o problema que surge quando pedaços de
memória ficam impedidos de serem utilizados por outros processos.
Memória Principal
Sistema Operacional
Programas a Processo C 1 KB
serem executados
Processo A
D B 3 KB
6KB 4KB
Processo E
3 KB
Eduardo Nicola F. Zagari
32
Gerência de Memória - Alocação
33. Visa reduzir o problema da fragmentação e, consequentemente,
aumentar o grau de compartilhamento da memória
É eliminado o conceito de partições de tamanho fixo
Na APD, cada processo utiliza o espaço necessário, passando
esse pedaço a ser a sua partição
Memória Principal
Sistema Operacional Sistema Operacional
4 KB
Programas a Processo B
serem executados 11 KB
1 KB
Processo C
3 KB
A E C B Processo E
2KB 3KB 1KB 4KB 2 KB
Processo A 1 KB
Eduardo Nicola F. Zagari
33
Gerência de Memória - Alocação
34. Memória Principal
0
Fila de processos
Sistema Operacional Processo Tamanho Tempo
400K
P1 600K 10
P2 1000K 5
P3 300K 20
P4 700K 8
P5 500K 15
2560K
Eduardo Nicola F. Zagari
34
Gerência de Memória - Alocação
35. 0 0 0 0 0
400K
so 400K
so 400K
so 400K
so 400K
so
P1 P1 P1 P5
900K
1000K 1000K 1000K 1000K 1000K
P2 aloca P4 P1 P4 aloca P4
P2 termina a P4 termina a P5
1700K 1700K 1700K
2000K 2000K 2000K 2000K 2000K
2300K
P3 2300K
P3 2300K
P3 2300K
P3 2300K
P3
2560K 2560K 2560K 2560K 2560K
Eduardo Nicola F. Zagari
35
Gerência de Memória - Alocação
36. Neste esquema, a fragmentação começa a ocorrer quando os
processos forem terminando e deixando espaços cada vez
menores na memória, não permitindo o ingresso de novos
processos
Memória Principal Apesar da
existência de 8
Sistema Operacional
Programa a Kbytes de
4 KB
ser executado memória livre, o
1 KB processo D não
D Processo C poderá ser
6KB 3 KB
carregado
2 KB
Processo A 1 KB
Eduardo Nicola F. Zagari
36
Gerência de Memória - Alocação
37. Soluções para a fragmentação:
Primeira: aglutinar espaços livres adjacentes em um único espaço
de tamanho maior. No exemplo anterior, caso o processo C termine,
teríamos:
Memória Principal Memória Principal
Sistema Operacional Sistema Operacional
4 KB
1 KB 8 KB
Processo C
3 KB
2 KB 2 KB
Processo A 1 KB
Processo A 1 KB
Eduardo Nicola F. Zagari
37
Gerência de Memória - Alocação
38. Como gerenciar? (ver tópico Gerência de Uso da Memória)
Mapa de Bits
Lista de partições ocupadas
Lista de partições livres
Ao término do processo, um “buraco” pode ser:
– adicionado à lista de partições livres (caso a nova partição
livre esteja cercada de partições ocupadas)
– incorporada a uma das partições da lista de partições livres
(caso o “buraco” seja adjacente a uma partição livre)
Não resolve completamente o problema (pode haver buracos
pequenos...)
Eduardo Nicola F. Zagari
38
Gerência de Memória - Alocação
39. Segunda: fazer uma relocação de todas as regiões ocupadas
(movimento de todos os processos), eliminando todos os espaços
entre elas e criando-se uma única área livre contígua. Este método
é conhecido como compactação.
Memória Principal Memória Principal
Sistema Operacional Sistema Operacional
1 KB
4 KB Processo C
2 KB
1 KB Processo A
Processo C
3 KB
8 KB
2 KB
Processo A 1 KB
Eduardo Nicola F. Zagari
39
Gerência de Memória - Alocação
40. Problemas:
Consumo de recursos (grande quantidade de área em disco e
de tempo de processador consumido em sua implementação)
Sistema necessita parar (pode ser desastroso para sistemas de
tempo real)
Eduardo Nicola F. Zagari
40
Gerência de Memória - Alocação
42. Fragmentação Externa:
existe memória suficiente para satisfazer uma requisição, mas ela não
é contínua
Estatisticamente, de cada N blocos alocados, N/2 blocos são
perdidos devido à fragmentação (33%)
Fragmentação Interna:
Memória Principal
memória interna a uma partição,
Sistema Operacional
mas que não é usada. Ex.:
Processo 1
18464
requisição de 18462 bytes
bytes
Uma solução para fragmentação
Processo 43
externa é compactação
Eduardo Nicola F. Zagari
42
Gerência de Memória - Alocação
43. Memória subdividida em unidades de alocação
A cada unidade de alocação 1 bit no mapa
Se bit é 0, esta parte da memória está livre
Se bit é 1, está ocupada
Tamanho da unidade de alocação versus tamanho do mapa
Se a unidade de alocação for de 4 bytes a parte da memória gasta
com este mapa é de apenas 3%
Se a unidade for maior tamanho do mapa é menor, mas aumenta o
desperdício de memória (fragmentação interna)
Desvantagem: para encontrar k unidades de alocação livres
percorrer mapa inteiro procurando k bits iguais a zero muito
lento!
Eduardo Nicola F. Zagari
43
Gerência de Memória - Alocação
44. (a) Parte da memória (b) Mapa de bits correspondente
(c) Lista ligada correspondente
Eduardo Nicola F. Zagari
44
Gerência de Memória - Alocação
45. Lista ligada de segmentos alocados e de segmentos livres
Ordenação por endereços
rápida atualização quando do término/remoção da memória
Possíveis combinações para a conclusão de um processo X:
A X B A B
A X após o término A
X B de X fica B
X
Com listas duplamente encadeadas a tarefa é ainda mais simples!
Eduardo Nicola F. Zagari
45
Gerência de Memória - Alocação
46. Como atender uma requisição de tamanho n a partir de uma lista
de buracos livres?
Estratégias de alocação de memória para escolher o ponto em que
deve ser carregado um processo recém criado ou que veio do disco
por troca (swapped in)
Listas separadas para processos e buracos:
mais rápido na busca por buracos
mais lento na liberação de memória
variante: os próprios buracos podem ser usados para implementar
a lista de partições livres
First-fit:
A lista de partições livres é percorrida e a primeira partição
suficientemente grande para o pedido é escolhida
A lista pode ser mantida em ordem aleatória ou ordenada em ordem
crescente de endereço
rápido
Eduardo Nicola F. Zagari
46
Gerência de Memória - Alocação
47. Memória Principal Memória Principal
Sistema Operacional Sistema Operacional
3 KB Processo F 2 KB
F Processo C Processo C
1 KB 4 KB
Processo A 2 KB Processo A
Eduardo Nicola F. Zagari
47
Gerência de Memória - Alocação
48. Next-fit:
Idêntico ao First-fit com a diferença que a busca se inicia a partir do
último ponto em que encontrou um buraco
desempenho ligeiramente mais lento que o First-fit
Best-fit:
A lista de partições livres é percorrida e a menor partição
suficientemente grande para o pedido é escolhida
A lista é ordenada em ordem crescente de tamanho
lento se a lista não estiver ordenada (teria que percorrer a lista
inteira)
desempenho ruim devido a muitos buracos pequenos
(fragmentação externa)
Eduardo Nicola F. Zagari
48
Gerência de Memória - Alocação
49. Memória Principal Memória Principal
Sistema Operacional Sistema Operacional
3 KB
F Processo C Processo C
1 KB 4 KB
Processo A Processo A
2 KB
Processo F 1 KB
Eduardo Nicola F. Zagari
49
Gerência de Memória - Alocação
50. Worst-fit:
A lista de partições livres é percorrida e a maior partição
suficientemente grande para o pedido é escolhida
A lista é ordenada em ordem decrescente de tamanho
diminui um pouco o problema da fragmentação
Quick-fit:
Listas separadas para alguns tamanhos mais comuns especificados
(por exemplo, uma fila para 2K, outra para 4K, outra para 8K, etc)
busca por buraco rápida
entretanto, a liberação de memória é lenta (reagrupar buracos e
modificá-los de fila)
Eduardo Nicola F. Zagari
50
Gerência de Memória - Alocação
51. Memória Principal Memória Principal
Sistema Operacional Sistema Operacional
3 KB
F Processo C Processo C
1 KB 4 KB Processo F
3 KB
Processo A 2 KB Processo A
Eduardo Nicola F. Zagari
51
Gerência de Memória - Alocação
52. Mesmo com o aumento da eficiência da multiprogramação e da
gerência de memória, muitas vezes um programa não podia ser
executado por falta de uma partição livre disponível
Em todos os esquemas apresentados anteriormente, um
programa permanecia na memória principal até o final de sua
execução, inclusive nos momentos em que esperava por um
evento, como uma operação de E/S
Uma solução é a técnica de swapping, cujo objetivo é o de
liberar espaço na RAM para que outros processos possam ser
carregados e executados
Backing store – disco rápido e grande o suficiente para acomodar
cópias de todas as imagens de memória para todos os usuários
Versões modificadas de swapping são encontradas em vários
sistemas (p.ex., UNIX, Linux e Windows).
Eduardo Nicola F. Zagari
52
Gerência de Memória - Alocação
53. Neste esquema, o SO escolhe um programa residente na
memória principal, levando-o da memória para o disco (swap
out)
Memória Principal
Sistema Operacional
Processo C
H Processo A
4 KB
Processo G
Processo B A
Eduardo Nicola F. Zagari
53
Gerência de Memória - Alocação
54. Posteriormente, o processo retorna para a memória principal
(swap in), como se nada tivesse ocorrido
Memória Principal
Sistema Operacional
Processo C
Processo H
Processo G
A Swap in
Eduardo Nicola F. Zagari
54
Gerência de Memória - Alocação
55. Mapeamento de espaço lógico em espaço físico de
endereçamento, em tempo de carregamento, torna ineficiente
recarregar o processo em outra região física diferente da do
primeiro carregamento
Solução:
Introdução de hardware que faça o mapeamento durante a
execução do processo: interceptador de endereços lógicos que
soma um valor base aos mesmos, produzindo o endereço físico
Não há mais necessidade da tabela de endereços relocáveis
Eduardo Nicola F. Zagari
55
Gerência de Memória - Alocação
56. Relocação Estática:
Mapeamento em tempo de carregamento
Relocação Dinâmica:
Mapeamento durante a execução
Endereço Lógico = Endereço Virtual
É o valor de um deslocamento em relação ao início do programa
Eduardo Nicola F. Zagari
56
Gerência de Memória - Alocação
57. Exemplo de hardware para mapeamento
Contém o endereço físico onde foi carregado o início do programa
Registrador Base Instrução
Operação End. Lógico
+
Endereço Físico = Endereço Real
(disponível na memória)
Eduardo Nicola F. Zagari
57
Gerência de Memória - Alocação
58. Proteção em relocação dinâmica
Consiste em comparar o endereço físico com o comprimento do
programa
Instrução de chamada ao supervisor
Separação entre dados e instruções
Permite o compartilhamento de instruções por dois ou mais
processos
Permite duplicar o tamanho máximo do espaço lógico
Exige a duplicação do hardware necessário para relocação e
proteção
Eduardo Nicola F. Zagari
58
Gerência de Memória - Alocação
59. Garantir espaço em disco sempre que algum processo é
swapped out
Os algoritmos para gerenciar o espaço alocado em disco para
swapping são os mesmos de gerência da memória principal
Em alguns sistemas, isto é feito somente no momento da
criação do processo e tal espaço permanece reservado
A única diferença é que a quantidade de espaço reservado no
disco deve ser um múltiplo do tamanho dos blocos do disco
Eduardo Nicola F. Zagari
59
Gerência de Memória - Alocação