Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória:...

54
Gerenciamento de memória

Transcript of Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória:...

Page 1: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Page 2: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Na memória principal ficam todos os programas e

os dados que serão executados pelo processador.

Possui menor capacidade e custo maior.

S.O buscam minimizar a ocupação da memória e

otimizar sua utilização.

Componente é o gerenciador de memória.

Page 3: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Tarefas do gerenciador de memória:

Monitorar quais partes da memória estão utilizadas e

quais estão disponíveis.

Realizar alocação e liberação da memória para os

processos.

Gerenciamento do swapping (troca) entre a memória

principal e a secundária.

Page 4: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Esquemas de gerenciamento de memória:

Mantém os processo fixos na memória principal.

monoprogramação

Movem os processos entre a memória principal e

secundária (swapping e paginação).

multiprogramação

Page 5: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento sem paginação

Foram utilizadas nos sistemas mais antigos.

A memória era compartilhada entre o S.O e os

programas.

Chamada de monousuário ou monoprogramação.

Somente um processo pode ser executado a cada

instante.

Page 6: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento sem paginação

Três maneiras simples de organizar memória com um sistema operacional e com processos.

Page 7: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória com

partições fixas

Surge um problema quando partições grandes está

com a fila vazia e uma fila para partição pequena

está com a fila cheia.

Solução: utilizar uma única fila.

O processo mais próximo do início da fila que se ajusta

na partição vazia poderia ser carregado.

Page 8: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória com

partições fixas – fila única

Partições fixas de memória com fila única.

Page 9: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Page 10: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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)

Page 11: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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)

Page 12: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 13: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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)

Page 14: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 15: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória com

partições fixas

Em direção à multiprogramação foram criadas partições fixas com tamanhos diferentes na memória principal.

A idéia é utilizar sempre o menor espaço possível.

Com tamanho fixo das partições, todo espaço naquela partição que não era utilizado pelo processo era perdido.

Funciona bem quando as tarefas são do mesmo tamanho ou quando os tamanhos são conhecidos previamente.

Page 16: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Alocação contígua particionada dinâmica

Page 17: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Técnica de Overlay

● Enquanto na alocação contígua simples osprogramas estão limitados ao tamanho da áreadisponível na memória principal para o usuário,na técnica de Overlay os programas são divididosem módulos, deforma que seja possível aexecução independente de cada módulo,utilizando uma mesma área da memória

Page 18: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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.

Page 19: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Alocação contígua particionada fixa

Gerenciamento de partições fixas

Com código absoluto

o Um processo só pode ser carregado na área de memória (partição) para a qual foi compilado

o Pode haver disputa por uma partição mesmo que tendo outras livres

Processo é mantido no escalonador de longo prazo (termo) Empregar swapping

Page 20: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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)

Page 21: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 22: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 23: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 24: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 25: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 26: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Alocação contígua particionada fixa

Fragmentação Interna

Page 27: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Alocação contígua particionada fixa

Paliativo para reduzir fragmentação interna

Partições de tamanho diferentes

Page 28: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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 ouligaçã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 oprocesso

* Processo são atribuídos a partições de forma a minimizar odesperdício de memória (fragmentação interna)

Page 29: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Algoritmos para alocação de partições fixas

Page 30: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 31: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Alocação particionada dinâmica

Page 32: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 33: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Alocação particionada dinâmica

Fragmentação externa

Page 34: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 35: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 36: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 37: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Algoritmo alocação particionada dinâmica

Page 38: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 39: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Gerenciamento de memória

Algoritmo alocação particionada dinâmica

Desvantagem de partições variáveis

Page 40: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 41: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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)

Page 42: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

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

Page 43: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Memória virtual

Um programa de 32 MB pode ser executado em

uma máquina com apenas 8 MB, por meio de uma

escolha cuidadosa feita pelo sistema operacional

em que 8 MB será mantido ativo na memória em

cada instante, dinamicamente, dando a ilusão de

que o programa inteiro está na memória.

Essa troca de módulos é a técnica de paginação.

Page 44: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Paginação

No sistemas com memória virtual, o endereço virtual

e físico não são os mesmos.

Quem realiza o mapeamento dos endereços

virtuais para o endereço físico é a unidade MMU

(memory management unity).

Page 45: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Paginação

Page 46: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Paginação

Como exemplo, nosso computador possui 32 KB de

memória física.

Queremos executar um programa de 64 KB.

O programa não pode ser carregado totalmente

na memória.

Assim, partes do programa serão carregadas

quando necessário.

Page 47: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Paginação

Page 48: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Paginação

Neste caso, as páginas marcadas com um X não

estão mapeadas no momento.

Se o programa tentar utilizar, ocorrerá o page-

fault.

Ele deverá escolher uma página pouco utilizada,

colocá-la em disco e carregar a pagina desejada.

Page 49: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Algoritmos de substituição de páginas

Algoritmo FIFO

Baixo custo.

Mantém uma lista de todas as páginas, com a página

mais velha no inicio e a mais nova no fim.

Quando recebe um page-fault a primeira página a

sair é a mais velha (início da fila).

Pouco utilizado porque pode ser removida páginas

muito utilizadas

Page 50: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Algoritmos de substituição de páginas

Algoritmo FIFO

Page 51: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Algoritmos de substituição de páginas

Relógio

Utiliza um bit (R) - referenciada

Assim o SO sabe qual página é mais ou menos

utilizada.

As páginas são mantidas em lista circular.

Um ponteiro aponta para a mais antiga. Se acontecer

um page-fault verifica o bit (R). Se for 0 é porque não

esta referenciada e substituirá. Se for 1, seta R = 0 e

avança o ponteiro até encontrar uma pagina com R =

0.

Page 52: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Algoritmos de substituição de páginas

Relógio

Page 53: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Algoritmos de substituição de páginas

Algoritmo LRU (least recently used)

Baseia-se na idéia de que uma página utilizada

recentemente pode ser utilizada novamente.

Portanto, páginas que não foram utilizadas

recentemente provavelmente permanecerão não-

utilizadas durante mais tempo.

Assim, ele remove as páginas menos utilizadas

recentemente.

Page 54: Gerenciamento de memória · Gerenciamento de memória Tarefas do gerenciador de memória: Monitorar quais partes da memória estão utilizadas e quais estão disponíveis. Realizar

Algoritmos de substituição de páginas

Algoritmo LRU (least recently used)