(i) em uma Tabela de Páginas
Download
Report
Transcript (i) em uma Tabela de Páginas
Gerência de Memória
Fundamentos
Swapping
Alocação Contígua de memória
Paginação
Segmentação
Segmentação com Paginação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Fundamentos
O programa deve ser levado à memória e colocado em um
processo para ser utilizado;
Fila de Entrada (Input queue) – Coleção de processos no disco
que está esperando para ser levados à memória para execução;
Um programa de usuário passa por várias etapas antes de ser
executado
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Associação de Instruções e dados para Memória
Associação de instruções e dados para endereços de memória podem
Acontecer em três diferentes estágios
Tempo de Compilação: Se a Posição de memória for
conhecida em tempo de compilação, um código absoluto
pode ser gerado; O código deverá ser recompilado se a
posição de início mudar;
Tempo de Carga: Deve ser gerado um código relocável,
se a localização na memória não for conhecida em tempo
de compilação;
Tempo de Execução: Se o processo puder ser movido
durante a execução de um segmento de memória para
outro, a associação deverá ser retardada até o tempo de
execução. Hardware precisa ter suporte a mapeamento
de endereços (registradores base e limite).
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Etapas de Processamento de um Programa de Usuário
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Espaço de Endereçamento Lógico vs. Físico
O conceito de um espaço de endereçamento lógico que é
limitado a um espaço de endereçamento físico separado é
central à um gerenciamento de memória adequado
Endereço Lógico – gerado pela CPU, também conhecido como
endereço virtual;
Endereço Físico – endereço visto pela unidade de memória
(registrador de endereço de memória) - MMU
Os métodos de resolução de endereços Lógicos e Físicos geram
endereços iguais em tempo de carga e de compilação,
Endereços lógicos (virtuais) e físicos são diferentes quando se
usa o esquema de resolução de endereços em tempo de
execução
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Unidade de Gerência de Memória (MMU)
Dispositivo de hardware que mapeia endereços virtuais para
endereços físicos;
No esquema do MMU, o valor do registrador de relocação (base)
é adicionado a todo endereço gerado por um processo de
usuário no momento em que ele é enviado para a memória;
O programa de usuário negocia com endereços lógicos, nunca
vê o endereço físico real;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Relocação dinâmica usando um registrador de relocação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Carga Dinâmica
Rotina não é carregada até que seja chamada
Melhor utilização do espaço de memória, rotinas não utilizadas
nunca são carregadas;
Útil quando há necessidade de grande quantidade de código
para lidar com casos que ocorrem com pouca freqüência;
Carga Dinâmica não requer suporte especial por parte do
sistema operacional, é implementado através de projeto de
programa;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Ligação Dinâmica
Ligação é adiada até o tempo de execução (ver 4º slide)
Pequeno trecho de código, stub, utilizado para localizar a rotina
de biblioteca apropriada residente na memória (ou não);
O Stub substituí a si mesmo pelo endereço da rotina, e executa
a rotina
Sistema Operacional precisam checar se a rotina está
edereçada na memória;
Ligação dinâmica é particularmente útil para bibliotecas
(correções de bugs)
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Overlays
Manter em memória apenas as instruções e dados que são
necessários em determinado momento;
Necessário quando um processo é maior do que o montante de
memória alocado a ele;
Implementado pelo usuário, não necessita de suporte especial
do Sistema Operacional, programar e projetar as estruturas de
overlay é complexo.
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Overlays para um montador de dois passos
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Swapping
Um processo pode ser removido temporariamente da memória para
um armazenamento auxiliar e, em seguida, retornado à memória para
continuar sua execução;
Backing store – Disco grande e rápido o suficiente para armazenar
uma cópia de todas as imagens de memória de todos os usuários,
deve fornecer acesso direto a essas imagens de memória;
Roll out, roll in – Uma variante de swapping é utilizada para
algoritmos de escalonamento baseado em prioridade, processos de
baixa prioridade são descarregados e é carregado e executado um
processo de prioridade mais alta (swapped);
A Maior parte de tempo de swap é o tempo de transferência; O tempo
total de transferência é proporcional à quantidade de memória trocada;
Muitas diferentes versões de swapping são encontradas em muitos
sistemas (Unix, Linux and Windows);
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Visão Esquemática de Swapping
•Problema de I/O
•Manter o job em memória enquanto ele estiver
envolvido em I/O;
•Executar I/O somente em buffers de SO
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Alocação Contígua de Memória
Memória principal geralmente dividida em duas partições:
Sistema Operacional residente, normalmente carregado na
memória baixa (vetor de interrupção);
Processos de usuário ficam na memória alta;
Alocação com partição simples
Esquema do registrador de relocação utilizado para proteger
processos de usuário de outros, e de mudanças do código e dados
do Sistema Operacional;
Registrador de relocação contém o valor do menor endereço físico,
registrador limite contém a faixa de endereços lógicos, cada
endereço lógico deve ser menor que o valor do registrador limite;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Suporte de Hardware para os registradores de relocação e limite
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Alocação Contígua (Cont.)
Alocação com Múltiplas Partições
Hole (Buraco) – Bloco de memória disponível, blocos de vários
tamanhos disponíveis na memória;
Quando um processo chega, é alocado memória de um hole grande
o suficiente para acomodá-lo;
Sistema operacional mantém informações sobre:
A) partições alocadas
b) Partições livres (hole)
OS
OS
OS
OS
process 5
process 5
process 5
process 5
process 9
process 9
process 8
process 2
Sistemas Operacionais
process 10
process 2
process 2
process 2
Original: Silberschatz, Galvin and Gagne
Problema de alocação de Memória Dinâmica
Como atender a um pedido de tamanho n de uma lista de blocos de
memória livres:
First-fit: Aloca o primeiro bloco de memória grande o
suficiente
Best-fit: Aloca o menor bloco grande o suficiente; deve
procurar em toda lista, a menos que a lista esteja
ordenada por tamanho. Produz o menor bloco restante.
Worst-fit: Aloca o maior bloco; Deve procurar também
em toda a lista. Gera o maior bloco restante.
First-fit e Best-fit são melhores em termos de redução de tempo
e utilização da memória
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Fragmentação
Fragmentação Externa – Existe espaço total na memória para
satisfazer uma requisição, mas não é contíguo;
Fragmentação Interna – A memória alocada pode ser um
pouco maior do que a memória necessária; esta diferença de
tamanho é memória interna à partição, que não é utilizada;
Reduzir fragmentação externa através da compactação
Trocar de posição o conteúdo da memória, para reunir toda a
memória livre em um grande bloco;
Compactação só será possível se a relocação for dinâmica, e for
feita em tempo de execução;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Paginação
Espaço de endereçamento físico de um processo pode ser não
contíguo; o processo é alocado na memória física, sempre que
esta está disponível;
Divide a memória física em blocos de tamanho fixo, chamados
frames-quadros (tamanho é potência de 2, variando entre 512
bytes e 16 megabytes);
Divide a memória lógica em blocos de tamanho igual, chamados
pages-páginas;
Mantém uma lista de todos os frames livres;
Para rodar um programa de n pages, precisa encontrar n
frames livres e carregar o programa;
Mantém uma tabela de pages para traduzir o endereço lógico
para físico;
Fragmentação interna
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Esquema de Tradução de Endereços
Endereços gerados pela CPU são divididos em:
Número de página (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 (offset) (d) – Combinado com o endereço
de página para definir o endereço de memória física que é enviado
para a unidade de memória
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Arquitetura da Tradução de Endereços
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de Paginação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de Paginação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Frames Livres
(a) Antes da alocação
Sistemas Operacionais
(b) Depois da Alocação
Original: Silberschatz, Galvin and Gagne
Implementação da Tabela de Páginas
A tabela de página é mantida na memória principal;
Registrador Base da Tabela de Página (PTBR) aponta para a
tabela de página;
Registrador de Tamanho da Tabela de Página (PTLR), indica
o tamanho da tabela de página
Neste esquema todo acesso a dados/instruções requerem dois
acessos à memória. Um para a tabela de página e outro para o
dado/instrução;
O problema dos dois acessos à memória pode ser resolvido
através do uso de um cache de hardware especial, pequeno e
de busca rápida, chamado Registradores Associativos ou
Translation look-aside buffers (TLBs)
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Registradores Associativos
Registradores Associativos – busca paralela
Page #
Frame #
Tradução de Endereço (A´, A´´)
Se A´ está nos Registradores Associativos, pegue o endereço do
frame
Se não pegue o endereço do frame da tabela de página na memória
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Hardware de Paginação com TLB
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tempo Efetivo de Acesso
Associative Lookup = unidades de tempo
Assumindo ciclo de memória de 1 microssengundo
Taxa de Acerto (Hit Ratio) – porcentagem de vezes que o nº da
página é encontrado nos registradores associativos; está
diretamente associada ao nº de registradores associativos;
Taxa de Acerto =
Tempo Efetivo de Acesso (EAT)
EAT = (1 + ) + (2 + )(1 – )
=2+–
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Proteção de Memória
Proteção de memória é implementado pela associação de um bit
de proteção com cada quadro;
Um bit Válido-Inválido é associado a cada entrada na tabela de
páginas:
“válido”, indica que a página associada está no espaço de
endereçamento lógico do processo, portanto, é uma página legal
(válida);
“Inválido”, indica que página associada não está no espaço de
endereçamento lógico do processo.
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Bit válido (v) ou inválido (i) em uma Tabela de Páginas
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Estrutura de Tabelas de Páginas
Paginação Hierárquica;
Tabela de Página Compartilhada;
Tabela de Página Invertida.
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tabelas de Páginas Hierárquicas
Quebrar o espaço de endereçamento lógico em múltiplas
tabelas de páginas;
Uma técnica simples é uma tabela de página de dois níveis.
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de paginação de dois níveis
Um espaço de endereçamento lógico (de 32 bits, com página
do tamanho de 4K) é dividido em:
Um nº de página consistindo em 20 bits
Um deslocamento de pagina consistindo em 12 bits
Paginamos a tabela de página , o nº da página é dividido em:
Nº de página de 10 bits
Um deslocamento de 10 bits
Assim, um endereço lógico torna-se:
page number
pi
10
page offset
p2
d
10
12
Onde p1 é um índice para a tabela de página externa e p2 é o
deslocamento dentro da página da tabela de página externa
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Esquema de Tabela de Página de dois níveis
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Esquema de Tradução de Endereços
Esquema de tradução de endereços com paginação de dois
níveis de 32 bits
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tabelas de Páginas “Hashed”
Comum em espaços de endereçamento maiores que 32 bits
O número de página virtual é “hashed” em uma tabela de
página. Esta tabela de página contém um “conjunto” de
elementos “hashing” da mesma locação;
Números de página virtual são comparados neste “conjunto”,
procurando por um igual. Se um endereço igual é encontrado, o
quadro físico correspondente é extráído
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tabela de Página “Hashed”
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tabela de Página Invertida
Uma entrada para cada página real de memória;
Cada entrada consiste no endereço virtual da página
armazenada naquela posição real de memória, com informações
sobre o processo que é proprietário da página;
Diminuí a memória necessária para armazenar cada tabela de
página, mas aumenta o tempo necessário de pesquisa na tabela
quando ocorre uma referência de página;
Usa uma hash para limitar a pesquisa para uma entrada – ou, ao
menos algumas – entradas de tabela de página
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Arquitetura de Tabela de Página Invertida
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Páginas Compartilhadas
Código Compartilhado
Uma cópia de código (reentrante) compartilhado ente os processos
(ex. Editores de texto, compiladores, ambientes gráficos);
Código compartilhado deve aparecer na mesma localização no
espaço de endereçamento lógico de todos os processos;
Código e Dados Privados
Cada processo mantém uma cópia separada do código e dos
dados;
As páginas de dados e códigos privados podem aparecer em
qualquer lugar do espaço de endereçamento lógico;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de Página Compartilhada
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Segmentação
Esquema de gerenciamento de memória que oferece suporte à
visão de usuário da memória;
Um programa é uma coleção de segmentos. Um segmento é
uma unidade lógica:
Programa Principal,
Procedimentos,
Funções,
Métodos,
Objetos,
Variáveis Locais, Variáveis Globais,
Pilhas,
Tabela de símbolos, arrays
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Visão de Usuário de um Programa
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Visão Lógica de Segmentação
1
4
1
2
3
4
2
3
user space
Sistemas Operacionais
physical memory space
Original: Silberschatz, Galvin and Gagne
Arquitetura de Segmentação
Endereço Lógico consiste de uma dupla:
<nº do segmento, deslocamento>,
Tabela de Segmentos – mapeia endereços bidimensionais para
endereços unidimensionais físicos; Cada entrada da tabela tem:
base – Contém o endereço físico de início no qual reside o
segmento na memória;
limite – especifica o tamanho do segmento;
Registrador Base da Tabela de Segmentos (STBR) aponta para
a localização da tabela de segmentos na memória;
Registrador de Tamanho da Tabela de segmentos (STLR) indica
o número de segmentos usados pelo programa;
o número de segmento s é legal se s < STLR
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Arquitetura de Segmentação (Cont.)
Relocação.
Dinâmica
Por tabela de segmentação
Compartilhamento.
Segmentos Compartilhados
Mesmo número do segmento
Alocação.
First Fit/Best Fit
Fragmentação Externa
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Arquitetura de Segmentação (Cont.)
Proteção. Associado com cada entrada na Tabela de segmento:
Bit de validação = 0 segmento ilegal
Privilégios de read/write/execute
Bits de proteção associados com segmentos; compartilhamento
de código ocorre em nível de segmento;
Segmentos variam de tamanho, alocação de memória é um
problema de alocação dinâmica de armazenamento;
Um exemplo de segmentação é mostrado no diagrama
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Hardware de Segmentação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de Segmentação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Compartilhamento de Segmentos
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Segmentação com Paginação – MULTICS
O sistema MULTICS resolveu o problema de frgamentação
externa e lentidão no tempo de busca com a paginação de
segmentos
A solução difere da segmentação pura, já que a entrada para a
tabela de segmentação não contém o endereço base para o
segmento, mas sim o endereço base de uma tabela de página
para este segmento
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Esquema de Tradução de Endereços MULTICS
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Segmentação com Paginação – Intel 386
Como mostra o diagrama, Intel 386 usa segmentação
com Paginação para o gerenciamento de memória com
um esquema de Paginação de dois níveis
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tradução de Endereços - Intel 30386
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Linux em Intel 80x86
Usa segmentação mínima para manter a implementação da
memória mais portável
Usa 6 segmentos:
Código do Kernel
Dados do kernel
Código de usuário (compartilhado por todos os processos de
usuários, usando endereços logicos)
Dados Usuários (do mesmo modo compartilhado)
Estado das tarefas (contexto do hardware por processo)
Usa 2 níveis de proteção:
Modo kernel
Modo Usuário
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne