Sistemas Operacionais
Gerenciamento de MemóriaProf. Galvez
Considerações Gerais
Multiprogramação implica em manter-se vários processos em memória
Memória necessita ser alocada de forma eficiente para permitir o máximo
possível de processos
Existem diferentes técnicas para gerência de memória
Dependem do hardware do processador
Um sistema de memória possui pelo menos:
Memória principal: acessada pela CPU
Memória secundária: discos
Memória Cache (alguns possuem...)
Programas são armazenados em disco:
Executar um programa se traduz em transferi-lo da
memória secundária à memória principal
Qualquer sistema operacional tem gerência de memória
Monotarefa: gerência é simples
Multitarefa: complexa
Transformação de programa em processo
Programa
Compilador
objeto
Ligador
...
executável
Carregador
RAMBiblioteca
estáticaFase de compilação
Fase de ligação
Fase de carga
Hierarquia de Memória
Na década de 50 e 60 a memória principal era muito cara.
A hierarquia de memória contém níveis caracterizados pela velocidade e custo da memória em cada nível.
Memória Lógica e Física
Memória Lógica
É aquela que o processo “enxerga”, aquela que o processo é capaz de endereçar e acessar usando as suas instruções. Um programa em C manipula variáveis tipo ponteiros (pointer), as quais contêm endereços lógicos.
Endereços lógicos são aqueles manipulados por um processo.
Memória Lógica e Física
Memória Física
Implementada pelos circuitos integrados de memória, pela eletrônica do computador
Endereços físicos são aqueles que correspondem a uma posição real de memória
Gerência de Memória
Unidade de Gerência de Memória (MMU - Memory Management Unit)
É o componente do hardware responsável por prover os mecanismos básicos que serão usados pelo SO para gerenciar a memória.
Mapeia os endereços lógicos gerados´pelos processos nos correspondentes endereços físicos que serão enviados para a memória.
PROCESSADOREnd.lógico
MMU End.físico
Memória
Exemplo de MMU
Processador
Registrador LimiteInferior
Registrador LimiteSuperior
Memória< >
Interrupção(Endereço Ilegal)
Interrupção(Endereço Ilegal)
123 123
100 799
sim
não não
sim
Os endereços lógicos e físicos possuem valores idênticos (123)
O espaço de endereçamento lógico de um processo é limitado pelos
Registradores de Limites ( Inferior [100] e Superior [799] )
Qualquer endereço lógico fora desse intervalo é considerado ilegal.
Exemplo de MMU
O endereço lógico é comparado com o um limite superior [500]. Caso
seja menor ou igual, então é somado ao valor do registrador de base,
resultando o endereço físico quevai para a memória.
Pode gerar endereços entre zero e 200. Valor fora desse limite são
ilegais.
Processador
Registrador de Limite Registrador de Base
Memória> +
Interrupção(Endereço Ilegal)
123 623
200 500
sim
não
Partições Fixas
Forma mais simples de gerência de memória para multiprogramação. A memória é primeiramente dividida em uma parte para uso do SO e uma parte para uso dos processos de usuários.
A seguir, a parte dos usuários, é dividida em várias partições de tamanhos diferentes, porém fixos.
Sistema Operacional – 225 M
Processos de Usuários375 M
Memória Física
Sistema Operacional – 225 M
Partição 1 – 200 M
Partição 3 – 50 M
Partição 4 – 25 M
Partição 2 – 100 M
Memória Física
Partições Fixas
Quando um programa deve ser carregado, é escolhida uma partição ainda livre.
Detalhe: a partição deve ter um tamanho igual ou maior que o programa.
Não existindo uma partição livre que seja grande o bastante para conter o programa, ele não poderá ser executado no momento. Deve esperar a liberação de uma partição com tamanho suficiente.
Dois problemas para esse tipo de gerência de memória!!!
8 M
8 M
5 M
8 M
8 MSist. Operacional
Partições Fixas – Fragmentação Interna
Memória perdida dentro da área alocada para um processo
Um processo, não importando quão pequeno seja, ocupa uma partição inteira
Fragmentação interna
Sist. Operacional8 M
12 M
8 M
8 M
6 M
4 M
2 MSoluçãoPaliativa:Partiçõescom tamanhosdiferentes
Partições Fixas – Fragmentação Externa
Memória perdida fora da área ocupada por um processo
1 M
3 M
4 M
8 M
8 MSist. Operacional
LIVRE
3 M
LIVRE
8 M
8 MSist. Operacional
5 M
Criado Processo 5 M
Não Executa!!Porque???LIVRE
4 M
LIVRE1 M
Memória Livre nãoé Contígua
Partições Variáveis
Técnica mais flexível, pois o tamanho da partição é ajustado dinamicamente às necessidades exatas dos processos.
SO mantém uma lista de lacunas (espaços livres da memória física), que será percorrida sempre que um processo for criado.
Será usada uma lacuna maior ou igual ao tamanho do processo.
Se a lacuna for maior, a diferença (tamanho da lacuna – tamanho do processo) será transformada numa nova lacuna.
O processo recebe o tamanho exato que necessita.
Partições Fixas
SO 225 Kbytes
Processo 1174 Kbytes
Processo 298 Kbytes
Processo 323 Kbytes
Lacuna80 Kbytes
Memória Física
Processo 485 Kbytes SO 225 Kbytes
Processo 1174 Kbytes
Processo 485 Kbytes
Processo 323 Kbytes
Lacuna80 Kbytes
Memória Física
Lacuna 13 Kbytes
Lacuna23 Kbytes
Lacuna116 Kbytes
Partições Variáveis – 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
SO
Processo 1 320 K
Processo 3 288 K
64 K
Processo 4 128 K
96 K
Exemplo:
Criação Processo 120K
Partições Variáveis – Fragmentação Externa
Possíveis Soluções
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
Algoritmos para alocação contígua dinâmica
Best fit Utiliza a lacuna que resultar na menor sobra Minimizar tam_processo - tam_bloco Deixar espaços livres os menores possíveis
Worst fitUtiliza a lacuna que resultar na maior sobra Maximizar tam_processo - tam_bloco Deixar espaços livres os maiores possíveis
First fitUtiliza a 1ª lacuna que encontrar com tamanho
suficiente tam_bloco > tam_processo
Circular fit Como first-fit, mas inicia a procura na lacuna seguinte à
última sobra
Algoritmos para alocação contígua dinâmica
Exemplo: Criação de Um Processo de 10 K
20k
40k
30k
A
SisOp
A
C
20k
40k
30k
A
SisOp
A
C
20k
40k
30k
A
SisOp
A
C
Best-fit Worst-fit First-Fit
Swap out
Swap in
Memória
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
Memória secundária suficientemente grande para armazenar cópias de todos os processos de usuários.
Swapping
P2
P1
Swapping
P1
P1Swap out
Swap in
Memória
Um processo maior que a memória.