gerenciamento de memória · gerenciamento de memória tarefas do gerenciador de memória:...
TRANSCRIPT
Gerenciamento de memória
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.
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.
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
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.
Gerenciamento sem paginação
Três maneiras simples de organizar memória com um sistema operacional e com processos.
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.
Gerenciamento de memória com
partições fixas – fila única
Partições fixas de memória com fila única.
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 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.
Gerenciamento de memória
Alocação contígua particionada dinâmica
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
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 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
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
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
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 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)
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
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.
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).
Paginação
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.
Paginação
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.
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
Algoritmos de substituição de páginas
Algoritmo FIFO
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.
Algoritmos de substituição de páginas
Relógio
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.
Algoritmos de substituição de páginas
Algoritmo LRU (least recently used)