Gerência de Memória Sistemas Operacionais. Memória Décadade 30 – John Von Neumann Década de...
Transcript of Gerência de Memória Sistemas Operacionais. Memória Décadade 30 – John Von Neumann Década de...
Gerência de Memória
Sistemas Operacionais
Memória
Década de 30 – John Von Neumann
Computador composto por três partes:
Processador, Dispositivos I/O e a Memória
Programa deveria ser armazenado na memória junto com os dados. Capaz de lembrar sequências de comandos previamente fornecidos executando-as fielmente.
Memória
Década de 30 – John Von Neumann
Arquitetura Princeton e Arquitetura Harward
Princeton
• Único barramento para transferência de dados e instruções entre memória e processador
• Predominou pela simplicidade
• Harward
• Dispositivos de memória distintos para armazenamento de dados e programas;
• Dois barramentos ligando o processador aos dispositivos de memória de dados e programas;
• Mais eficiente
• Ambos foram conceitos revolucionários ;• Não existia tecnologia suficiente para construção de
dispositivos que funcionassem como memória; • Processadores evoluíram primeiro.
• 1ª Memória primária foi construída com pequenos núcleos magnetizáveis de ferrite interligados matricialmente por uma delicada fiação de cobre, onde cada núcleo armazenava um único bit.
• processadores são capazes de ler e escrever mais rápido do que os circuitos de memória do mesmo nível tecnológico.
• Wait States: é o tempo de espera por parte do processador até que a memória esteja preparada para ler ou gravar os dados.
Quando se fala em memória, estamos nos referindo aos circuitos que trocam dados diretamente com o processador durante o ciclo de execução de seus comandos mais básicos, ou seja, a memória primária ou armazenamento primário. (RAM, ROM, REGISTRADORES E CACHE)
Os dispositivos de armazenamento secundário, isto é, dispositivos de memória de massa que não devem ser confundidos com a memória básica do computador. (Discos rígidos, CDs, DVds, PenDrive)
Memória
Memória é um termo genérico usado para designar as partes do computador ou dos dispositivos periféricos onde os dados e programas são armazenados. Sem uma memória de onde os processadores podem ler e escrever informações, não haveria nenhum computador digital de programa armazenado.
Memória
• A memória pode ser vista como um array (vetor) de células de armazenamento (palavras ou bytes), cada célula com seu endereço
0 2
1 31
2 4
3 35
4 26
5 124
6 42
7 12
8 42
Memória
• A CPU e os controladores dos dispositivos periféricos podem ler e escrever em posições de memória.
CPU
Memória
Sistema de I/O
Memória
• Considerações:
– Recurso caro e escasso; era ou é?– Preocupação do projetista: SO que não ocupassem muito
espaço de memória; – Programas só executam se estiverem na memória principal;– Necessidade de uso otimizado;– “É um dos fatores mais importantes em um projeto de
S.O.”.
Memória• O objetivo principal de um Sistema Computacional é
executar programas;• Estes programas devem estar localizados na memória
principal;• Memória principal não possui tamanho suficiente;• SO modernos utilizam principalmente dos discos
rígidos como dispositivos secundários de apoio à memória.
• Por isso existe a necessidade do Gerente de Memória.
Gerência de Memória• Algumas funções do Gerente de Memória
– Controlar quais as unidades de memória estão ou não estão em uso, para que sejam alocadas quando necessário;
– Liberar as unidades de memória que foram desocupadas por um processo que finalizou;
– alocação da memória de acordo com as necessidades dos processos
– Tratar do Swapping entre memória principal e memória secundária.
– Transferência temporária de processos residentes na memória principal para memória secundária
Mecanismos para Gerência de Memória
• máquina pura• monitor residente• swapping• partições múltiplas• paginação• segmentação • sistemas combinados
Máquina Pura
• É o esquema mais simples, pois não existe gerência de memória;
• O usuário lida diretamente com o hardware e possui total controle sobre toda a memória;
• Não exige nenhum software ou hardware especiais;• Viável apenas em sistemas dedicados, onde o computador
controla um equipamento específico.
Máquina Pura
• Problemas:– não existe a infra-estrutura do SO (rotinas de E/S, por
exemplo)– não há monitor residente para controlar chamadas de
sistema ou erros
Sistemas MonoprogramadosAlocação Contígua Simples
• Com monoprogramação a gerência de memória fica simples;• O espaço é dividido entre o SO e o processo do usuário que
está sendo executado;
Monoprogramação
• Vantagens:– simplicidade– custo baixo de implementação e uso– flexibilidade
Monitor Residente
• Normalmente, este esquema é usado em sistemas monoprogramados;
• Memória dividida em duas partes:– área do SO– área do usuário
• Registrador limite: contém o primeiro endereço do programa usuário
Monitor Residente
Sistema Operacional
Área para o programa usuário
Área livre
RegistradorLimite
E se o tamanho do programa for maior do que a memória disponível?
Neste caso utiliza-se a técnica conhecida como overlay, o programa é dividido em módulos que são executados independentemente na mesma área de memória
Overlay
Sistema Operacional
Módulo principal
Área livre
Área de Overlay
1 kb
4 kb
3 kb
2 kb
Cadastramento
Impressão
4 kb
Área não utilizada
2 kb
2 kb
Multiprogramação através de Swapping
• É implementada por um SO do tipo monitor residente• O esquema de gerenciamento de memória é estendido para
implementar swapping• O programa que perde a CPU é copiado p/ disco, enquanto o
programa que ganha a CPU é transferido do disco p/ a memória principal
Swapping
Monitor
Espaço doUsuário
reg. limite
U1
U2
Swap-in
Swap-out
Exercício
1)O que é Memória
2)Cite exemplos de memória primária:
3)Cite exemplos de memória secundária:
4)Para a sua execução, em qual memória o programa precisa estar?
5)Quais as funções do Gerente de Memória
6)O que é Swapping?
Gerência de Memória
Memória Lógica - é aquela que o processo enxerga, o processo é capaz de acessar.
Memória Física - é aquela implementada pelos circuitos integrados de memória, pela eletrônica do computador
CPUGerenciador de
Memória MemóriaEndereço lógico
Endereço físico
Partições Múltiplas
• Com multiprogramação, é conveniente ter vários programas na memória ao mesmo tempo para que a CPU seja rapidamente alternada entre eles
• Solução: dividir a memória em partições que podem ser:– Partições Fixas (regiões estáticas)– Partições variáveis (regiões dinâmicas)
Partições Fixas
• A memória é dividida em partições que não são alteradas durante a execução do sistema.
• Quando um processo é criado, ele é colocado em uma fila à espera que uma partição de tamanho suficiente se torne disponível
Partições Fixas
• Para definir a partição onde o programa vai ser colocado, existem duas opções:– Montar uma fila individual para cada partição– Montar uma fila única para todas as partições
Partições Fixas
Fragmentação
• São perdas (desperdício) de memória:– fragmentação interna: memória é perdida dentro da
partição alocada (é um desperdício de espaço dentro da partição usada pelo processo)
– fragmentação externa: ocorre quando existe espaço disponível mas este é pequeno demais para os processos que estão à espera (perda de espaço fora das partições alocadas)
Fragmentação
Partições Fixas
• O controle de partições fixas é conceitualmente simples. Necessita levar em conta:
• tamanhos das partições de memória• algoritmo para gerenciar a lista de processos em espera
Partições Fixas
• Exemplo: memória de 256K– espaço do SO: 64K– espaço para processos pequenos: 16K– espaço para processos médios: 48K– espaço para processos grandes: 128K
Partições Fixas
• O maior problema das partições fixas é determinar a melhor divisão da memória;
• A solução é permitir que o tamanho das partições varie ao longo do tempo.
Partições Variáveis
Partições Variáveis
• Os tamanhos das partições variam de acordo com a necessidade
• Tanto o tamanho quanto o número de partições variam dinamicamente
• Elimina a fragmentação interna• Mais difícil de implementar
Partições Variáveis
• O SO mantém uma lista indicando quais partes da memória estão disponíveis e quais estão ocupadas.
• As áreas disponíveis são denominadas lacunas (holes)• Quando um processo chega para ser executado, a lista
de lacunas é consultada e é escolhida uma lacuna de tamanho suficiente
Partições Variáveis
monitor
Job 1
0
40K
100K
Job 2
200KJob 3
230K
256K
monitor
Job 1
0
40K
100K
200KJob 3
230K
256K
monitor
Job 1
0
40K
100K
200KJob 3
230K
256K
Job 4
170K
monitor0
40K
100K
200KJob 3
230K
256K
Job 4
170K
monitor0
40K
100K
200KJob 3
230K
256K
Job 4
170K
Job 5
90K
job 2 termina
aloca job 4
job 1 termina aloca job 5
JOB 1 2 3 4 5
Memória 60K 100K 30K 70K 50K
Tempo 10 5 20 8 15
Partições Variáveis - Características
• Vai existir um conjunto de áreas livres (lacunas) espalhadas pela memória;
• Para executar um programa, o conjunto é pesquisado à procura de uma área maior ou igual à necessidade ;
• Se a área é maior, a parte restante vai continuar livre;• Quando um processo termina, a área é liberada. Se a área é
adjacente a outra área livre, as duas áreas são aglutinadas em uma única lacuna;
Partições Variáveis
Existem algoritmos para a escolha de uma área livre.
Partições Variáveis - Algoritmos de Alocação para partições variáveis
• Algoritmos para escolha da área livre (alocação dinâmica da memória):– first-fit: aloca o primeiro espaço livre de tamanho
suficiente– best-fit: aloca o menor espaço livre que seja suficiente.
Produz a menor sobra de espaço– worst-fit: aloca o maior espaço livre. Produz a maior sobra
de espaço livre (a sobra é mais útil que a gerada por best-fit)
Partições Variáveis - Algoritmos de Alocação
• Aula Passada vimos:
– O que é memória;– Programas precisam estar na MP para serem
executados;– Mecanismos para Gerenciar Memória:
• Máquina Pura: Para sistemas dedicados• Monoprogramação: Espaço da MP dividido apenas
entre o SO e o programa de usuário. (Overlay e Swapping)
• Multiprogramação: –Partições Fixas (uma fila para cada partição ou
uma fila pra todas as partições)–Partições Variáveis (Algorítimos First-fit, Best-
fit, Worst-fit)
Partições Variáveis - Compactação
• Para resolver o problema da fragmentação externa, a solução é a compactação da memória:– os programas são deslocados na memória de forma que todo os
espaço livre fique reunido em uma única lacuna– necessidade de relocação dinâmica (pois a relocação estática
impossibilita a compactação)
– No Windows: Aplicativos free disponíveis (Memory Improve Master Free)
– No Linux: Algoritmo de Compressão
Partições Variáveis - Compactação
Mas ainda há problemas
Introdução à Paginação e Segmentação
Problemas com alocação particionada:Fixa:
• Fragmentação Interna e Externa
Variável:• Fragmentação externa, quando a memória livre está
fragmentada em diversos blocos espalhados;– A compactação resolve a situação mas possui um custo
de CPU associado.
O mecanismo de Paginação poderá resolver estes problemas
A Paginação permite que o espaço físico ocupado por um processo seja não contíguo.
Introdução à Paginação e Segmentação
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
• Necessita “mapear” o espaço lógico no espaço físico
Dois métodos básicos:– Paginação– Segmentação
Introdução à Paginação e Segmentação
• Suposição: para ser executado o processo necessita estar completamente carregado em memória
• Solução:– Processo é dividido em páginas (blocos de processos);– MP é dividida em quadros de mesmo tamanho
Paginação
A memória física é dividida em um número de partições de mesmo tamanho, denominadas páginas físicas, quadros ou frames
A memória lógica é dividida em partições do mesmo tamanho, denominadas páginas lógicas (ou, simplesmente, páginas)
Cada página lógica é carregada em um frame quando o processo é carregado na memória principal
Nessa ocasião, uma tabela de páginas é criadaPermite que o espaço físico ocupado por um processo seja
não contíguo
IC - UFF
Paginação
Exemplo: número de páginas/processo
5D
4C
3B
4A
Processos A, B, C estão prontos
C4
C3
C2
C1
B3
B2
B1
A4
A3
A2
A1
Páginas Lógicas
Páginas Físicas ou Frames
Paginação
página 0
página 1
página 2
página 3
1 0
4 1
3 2
6 3
página 0
página 2
página 1
página 3
0
1
2
3
4
5
6
memória lógica de
um processo
tabela de páginas
memória física da máquina
IC - UFF
Paginação
C4
C3
C2
C1
A4
A3
A2
A1
B termina D é submetido
D4
D5
C1
C2
C3
C4
A1
A2
A3
A4
D3
D2
D1
Paginação
Esquema de Tradução de Endereços
Endereços gerados pela CPU são divididos em:
• Nr de páginas(p): usado como um índice em uma tabela de páginas, a qual contém o endereço base de cada página na memória física
• Deslocamento de página(d): combinado com o endereço base para definir o endereço na memória física que será enviado para a memória.
Paginação
• SO mantém cópia (apontador) das tabelas de páginas de cada processo
• Cada descritor de processo contém o endereço de sua respectiva tabela de páginas.
• A UCP possui um registrador que aponta para a tabela de páginas atual
• Para acessar um dado na memória são necessários dois acessos: um de mapeamento (acesso à tabela) e outro para acessar o dado
Exercício
1) O que é Memória lógica e Memória Física:2) Explique as vantagens e desvantagens da alocação Fixa e
Variável3) Explique: Fragmentação Interna e Externa4) Qual seria uma solução para resolver a fragmentação externa?
Paginação
• não existe fragmentação externa• existe fragmentação interna (Ex: um programa que
ocupe 201kb, o tamanho de página é de 4 kb, serão alocadas 51 páginas resultando uma fragmentação interna)
• A fragmentação ocorre apenas na última página usada pelo programa.
• A fragmentação é consequência do tamanho da página
• páginas pequenas evitam o problema de fragmentação
• a literatura indica o uso de páginas pequenas
Segmentação
• A segmentação é uma forma de gerência de memória que suporta a visão do usuário.
• Com segmentação, o espaço de endereçamento lógico é uma coleção de segmentos.
• Cada posição da memória lógica é especificada por um segmento e um deslocamento.
Segmentação
• Para facilitar a implementação, os segmentos não recebem nomes, mas sim números.
• Os compiladores automaticamente criam segmentos para refletir a organização do programa.
• No momento que o programa é carregado, cada um recebe um número de segmento específico.
Segmentação
Simplificando
• Um programa é dividido logicamente em subrotinas e estruturas de dados, que são alocadas em segmentos.
subrotina
função
Programa Principal
pilha
Tabela de Símbolos
Espaço de Endereçamento Lógico
Segmentação
Segmentação
Segmento 0
subrotina segmento 0
função segmento 1
Programa Principal
segmento 2
pilha segmento 3
Tabela de Símbolos
segmento 4
Espaço de Endereçamento Lógico
base limite 0 1400 1000 1 6300 400 2 4300 400 3 3200 1100 4 4700 1000 Tabela de
segmentos
1400
2400
4300
5700
Segmento 4
6300
6700
Segmento 2
4700
Segmento 3
3200
Segmento 1
Memória Física
Segmentação
• Mapeamento é muito semelhante ao de paginação. Os segmentos são mapeados através de tabelas de mapeamento de segmentos (TMS)
• Endereços são compostos pelo número do segmento virtual (NSV) e por deslocamento
• Endereço físico é obtido, então, combinando-se o endereço do segmento, localizado na TMS, com o deslocamento, contido no endereço virtual.
Segmentação
• Uma vantagem da segmentação em relação à paginação e a sua facilidade em lidar com estruturas de dados
• Técnica de segmentação, apenas os segmentos referenciados são transferidos da memória secundária para a memória principal
Segmentação
• A política de alocação de páginas pode ser a mesma usada na alocação particionada dinâmica (best-fit, worst-fit ou first-fit)
• Problemas de fragmentação externa• Proteções de memória é mais simples de ser implementada do
que sistemas de paginação, Cada segmento tem um conteúdo bem definido
Segmentação e Paginação
• Qual o melhor?– Discussão antiga, sem vencedores
• Fragmentação– Paginação : apresenta fragmentação interna– Segmentação : apresenta fragmentação externa
• Administração– Paginação é mais simples
• Proteção (segurança) e compartilhamento– Segmentação é melhor, pois:
– segmentos são unidades lógicas – páginas são mais misturadas (dados, código)
Sistemas Combinados
• Existem sistemas onde a paginação e a segmentação são usadas em conjunto, procurando tirar proveito de ambos os esquemas.– Segmentação paginada (mais comum)– Paginação segmentada (menos comum)
Segmentação com Páginas
• Técnica de gerenciamento na qual o espaço de endereçamento é dividido em segmentos e, por sua vez, cada segmento é dividido em páginas
• Objetivos de oferecer as vantagens da técnica de paginação e segmentação
Segmentação com Páginas
• Endereço virtual é formado pelo número do segmento virtual (NSV)
• Um número de página virtual (NPV) e um deslocamento• O deslocamento indica a posição do endereço virtual em
relação ao inicio da página na qual se encontra.• O endereço físico é obtido, então, combinando-se o
endereçamento do frame, localizado na tabela de páginas com o deslocamento contido no endereço virtual
Segmentação
Segmento 0
subrotina segmento 0
função segmento 1
Programa Principal
segmento 2
pilha segmento 3
Tabela de Símbolos
segmento 4
Espaço de Endereçamento Lógico
base limite 0 1400 1000 1 6300 400 2 4300 400 3 3200 1100 4 4700 1000 Tabela de
segmentos
1400
2400
4300
5700
Segmento 4
6300
6700
Segmento 2
4700
Segmento 3
3200
Segmento 1
Memória Física
Sistemas Combinados
Segmentação com Páginas
• Técnica de gerenciamento na qual o espaço de endereçamento é dividido em segmentos e, por sua vez, cada segmento é dividido em Páginas.
• Objetivos de oferecer as vantagens da técnica
de paginação e segmentação.
Sistemas Combinados
• Endereço virtual é formado:– pelo número do segmento virtual (NSV).– Um número de página virtual (NPV) e um
deslocamento.• O deslocamento indica a posição do endereço virtual em
relação ao inicio da página na qual se encontra.
Sistemas Combinados
• O endereço físico é obtido, então, combinando-se o endereçamento do frame, localizado na tabela de páginas com o deslocamento contido no endereço virtual.
Segmentação com Paginação
s d
Base daTabela dePáginas
Tamanho do
Segmento
+
>=
p d’
d
f d’f
erro
N
STabela deSegmentos
MEM