Sistemas Operacionais
Gerenciamento de memória

A multiprogramação implica em manter-se vários processos
em memória.

A memória necessita ser alocada de forma eficiente para
permitir o máximo possível de processos

Existem diferentes técnicas para gerência
que dependem do hardware do processador.
de
memória,
Gerenciamento de memória
Um sistema de memória possui pelo menos
dois níveis:
o Memória principal: acessada pela CPU
o Memória secundária: discos
Gerenciamento de memória
• Programas são armazenados em disco
o Executar um programa se traduz em
transferi-lo da memória secundária à
memória primária
Gerenciamento de memória
•
Qualquer
memória

Monotarefa: gerência é simples

Multitarefa: complexa
•
Algoritmos
de
dependem
de
hardware da máquina
sistema
operacional
gerência
facilidades
tem
gerência
de
de
memória
disponíveis pelo
Gerenciamento de memória
Memória lógica e memória física
Memória lógica
o É aquela que o processo “enxerga”
o Endereços lógicos são aqueles manipulados por
um processo
Gerenciamento de memória
Memória lógica e memória física
Memória física


Implementada pelos circuitos integrados de memória.
Endereços físicos são aqueles que correspondem a
uma posição real de memória.
Gerenciamento de memória
Endereço lógico versus endereço físico
Espaço lógico de um processo é diferente do espaço físico.


Endereço lógico: gerado pela CPU (endereço virtual)
Endereço físico: endereços enviados para a memória RAM
Programas de usuários “vêem” apenas endereços lógicos.
Endereços lógicos são transformados em endereços físicos no
momento de execução dos processos.
Gerenciamento de memória
Unidade de gerência de memória
• Memory Management Unit (MMU)
• Hardware que faz o mapeamento entre
endereço lógico e endereço físico
Gerenciamento de memória
Unidade de gerência de memória
Gerenciamento de memória
Um programa deve ser transformado em um processo para poder ser
executado.


Alocação de um descritor de processos
Alocação de áreas de memória para código, dados e pilha
Transformação é feita através de uma série de passos, alguns com a
ajuda do próprio programados.


Compilação, diretivas de compilação e/ou montagem,
ligação, etc...
Amarração de endereços (binding)
Gerenciamento de memória
Amarração de endereços (binding)
Atribuição de endereços (posições de memória) para código e
dados pode ser feita em três momentos diferentes.

Em tempo de compilação

Em tempo de carga

Em tempo de execução .
Gerenciamento de memória
Amarração de endereços (binding)
Gerenciamento de memória
Amarração de endereços (binding)
Atribuição de endereços para instruções e dados pode ser feita
em três momentos diferentes:



Em tempo de compilação: se a localização da memória
é conhecida a priori, código absoluto pode ser gerado; tem
que recompilar o código se a alocação inicial mudar
Em tempo de carga: deve gerar código relocável se a
localização da memória não é conhecida em tempo de
compilação
Em tempo de execução: a atribuição é adiada até o tempo
de execução se o processo puder ser movido durante
sua execução de um segmento de memória para outro.
Precisa de suporte de hardware para mapear
endereços (ex.: registradores base e limite)
Gerenciamento de memória
Gerenciamento de memória
Carregador relocador
Gerenciamento de memória
Gerenciamento de memória
Alocação contígua simples
•
Sistema mais simples
•
Memória principal é dividida em duas partições: o
Sistema operacional (parte baixa de memória) o
Processo de usuário (restante da memória)
•
Usuário tem controle total da memória podendo
inclusive acessar a área do sistema operacional.
Ex.: DOS (não confiável)
Gerenciamento de memória

Evolução: inserir proteção através de
mecanismos de hardware + software

Registradores de base e de limite o
Memory Management Unit (MMU)
Gerenciamento de memória
Alocação contígua particionada
•
Existência de múltiplas partições
•
Imposta pela multiprogramação
•
Filosofia:
o Dividir a memória em blocos (partições)
o Cada partição pode receber um processo (programa)
o Grau de multiprogramação é fornecido pelo número de partições
* * Importante: não considerando a existência
de
swapping
Gerenciamento de memória
Alocação contígua particionada
• Duas formas básicas:


Alocação contígua com partições fixas
(estática)
Alocação contígua com partições variáveis
(dinâmica)
Gerenciamento de memória
Alocação contígua particionada
•
O sistema operacional é responsável pelo controle
das partições mantendo informações como:
o Partições alocadas
o Partições livres
o Tamanho das partições
Gerenciamento de memória
Alocação contígua particionada dinâmica
Gerenciamento de memória
Alocação contígua particionada fixa
• Memória disponível é dividida em partições
de tamanho fixo que podem ser do mesmo
tamanho ou não
Gerenciamento de memória
Alocação contígua particionada fixa
Questões:
o Processos podem ser carregados em qualquer partição?
Depende se o código é absoluto ou relocável
o Número de processos que podem estar em execução ao
mesmo tempo?
Sem swapping – igual ao número de partições (máximo)
Com swapping – maior que o número de partições
o Se o programa é maior que o tamanho da partição?
Não executa a menos que se empregue um esquema de
overlay
Gerenciamento de memória
Técnica de Overlay
● Enquanto na alocação contígua simples os
programas estão limitados ao tamanho da
área disponível na memória principal para o
usuário, na técnica de Overlay os
programas são divididos em módulos, de
forma que seja possível a execução
independente de cada módulo, utilizando
uma mesma área da memória
Gerenciamento de memória
Técnica de Overlay
Exemplo de Overlay: Um programa que consista em
um módulo principal e outros dois módulos
independentes, um correspondente ao cadastro e
outro, à impressão. Quando o programa é
carregado, apenas o módulo principal é introduzido
na memória, os demais aguardam em memória
secundária. Quando um dos outros módulos for
referenciado pelo módulo principal, aquele será
carregado na memória principal, na área de overlay
Gerenciamento de memória
Técnica de Overlay
A definição das áreas de overlay é feita pelo próprio programador,
através de comandos específicos da linguagem de
programação.
● O tamanho da área de overlay deve ser igual ou maior ao
tamanho do maior módulo.
● Como vantagem, a técnica de overlay possibilita um melhor
aproveitamento da memória principal.
● Sua utilização exige cuidado, pois pode trazer implicações tanto
na manutenção como no desempenho das aplicações, devido
à possibilidade de transferências excessivas dos módulos
entre a memória principal e a memória secundária.
Gerenciamento de memória
Alocação contígua particionada fixa
Gerenciamento de partições fixas
Com código absoluto
o
o
Um processo só pode ser carregado na área de memória
(partição) para a qual foi compilado
Pode haver disputa por uma partição mesmo que tendo outras
livres
Processo é mantido no escalonador de longo prazo (termo)
Empregar swapping
Gerenciamento de memória
Alocação contígua particionada fixa
Gerenciamento com código relocável

Um processo de tamanho menor ou igual ao tamanho da
partição pode ser carregado em qualquer partição disponível

Se todas as partições estão ocupadas, duas soluções:
- Processo é mantido no escalonador de longo prazo (termo)
- Empregar swapping (escalonador a médio prazo)
Gerenciamento de memória
Swapping

Processo necessita estar na memória para ser executado

Se não há mais espaço em memória é necessário fazer um
rodízio de processos em memória

Um processo pode ser temporariamente movido para
fora da memória (backing store) e então trazido de volta
para a memória para continuar a execução
Gerenciamento de memória
Swapping

Backing store – memória secundária suficientemente grande
para armazenar cópias de todos os processos de usuários

A maior parte do tempo de swap é tempo de transferência; tempo de
swap é proporcional ao tamanho do processo

Existem variantes do sistema de swapping utilizados em
sistemas como UNIX, Linux e Windows

Roll out, roll in – swapping variante usado para algoritmos
de escalonamento baseados em prioridade; processo de
baixa prioridade é movido da memória para que processos
de alta prioridade possam ser carregados e executados
Gerenciamento de memória
Swapping
sistema operacional mantém uma fila de processos que estão
prontos para executar, que possuem imagens da memória em disco
Gerenciamento de memória
Alocação contígua particionada fixa
Fragmentação Interna
•
Problema da alocação fixa é uso ineficiente da memória
principal
•
Um processo, não importando quão pequeno seja, ocupa
uma partição inteira
Gerenciamento de memória
Alocação contígua particionada fixa
Fragmentação Interna
Gerenciamento de memória
Alocação contígua particionada fixa
Paliativo para reduzir fragmentação interna

Partições de tamanho diferentes
Gerenciamento de memória
Algoritmos para alocação de partições fixas

Se código é absoluto a alocação é determinada na fase de montagem,
compilação ou ligação.

Se código é relocável:
- Partições de igual tamanho
* Não importa qual partição é utilizada
- Partições de diferentes tamanhos
* Atribui ao processo a menor partição livre capaz de armazena
o processo
* Processo são atribuídos a partições de forma a minimizar o
desperdício de
memória (fragmentação interna)
Gerenciamento de memória
Algoritmos para alocação de partições fixas
Gerenciamento de memória
Alocação particionada dinâmica
• Objetivo é eliminar a fragmentação interna
• Processos alocam memória de acordo com
suas necessidades
• Partições são em número e tamanho
variáveis
Gerenciamento de memória
Alocação particionada dinâmica
Gerenciamento de memória
Alocação particionada dinâmica
Fragmentação externa
• A execução de processos pode criar
pedaços livres de memória
• Pode haver memória disponível, mas não
contígua
Gerenciamento de memória
Alocação particionada dinâmica
Fragmentação externa
Gerenciamento de memória
Alocação particionada dinâmica
Soluções possíveis fragmentação externa





Reunir espaços adjacentes de memória
Empregar compactação
Relocar as partições de forma a eliminar os espaços entre elas e
criando uma área contígua
Desvantagem:
Consumo do processador
Acesso a disco
Acionado somente quando ocorre fragmentação
Necessidade de código relocável
Gerenciamento de memória
Alocação particionada dinâmica
Gerenciamento de partições dinâmicas
•
Determinar qual área de memória livre será alocada a um
processo
•
Sistema operacional mantém uma lista de lacunas o Pedaços
de espaços livres em memória
•
Necessidade de percorrer a lista de lacunas sempre que um
processo é criado
Gerenciamento de memória
Alocação particionada dinâmica
Algoritmos para alocação contígua dinâmica




Best fit
Minimizar tam_processo - tam_bloco o Deixar espaços livres os
menores possíveis
Worst fit
Maximizar tam_processo - tam_bloco o Deixar espaços livres os
maiores possíveis
First fit
tam_bloco > tam_processo
Circular fit
Variação do first-fit
Gerenciamento de memória
Algoritmo alocação particionada dinâmica
Gerenciamento de memória
Algoritmo alocação particionada dinâmica
Desvantagem de partições variáveis

Tende a criar lacunas de memória livres que
individualmente podem não ser suficientes para
acomodar um processo

Pode haver memória livre, mas não contígua
Fragmentação externa
Gerenciamento de memória
Algoritmo alocação particionada dinâmica
Desvantagem de partições variáveis
Gerenciamento de memória
Soluções possíveis para fragmentação externa




Reunir espaços adjacentes de memória
Empregar compactação
Relocar as partições de forma a eliminar os espaços entre elas
e criando uma área contígua
o Desvantagem:
Consumo do processador Acesso a disco
Acionado somente quando ocorre fragmentação
Necessidade de código relocável
Gerenciamento de memória
Problemas com alocação particionada
o Necessidade de uma área contígua de memória
(tamanho do processo)
o Fragmentação interna (partições fixas) ou externa
(partições variáveis)
Gerenciamento de memória


Nova abordagem é considerar a existência
de um espaço de endereçamento lógico e de
um espaço de endereçamento físico
O espaço de endereçamento físico não precisa ser
contíguo o Necessita “mapear” o espaço lógico no
espaço físico
Dois métodos básicos:
• Paginação
• Segmentação
Download

Apresentação 12 (A2)