gerenciamento de memória · gerenciamento de memória ... para carregar um programa muito grande...

29
Gerenciamento de memória Carlos Eduardo de Carvalho Dantas

Upload: leduong

Post on 08-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Gerenciamento de memória

Carlos Eduardo de Carvalho Dantas

Gerenciamento de memória

Motivos:

1 – Manter a CPU ocupada o máximo de tempo para não existir gargalos na busca de dados na memória;

2 – Gerenciar os espaços de endereçamento para que processos executem sem problemas de espaço e acessos indevidos;

Gerenciamento de memória

Gerenciamento sem abstração de memória

MOV register1,1000

Move o conteúdo da posição de memória 1000 para o registrador, não abstraindo o endereço real da memória

Gerenciamento de memória

Gerenciamento sem abstração de memória

Gerenciamento de memória

Gerenciamento sem abstração de memória

Gerenciamento de memória

Solução: Registradores base e registradores limite.

Gerenciamento de memória

Problemas: necessidade de efetuar a adição toda vez que

precisar acessar uma posição de memória; Só funciona se todos os processos couberem

na memória; Não trabalha com a possibilidade de aumento

do espaço de endereçamento dos processos

Gerenciamento de memória

Alternativas:

1 – Troca de Processos (swapping); 2 – Memória virtual

Gerenciamento de memória

Troca de Processos

Processos inteiros são colocados ou retirados da memória mediante necessidade;

Se a área do processo precisar crescer, ele pode ser movido para outro local ou utilizar espaços adjacentes caso estejam livres.

Gerenciamento de memória

Troca de Processos

Processos inteiros são colocados ou retirados da memória mediante necessidade;

Se a área do processo precisar crescer, ele pode ser movido para outro local ou utilizar espaços adjacentes caso estejam livres.

Gerenciamento de memória

Troca de Processos

Gerenciamento de memória

Troca de Processos Processos quando alocados, possuem área

para crescimento, para evitar possíveis realocações

Gerenciamento de memória

Troca de Processos – Gerenciando a área livre

Existem 2 alternativas: 1 – Mapa de bits; 2 – Lista encadeada.

Gerenciamento de memória

Mapa de bits – cada porção de dados conterá 1 bit para mapear se está ou não sendo utilizado por algum processo

Gerenciamento de memória

Mapa de bits – Problema: busca de espaço disponível extremamente lenta.

Gerenciamento de memória

Lista encadeada: Mantém uma lista de segmentos alocados e disponíveis

Gerenciamento de memória

Lista encadeada: como ficará a alocação de memória antes e depois que o processo B termine.

Gerenciamento de memória

Lista encadeada: Na imagem do slide anterior, a ordenação é pelo endereço, porém, podemos buscar os segmentos livres por:

First fit; Next fit; Best fit; Worst fit; Quick fit

Gerenciamento de memória

Como gerenciar Bloatware? (termo utilizado para definir softwares que usam quantidades excessivas de memória)

Há 30 anos atrás dezenas de usuários compartilhavam 4 mb de memória, hoje a microsoft recomenda no mínimo 1 gb de memória para 1 usuário apenas;

Há a necessidade de se executar programas grandes demais para SE ENCAIXAREM na memória;

Gerenciamento de memória

Há a necessidade de haver sistemas que possam dar suporte a múltiplos programas em execução simultânea que, coletivamente, excedam a memória;

Para carregar um programa muito grande na memória, a troca de processos certamente levará um tempo considerável para executar esta tarefa

Gerenciamento de memória

Memória Virtual – A solução com swapping apenas funciona bem caso os processos sejam relativamente pequenos para sempre achar um espaço disponível para todo o processo.

Hoje existe uma demanda para executar processos que sejam grandes demais para se encaixarem na memóriaencaixarem na memória

Gerenciamento de memória

Paginação – divisão de toda a memória RAM em diversos blocos chamados de páginas;

Cada página é uma série contígua de endereços;

As páginas são mapeadas na memória física, mas nem todas precisam estar nela para executar o programa;

Gerenciamento de memória

Em memória virtual, cada programa tem seu próprio espaço de endereçamento, que é dividido por blocos chamados páginas;

Cada página é uma série contígua de endereços;

Quando o programa referencia uma parte do espaço de endereçamento que está na memória física, o hardware executa o mapeamento necessário dinamicamente (MMU – memory management unit)

Gerenciamento de memória

Quando o programa referencia uma parte de seu espaço de endereçamento que não está não está na memória física,na memória física, o SO é alertado para obter a parte que falta e reexecutar a instrução que falhou (page fault)

Com paginação, os endereços referenciados pelo programa são chamados de endereços virtuais gerenciados pela MMU.

Gerenciamento de memória

Gerenciamento de memória

Gerenciamento de memória

Na figura anterior, O computador possui 32 kb de memória física, porém pode gerar endereços virtuais de 16 bits;

Embora seja possível escrever programas de 64 kb, eles não podem ser totalmente carregados na memória;

As unidades correspondentes na memória física são chamadas de molduras de página (page frames)

Gerenciamento de memória

Na figura anterior, cada página possui 4 kb podendo ter 16 páginas virtuais e 8 molduras;

As transferências entre memória e disco são SEMPRE em páginas completas;

Quando um programa tentar acessar o endereço 0, usando MOV REG, 0, o endereço virtual 0 é enviado à MMU, que devolverá a moldura de página 2 (de 8192 a 12287);

A memória desconhece a MMU e apenas enxerga a solicitação de leitura ou escrita no endereço 8192

Gerenciamento de memória