Instituto de Informática
-U
FRGS
Sistemas Operacionais
Gerência de Memória
Alocação Particionada
Aula 18
Instituto d e Informática -UFRGS Sistemas Operacionais 2 A. C arissimi -11-no v.-1 9Introdução
Memória é um recurso limitado
Um programa (processo) para ser executado deve estar na memória
Necessidades do gerenciamento de memória
Racionalizar a ocupação da memória (alocação de memória) Determinação das áreas livres e ocupadas
A alocação de memória depende:
Amarração de endereços é estática ou dinâmica? Necessidade do espaço físico ser contíguo ou não? Processo caber ou não na memória?
Grau de multiprogramação efetiva* desejada
* Número de processos no escalonador de curto prazo!
Instituto
d
e Informática
-UFRGS
Mecanismos para alocação de memória
Estratégias para alocar memória para processos
Supor, por enquanto, que o espaço lógico é sempre menor que o
espaço físico (processo cabe na memória)
A memória virtual retirará esse restrição (chegaremos lá!!)
Sistemas Operacionais 3 A. C arissimi -11-no v.-1 9 Paginação Segmentação
Segmentação com paginação Simples Particionada Contígua Não contígua Alocação Estática Dinâmica Instituto d e Informática -UFRGS
Dimensionando espaço para um processo
Processo possui quatro segmentos (regiões)
Código, dados, pilha e heap (monte)
Os segmentos de código e dados são dimensionados com base em
informações do próprio executável
Segmento de pilha e heap são pré-reservados
Para a pilha é feita uma pré-alocação dentro da área pré-reservada O heap é a “sobra” entre o tamanho total de processo menos a área de
código, dados e pilha.
Sistemas Operacionais 4 A. C arissimi -11-no v.-1 9 código dados Pilha 0 n-1 heap n bytes Do arquivo executável
Instituto d e Informática -UFRGS Sistemas Operacionais 5 A. C arissimi -11-no v.-1 9
Alocação contígua simples
Sistema primitivo
Memória principal é dividida em duas partições:
Sistema operacional (parte baixa ou alta da memória) Processo do usuário (restante da memória)
Usuário tem controle total da memória podendo
inclusive acessar a área do sistema operacional
e.g. DOS (não confiável)
Evolução:
Inserir proteção através de mecanismos de hardware Registradores de base e de limite
Memory Management Unit (MMU)
SisOp 0 N-1 RAM Monotarefa (MS-DOS) Contígua simples (uma partição) Instituto d e Informática -UFRGS Sistemas Operacionais 6 A. C arissimi -11-no v.-1 9
Alocação contígua particionada
Extensão natural do sistema de duas partições
Definição de múltiplas partições
Necessidade imposta pela multiprogramação
Filosofia:
Dividir a memória em blocos (partições)
Cada partição pode receber um processo (programa em execução)
Duas formas básicas:
Alocação contígua com partições fixa (estática)
Podem ser com o mesmo tamanho ou diferentes tamanho Alocação contígua com partições variáveis (dinâmica)
Alocação é por demanda
Instituto
de Informática
-UFRGS
Alocação contigua particionada fixa (estática)
A. C arissimi -11-no v.-1 9 SisOp 0 N-1 RAM p M SisOp 0 N-1 RAM pi M pk Multitarefa n partições = M/p Multitarefa x partições
1 tarefa (processo) por partição
...
...
Tamanhos idênticos Tamanhos diferentes Instituto d e Informática -UFRGS A. C arissimi -11-no v.-1 9Questões sobre alocação contígua particionada fixa
Processos podem ser carregados em qualquer partição?
Depende se código é absoluto ou relocável e do tipo de amarração
Número de processos que podem estar em execução ao mesmo tempo
Grau de multiprogramação efetiva é limitado pelo número de partições
Programa é maior que o tamanho da partição
Não executa a menos que se empregue um esquema de overlay
A
B C
D E
Interpretação:
- Módulo A e B devem estar em memória OU - Módulo A e C devem estar em memória
Instituto
d
e Informática
-UFRGS
Gerenciamento da memória com partições estáticas
Necessário
Definir quais partições estão livres e ocupadas (ex. bitmap)
Possíveis estratégias para alocação de processos
Fila por partição
Processos vão para uma determinada partição (desde que caibam nela) Efeito colateral: partições com filas de espera enquanto há outras vazias Fila única para todas as partições
Processo pode ir para qualquer partição desde que caiba nessa partição
Sistemas Operacionais 9 A. C arissimi -11-no v.-1 9 Instituto d e Informática -UFRGS
Problemas com alocação particionada estática
Maior processo possível é limitado pelo tamanho da maior partição
Unidade de alocação é a partição
Processo menor que a partição leva a desperdício Fragmentação interna Sistemas Operacionais 10 A. C arissimi -11-no v.-1 9
Alocação por demanda, isso é, variável !!
Solução:
SisOp0
N-1 RAM
Quantidade de partições limita grau de
multiprogramação efetiva
Processos no escalonador de curto prazo devem estar na memória Fragmentação interna p p p Instituto d e Informática -UFRGS
Alocação contígua particionada dinâmica (variável)
Não há pré-particionamento da memória
Aloca por demanda, libera quando processo termina Soluciona o problema de fragmentação interna
Sistemas Operacionais 11 A. C arissimi -11-no v.-1 9 SisOp 0 N-1 RAM SisOp 0 N-1 RAM SisOp 0 N-1 RAM SisOp 0 N-1 RAM livre livre livre livre livre Instituto de Informática -UFRGS
Problemas com partição variável
Necessidade de gerenciar as “lacunas” livres e ocupadas
Lista de lacunas livres (início e tamanho) Critério de escolha de lacunas livres
Best fit: escolher lacuna que minimiza a sobra Worst fit: escolher lacuna que maxima a sobra
First fit: escolher a primeira lacuna que o processo cabe Circular fit: variação do first-fit (inicia pesquisa de onde parou)
Desperdício de memória (geração de fragmentos)
Memória livre não aproveitável entre as partições Fragmentação externa Sistemas Operacionais 12 A. C arissimi -11-no v.-1 9 SisOp 0 N-1 RAM livre livre livre livre
Instituto d e Informática -UFRGS
Compactação e concatenação
Problema fundamental:
Não haver memória livre contígua para receber um processo
Compactação e concatenação
Mover as áreas contíguas para ficarem próximas (compactação) e uni-las para formar uma única partição contigua livre (concatenação)
Sistemas Operacionais 13 A. C arissimi -11-no v.-1 9 SisOp 0 N-1 livre livre livre livre SisOp 0 N-1 livre livre livre livre SisOp 0 N-1 livre Novo problema: Ajuste de endereços Compactação Concatenação Memória lógica versus memória física Instituto d e Informática -UFRGS
Carga de programa em memória
Independente do tipo de partição (fixa ou dinâmica), há o problema
de onde carregar o programa
Depende se o código e relocável ou absoluto e da existência de amarração dinâmica.
Código executável relocável
Programa pode ser carregado em qualquer partição
Código executável absoluto
Opção I: carregado apenas no local para onde foi gerado (end. de ligação) Opção II: com amarração dinâmica, pode ser carregado e qualquer local
Sistemas Operacionais 14 A. C arissimi -11-no v.-1 9 Instituto d e Informática -UFRGS
Aumento do grau de multiprogramação
Quantidade de processos que disputam a atenção da CPU
Limitado pela quantidade de memória RAM disponível e pelo tamanho dos processos e/ou partições
Multiprogramação efetiva:
Quantidade de processos que estão no escalonador de curto prazo
Como aumentar o grau de multiprogramação?
Usando o disco como um “expansor” de memória Área de swap
Memória disponível é RAM + área de swap
A. C arissimi -11-no v.-1 9 Instituto d e Informática -UFRGS A. C arissimi -11-no v.-1 9
Swapping
Obtenção de área de memória livre através do armazenamento
temporário de um processo em disco (área de swap)
Candidatos potenciais são aqueles em estado bloqueado ou que já executaram demasiadamente no escalonador de curto prazo
Operação de swapping é sobreposta ao processamento
E/S realizada através de DMA
Procedimentos de swap-in e swap-out
Realizado por um processo especial (swapper deamon)
Otimizações:
Copiar para o disco apenas as áreas que foram modificadas (dados e pilha) Partição específica para o swap
Instituto d e Informática -UFRGS
Área de swap
Forma de aumentar o grau de multiprogramação
Rodízio de processos entre memória e disco)
Restrições para swap-in
O processo NÃO pode ser carregado em local diferente de sua primeira carga, pois em um processo não há informação de relocação
Solução: código absoluto e e amarração em tempo de execução por
hardware (dinâmica) Sistemas Operacionais 17 A. C arissimi -11-no v.-1 9 Pi Pk swap-out swap-in
Escalonador de médio prazo é quem decide sobre os processos “vítimas” para irem ao disco
Instituto d e Informática -UFRGS Sistemas Operacionais 18 A. C arissimi -11-no v.-1 9
Partições fixas e amarração
Com código absoluto sem amarração dinâmica
Um processo só pode ser carregado em uma determinada partição Pode haver disputa por uma partição mesmo tendo outras livres
Processo é mantido no escalonador de longo prazo (termo) Empregar swapping (escalonamento de médio prazo)
Com código absoluto com amarração dinâmica
Processo pode ser carregado em qualquer partição de maior ou igual tamanho Se todas as partições estão ocupadas, duas soluções:
Processo é mantido no escalonador de longo prazo Empregar swapping (escalonamento a médio prazo)
Código realocável após carregado apresenta mesmos problemas de
um código absoluto sem amarração dinâmica
Instituto
d
e Informática
-UFRGS
Problema: alocação de memória
A criação de um processo implica alocação de memória
Como dimensionar o tamanho do processo? Onde alocar?
Duas estratégias para alocação
Reservar um tamanho prefixado
Erros de dimensionamento: desperdício versus erros de execução Espaço lógico <= espaço físico
Consumir de memória por demanda até um limite (Memória virtual) Espaço lógico > espaço físico
Sistemas Operacionais 19 A. C arissimi -11-no v.-1 9 Instituto d e Informática -UFRGS
Um pouco mais sobre alocação contígua e gerência...
Executável fornece informações para áreas de código e dados
A área para a pilha e heap é definida com um critério e subdivididas
Um tamanho é pré-definido e préalocado Uma porção é pré-reservada para pilha
Gerência é na base LIFO sendo alocado espaço suficiente para endereço de retorno, argumentos da função, variáveis locais (stack frame)
O restante é para o heap
Gerenciado com técnicas similares a alocação particionada dinâmica
Best-fit, worst-fit, first-fit, circular fit e outros mais elaborados
Necessário alocar áreas para estruturas do próprio sistema
operacional
Alocadores: sistema buddy, slab, Lazy buddy, McKusick-Karels
Sistemas Operacionais 20 A. C arissimi -11-no v.-1 9
Instituto d e Informática -UFRGS Sistemas Operacionais 21 A. C arissimi -11-no v.-1 9
Sistema buddy
Compromisso entre partição fixa e partição variável
Considera um segmento de memória
Memória é dividida em um certo número de blocos de espaços livre
Tamanho em potência de 2
Um bloco de tamanho 2 i é dividido em 2 blocos de tamanho 2 i-1(buddies)
256 k 128 k 64 k 32 k Instituto d e Informática -UFRGS Sistemas Operacionais 22 A. C arissimi -11-no v.-1 9
Sistema buddy: vantagens e desvantagens
Vantagem:
Rapidez na alocação
Capacidade de fusionar buddies
Desvantagem:
“Arredondar” para a próxima potência de 2 leva a fragmentação interna
Custo “gerencial”
Necessário manter a lista de blocos livres e ocupados, concatenar buddies etc
Exemplo de emprego:
Operações de E/S transferem diretamente dados de periféricos para memória via DMA, curto-circuitando a gerência de memória
Solução é alocar contiguamente uma área de memória para E/S
Instituto d e Informática -UFRGS
Alocação slab
Baseado em uma hierarquia de componentes
Objeto – cache – slab
Princípio:
Objetos são estruturas genéricas próprias do núcleo (PCBs, IOBlock, FCB, etc) Uma cache para cada “classe” de objetos
Slab: uma ou mais páginas contíguas
A. C arissimi -11-no v.-1 9 RAM slab1 slabn Cache1 Cachen Pré-alocados!!! Instituto d e Informática -UFRGS A. C arissimi -11-no v.-1 9
Leituras complementares
A. Tanenbaum. Sistemas Operacionais Modernos (3
aedição),
Pearson Brasil, 2010.
Capítulo 3: seção 3.2.3
A. Silberchatz, P. Galvin; Sistemas Operacionais. (7
aedição).
Campus, 2008.
Capítulo 8 (seção 8.3)