gerencia de memoria
41 pág.

gerencia de memoria


DisciplinaSistemas Operacionais I8.353 materiais171.761 seguidores
Pré-visualização6 páginas
9/13/11 
1 
1 
Gerência de Memória 
Roteiro: 
1 - Introdução 
Realocação e Proteção 
2 - Gerência básica de Memória 
Registradores base e limite 
MMU e troca de contexto 
Multiprogramação c/ partições fixas 
3 - Swapping 
4 - Gerência de Memória no Minix 
5 - Paginação (Memória Virtual)\u200f 
Algoritmos para troca de páginas 
Questões de Projeto e Implementação 
Tabelas de páginas invertidas 
6 - Segmentação 
2 
Memória Principal 
Tipos básicos: 
DRAM: Dynamic random access memory 
SRAM: Static random access memory chips (não-voláteis) 
EPROM: Erasable programmable read-only memory 
PROM: apenas escritos 1x 
FLASH memory chips offer extremely fast access times, 
low power consumption, do not need a constant power supply 
DRAM Architecture 
9/13/11 
2 
3 
Memória Principal 
Arquitetura do NexusOne (Google) com memória 
volátil e não volátil. 
Arquitetura Multi-core com vários controladores 
IBM Power Architecture (e.g. PowerPC) 
Hierarquia de Memória 
O núcleo precisa gerenciar a transferência transparente de dados de um nível 
para outro 
4 
9/13/11 
3 
5 
Gerente de Memória: Tarefas básicas 
Gerente de Memória opera a hierarquia de memória: 
\u2013\u2008 Quais partes da memória estão em uso, e quais não? 
\u2013\u2008 Alocar memória para novos processos 
\u2013\u2008 Desalocar memória quando processo termina 
\u2013\u2008 Garantir proteção/isolamento entre processos 
\u2013\u2008 Setar os parâmetros para a relocação de endereços de memória 
\u2013\u2008 Quando memória está cheia (sempre!), fazer o swapping transparente 
entre memória principal e disco 
Essas tarefas dependem: 
\uf0d8\u2008 Do tipo de sistema (p.ex. se suporta multiprogramação) 
\uf0d8\u2008 Do tamanho da memória e suas características de acesso (latência, 
acesso concorrente, etc.) 
\uf0d8\u2008 Das características do Controlador da memória (se possui MMU) 
\uf0d8\u2008 Do tamanho e quantidade de caches disponíveis 
6 
GM para Monoprogramação 
(sem swapping ou paginação) \u200f 
Para S.Os com único usuário e dispositivos simples 
(embarcados). Execuçaõ de 1 programa por vez. 
\u2022\u2008 Ciclo básico: Comando usuário \uf0e8carregamento\uf0e8 execução 
\u2022\u2008 Baixa utilização de CPU 
Formas (ultrapassadas) de organizar a memória 
9/13/11 
4 
7 
Efeito da Multiprogramação 
Utilização da CPU como função do grau de multiprogramação (= 
número de processos na memória)\u200f 
Degree of multiprogramming 
8 
Realocação e Proteção 
São dois problemas introduzidos pela Multiprogramação: 
\u2022\u2008 Realocação: não se sabe de antemão em qual região de memória o 
processo vai ser executado 
\u2013\u2008 Endereço de variáveis e do código não podem ser absolutos 
\u2022\u2008 Proteção: evitar que um processo acesse uma região usada por 
outro processo 
Solução 1: modificar endereços quando processo é carregado (o 
ligador/carregador precisa ter um bit map sobre quais endereços do 
programa precisam ser atualizados)\u200f 
\u2013\u2008 Como endereços são absolutos, seria possível acessar qualquer endereço de 
memória, e um programa pode construir dinamicamente instruções 
Solução melhor: Mapeamento para a memória física ocorre em tempo 
de execução e é relativa a dois registradores: base e limite 
\u2013\u2008 Qualquer acesso além do limite é considerado erro e processo é abortado 
9/13/11 
5 
9 
Registradores Base e Limite 
Para cada processo, existe um par, base register (BR), e 
limit register (LR), que determinam a região de 
memória usada pelo processo 
\u2022\u2008 A cada troca de contexto, o (BR/LR) precisa ser trocado 
CPU 
BR 
RAM 
End. lógico End. Físico 
\u2264 LR? 
Sim 
Não 
+ 
Falha de acesso 
10 
Técnicas baseadas em realocação 
Organização da memória: 
\u2022\u2008 com partições fixas (BR e LR só podem assumir 
determinados valores)\u200f 
 Fila por tamanho de partição vs. Fila única 
\u2022\u2008 com divisão/agrupamento de partições 
 Fila única 
 partições tem 2x palavras (p.ex.: 210 \u2194 2 partições de 29) \u200f 
\u2022\u2008 Memória RAM sem partições (BR e LR assumem qualquer 
valor)\u200f 
Outra questão: 
a)\u2008 Processos/jobs mantém a mesma região durante toda a sua 
execução ? OU 
b)\u2008 Processos podem ser retirados da memória, e posteriromente 
voltar à memória em outra região/partição (swapping)? 
9/13/11 
6 
Organização de Memória 
(a) Partições fixas (b) Partições são 2i (c) Partições variáveis 
12 
Multiprogramação com partições fixas 
Fila única para todas as partições: (exemplo IBM OS/360) 
(+) simples de implementar 
Filas de entrada separadas: 
(-) processos menores não podem ser colocados em partições grandes 
disponíveis. 
Escolha da partição com Fila única: 
\u2013\u2008 Seleção \u201cFirst-Fit\u201d, \u201cBest Fit\u201d, \u201cWorst Fit\u201d 
9/13/11 
7 
13 
Swapping 
Em sistemas com compartilhamento de tempo (timesharing) 
memória principal pode não ser suficiente para todos os 
processos (e.g. muitos processos interativos de muitos 
usuários)\u200f 
\u2022\u2008 Ideia básica: usar espaço em disco como extensão da 
memória RAM, e colocar lá os processos enquanto estão 
bloqueados, carregando-os de volta para a memória assim 
que são desbloqueados 
Duas alternativas: 
\u2022\u2008 Copiar a imagem inteira (swapping) 
\u2022\u2008 Permitir que processo fique parcialmente em memória, e 
parcialmente em disco (paginação) \uf0e8 Memória Virtual 
14 
Swapping 
Fig.: Sequência de alocação de memória usando swapping para 4 processos. 
Pode acarretar: 
\u2013\u2008 Buracos de memória não utilizada de tamanho qualquer (fragmentação de 
memória) 
\u2013\u2008 Um mesmo processo pode ocupar diferentes partições ao longo de sua 
execução 
Quando um processo é bloqueado (espera por E/S) ele pode ser swapped 
out, e depois swapped in para memória principal. 
Permite manter um número maior de processos ativos, aumentando a 
utilização da CPU 
9/13/11 
8 
15 
Swapping 
\u2022\u2008 Compactação de memória é muito cara 
\u2013\u2008 da ordem de segundos para alguns MBs de RAM 
Principal problema do swapping com partições de tamanho variável: 
\u2022\u2008 Manter a informação sobre espaços não utilizados (livres) 
\u2022\u2008 Evitar uma fragmentação externa da memória (= muitos espaços 
pequenos não utilizados)\u200f 
p1 
p3 
p4 
OS 
16 
Swapping 
Como lidar com processos que crescem (em demanda de 
memória)? 
\u2022\u2008 Tentar alocar uma partição para o processo que é vizinha de uma partição não 
usada (nem sempre é possível) 
\u2022\u2008 Alocar uma partição conjunta para a pilha e o heap, e faze-los crescer em 
sentidos opostos. 
\u2022\u2008 Se processo usa todo espaço de memória disponível, fazer um swap out, e um 
swap in em uma partição maior (mas, se disco de swap está cheio, processo 
precisa ser terminado) \u200f 
9/13/11 
9 
17 
Gerenciamento do espaço de memória livre 
Fig: Representação da ocupação da memória com 5 processos e 3 lacunas em Bit 
Map (b) ou Lista encadeada (c) 
Idéia: dividir a memória em unidades de alocação de n bytes1 e 
representar a ocupação (livre/ocupado) de lotes de unidades 
usando um bit map ou uma lista encadeada 
Bit Map: armazenamento compacto e simples, mas busca por 
determinado tamanho de lote livre pode envolver análise de 
várias palavras 
Lista ligada : cada nó contém o endereço inicial e o tamanho de 
uma partição ocupada ou livre (1) Um Minix \u2018Click\u2019 = 1KB 
18 
Gerenciamento de Memória com Listas 
Fig: Quando X é swapped out: quatro combinações de nós na lista 
\u2022\u2008 Quando o processo é swapped out, a lacuna correspondente precisa ser 
combinada com espaços vizinhos livres. 
\u2022\u2008 Quando processo é swapped in, percorre-se a lista buscando um espaço 
livre suficientemente grande (lista geralmente ordenada por endereços de 
memória)\u200f 
\uf0e8#
\uf0e8#
\uf0e8#
\uf0e8#
9/13/11 
10 
19 
Gerenciamento de Memória com Listas 
Possíveis algoritmos de seleção de de espaço livre: 
\u2022\u2008 First Fit \u2013 percorre a lista e aloca o primeiro espaço encontrado 
\u2022\u2008 Next Fit \u2013 como first Fit, só que a partir da posição na lista onde foi 
feita a alocação anterior 
\u2022\u2008 Best Fit \u2013 percorre toda a lista e aloca o menor possível espaço \uf0e8 
pode deixar fragmentos muito pequenos para alocação para outros 
processos 
\u2022\u2008 Worst Fit \u2013 percorre toda a lista e aloca o maior possível espaço 
Em muitos sistemas, o overhead adicional exigido pelos Best/Worst Fit 
não valem a pena para obter