Você está na página 1de 20

Introdução

Sistemas Operacionais ❚ Multiprogramação implica em manter-se vários processos em


memória
❚ Memória necessita ser alocada de forma eficiente para permitir o
Gerência de memória
máximo possível de processos
❚ Existem diferentes técnicas para gerência de memória

Instituto de Informática - UFRGS


❙ Dependem do hardware do processador

Oliveira, Carissimi, Toscani


2a edição Capítulo 6
Revisão: Fev/2003
Sistemas Operacionais 2

Considerações gerais Memória lógica e memória física

❚ Um sistema de memória possui pelo menos dois níveis: ❚ Memória lógica


❙ Memória principal: acessada pela CPU ❙ É aquela que o processo “enxerga”
❙ Memória secundária: discos ❙ Endereços lógicos são aqueles manipulados por um processo
❚ Programas são armazenados em disco ❚ Memória física
❙ Executar um programa se traduz em transferi-lo da memória secundária à ❙ Implementada pelos circuitos integrados de memória
memória primária ❙ Endereços físicos são aqueles que correspondem a uma posição real de
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

❚ Qualquer sistema operacional tem gerência de memória memória


❙ Monotarefa: gerência é simples
❙ Multitarefa: complexa
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

❚ Algoritmos de gerência de memória dependem de facilidades


disponíveis pelo hardware da máquina

Sistemas Operacionais 3 Sistemas Operacionais 4


Endereço lógico versus endereço físico Unidade de gerência de memória

❚ Espaço lógico de um processo é diferente do espaço físico ❚ Memory Management Unit (MMU)
❙ Endereço lógico: gerado pela CPU (endereço virtual) ❚ Hardware que faz o mapeamento entre endereço lógico e endereço
❙ Endereço físico: endereços enviados para a memória RAM físico
❚ Programas de usuários “vêem” apenas endereços lógicos Memória
❚ Endereços lógicos são transformados em endereços físicos no CPU MMU
momento de execução dos processos End. End.
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


lógico físico

❚ Complexidade variável de acordo com a funcionalidade oferecida


Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


❙ Mecanismos de suporte para proteção, carga de programas, tradução de
endereços lógicos a endereços físicos, etc...

Sistemas Operacionais 5 Sistemas Operacionais 6

Exemplos de MMU Execução de programas

Registrador Limite Registrador Limite


Inferior
100
Superior
799
❚ Um programa deve ser transformado em um processo para pode
ser executado
Processador
123
< não
> não
123
Memória ❙ Alocação de um descritor de processos
sim sim ❙ Alocação de áreas de memória para código, dados e pilha
Interrupção
(Endereço Ilegal)
Interrupção
(Endereço Ilegal)
❚ Transformação é feita através de uma série de passos, alguns com
a ajuda do próprio programador
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

Registrador de Limite Registrador de Base ❙ Compilação, diretivas de compilação e/ou montagem, ligação, etc...
❚ Amarração de endereços (binding)
200 500
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

123 623
Processador > não
+ Memória

sim

Interrupção
(Endereço Ilegal)

Sistemas Operacionais 7 Sistemas Operacionais 8


Amarração de endereços (binding) Transformação de programa em processo

❚ Atribuição de endereços (posições de memória) para código e ...


dados pode ser feita em três momentos diferentes:
❙ Em tempo de compilação
❙ Em tempo de carga
Compilador Ligador Carregador
❙ Em tempo de execução
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


❚ Diferenciação entre o endereço lógico e o endereço físico Programa objeto executável RAM
Biblioteca
❙ Como traduzir endereço lógico em endereço físico estática
❙ Código absoluto e código relocável Fase de compilação
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


Fase de ligação

Fase de carga

Sistemas Operacionais 9 Sistemas Operacionais 10

Carregador absoluto versus carregador relocador Código relocável

❚ Programador não tem conhecimento onde o programa será ❚ Carregador relocador


carregado na memória ❙ Correção de todas as referências a memória de forma a corresponder ao
❚ Endereço só é conhecido no momento da carga endereço de carga do programa
❙ Durante execução do programa sua localização física pode ser alterada ❚ Necessidade de identificar quais endereços devem ser corrigidos
! e.g.; procedimento de swapping ❙ Código relocável
❚ Necessidade de traduzir endereços lógicos à endereços físicos ❙ Mapeamento das posições a serem corrigidas é mantida através de tabelas
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

❚ Relocação é a técnica que fornece realiza essa tradução ❚ Código executável mantém informações de relocação na forma de
❙ Via software: carregador relocador
tabelas
❙ No momento da carga o programa executável é interpretado e os endereços
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

❙ Via hardware: carregador absoluto


corrigidos

Sistemas Operacionais 11 Sistemas Operacionais 12


Código absoluto Mecanismos básicos de gerência de memória

❚ Carregador absoluto ❚ Um programa (processo) para ser executado deve estar na


❙ Não realiza correção de endereços no momento da carga do programa em memória
memória ❙ Onde deve ser carregado?
❚ Código executável absoluto não necessita manter tabelas de ! Problema de alocação de memória

endereços a serem corrigidos ❚ A alocação de memória depende de:


❚ Endereço de carga ❙ Código absoluto versus código relocável
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


❙ Fixo pelo programa (programador) ❙ Necessidade de espaço contíguo ou não
❙ Qualquer ❚ Necessidade de gerenciamento da memória
! Correção pode ser feita automáticamente, de forma transparente, a partir
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


❙ Determinação de áreas livres e ocupadas
de registradores de base ❙ Racionalizar a ocupação da memória

Sistemas Operacionais 13 Sistemas Operacionais 14

Mecanismos para alocação de memória Alocação contígua simples

❚ Sistema mais simples


Simples
Contígua
Estática ❚ Memória principal é dividida em duas partições:
Particionada
Dinâmica ❙ Sistema operacional (parte baixa da memória)
Alocação
❙ Processo do usuário (restante da memória)
Paginação
Não contígua ❚ Usuário tem controle total da memória podendo inclusive acessar a
Segmentação
área do sistema operacional
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


Segmentação com paginação
❙ e.g. DOS (não confiável)
❚ Evolução:
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

❙ Inserir proteção através de mecanismos de hardware + software


❚ Até estudarmos memória virtual supor que para um programa ser
! Registradores de base e de limite
executada ele necessita estar carregado completamente em
! Memory Management Unit (MMU)
memória

Sistemas Operacionais 15 Sistemas Operacionais 16


Alocação contígua particionada (1) Alocação contígua particionada (2)

❚ Existência de múltiplas partições ❚ O sistema operacional é responsável pelo controle das partições
❚ Imposta pela multiprogramação mantendo informações como:
❙ Partições alocadas
❚ Filosofia:
❙ Partições livres
❙ Dividir a memória em blocos (partições)
❙ Tamanho das partições
❙ Cada partição pode receber um processo (programa)
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


❙ Grau de multiprogramação é fornecido pelo número de partições
OS OS OS OS
! Importante: não considerando a existência de swapping

❚ Duas formas básicas: processo 5 processo 5 processo 5 processo 5


Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


processo 9 processo 9
❙ Alocação contígua com partições fixa (estática)
processo 8 processo 3
❙ Alocação contígua com partições variáveis (dinâmica)
processo 2 processo 2 processo 2 processo 2

Sistemas Operacionais 17 Sistemas Operacionais 18

Alocação contígua particionada fixa Gerenciamento de partições fixas

❚ Memória disponível é dividida em partições de tamanho fixo que ❚ Com código absoluto
podem ser do mesmo tamanho ou não ❙ Um processo só pode ser carregado na área de memória (partição) para a
❚ Questões: qual foi compilado
❙ Pode haver disputa por uma partição mesmo tendo outras livres
❙ Processos podem ser carregados em qualquer partição?
! Processo é mantido no escalonador de longo prazo (termo)
! Depende se código é absoluto ou relocável
! Empregar swapping
❙ Número de processos que podem estar em execução ao mesmo tempo
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


! Sem swapping → igual ao número de partições (máximo)
❚ Com código relocável
! Com swapping → maior que número de partições ❙ Um processo de tamanho menor ou igual ao tamanho da partição pode ser
❙ Programa é maior que o tamanho da partição carregado em qualquer partição disponível
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

! Não executa a menos que se empregue um esquema de overlay


❙ Se todas as partições estão ocupadas, duas soluções:
! Processo é mantido no escalonador de longo prazo (termo)

! Empregar swapping (escalonamento a médio prazo)

Sistemas Operacionais 19 Sistemas Operacionais 20


Fragmentação Interna Paliativo para reduzir fragmentação interna

❚ Problema da alocação fixa é uso ineficiente da memória principal ❚ Partições de tamanho diferentes
❚ Um processo, não importando quão pequeno seja, ocupa uma
partição inteira Sist. Operacional
8M
❙ Fragmentação interna
2M
Sist. Operacional 4M
8M
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


6M

Fragmentação 8M 8M
interna
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


8M
5M

8M 12 M

8M

Sistemas Operacionais 21 Sistemas Operacionais 22

Algoritmos para alocação de partições fixas(1) Algoritmos para alocação de partições fixas(2)

❚ Se código é absoluto a alocação é determinada na fase de


Uma fila por partição Uma fila para
montagem, compilação ou ligação Sisop Sisop
todas partições
❚ Se código é relocável:
❙ Partições de igual tamanho
! Não importa qual partição é utilizada

❙ Partições de diferentes tamanhos


Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


Novos
! Atribui o processo a menor partição livre capaz de armazená-lo Novos Processos
Processos
! Processo são atribuídos a partições de forma a minimizar o desperdício

de memória (fragmentação interna)


Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

Sistemas Operacionais 23 Sistemas Operacionais 24


Alocação particionada dinâmica Fragmentação externa

❚ Objetivo é eliminar a fragmentação interna ❚ A execução de processos pode criar pedaços livres de memória
❚ Processos alocam memória de acordo com suas necessidades ❙ Pode haver memória disponível, mas não contígua
! Fragmentação externa
❚ Partições são em número e tamanho variáveis

SisOp SisOp Sisop SisOp


Exemplo:
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


Processo 1 320 K Processo 1 320 K Processo 1 320 K
Criação processo 120K Processo 1 320 K
224 K 224 K Processo 4 128 K Processo 4 128 K
Processo 2
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


96 K 96 K
Processo 3 288 K Processo 3 288 K Processo 3 288 K Processo 3 288 K

64 K 64 K 64 K
64 K
Sistemas Operacionais 25 Sistemas Operacionais 26

Soluções possíveis fragmentação externa Gerenciamento de partições dinâmicas

❚ Reunir espaços adjacentes de memória ❚ Determinar qual área de memória livre será alocada a um processo
❚ Empregar compactação ❚ Sistema operacional mantém uma lista de lacunas
❙ Relocar as partições de forma a eliminar os espaços entre elas e criando uma ❙ Pedaços de espaços livres em memória
área contígua ❚ Necessidade de percorrer a lista de lacunas sempre que um
❙ Desvantagem:
processo é criado
! Consumo do processador
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


❙ Como percorrer essa lista??
! Acesso a disco

❚ Acionado somente quando ocorre fragmentação


❚ Necessidade de código relocável
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

Sistemas Operacionais 27 Sistemas Operacionais 28


Algoritmos para alocação contígua dinâmica Exemplos: Algoritmos alocação contígua dinâmica

❚ Best fit
20k 20k 20k 20k
❙ Minimizar tam_processo - tam_bloco
❙ Deixar espaços livres os menores possíveis A A A A
❚ Worst fit 40k 40k 40k 40k
❙ Maximizar tam_processo - tam_bloco
❙ Deixar espaços livres os maiores possíveis
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


C C C C
❚ First fit
30k 30k 30k 30k
❙ tam_bloco > tam_processo
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


❚ Circular fit SisOp SisOp SisOp SisOp
❙ Variação do first-fit
Best-fit Worst-fit First-Fit

Sistemas Operacionais 29 Sistemas Operacionais 30

Desvantagem de partições variáveis Soluções possíveis para fragmentação externa

❚ Tende a criar lacunas de memória livres que individualmente podem ❚ Reunir espaços adjacentes de memória
não ser suficientes para acomodar um processo ❚ Empregar compactação
❙ Pode haver memória livre, mas não contígua ❙ Relocar as partições de forma a eliminar os espaços entre elas e criando
! Fragmentação externa uma área contígua
❙ Desvantagem:
Exemplo: ! Consumo do processador
SisOp
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

! Acesso a disco
Criação processo 120k
Processo 1 320 K
❚ Acionado somente quando ocorre fragmentação
Processo 4 128 K
❚ Necessidade de código relocável
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

96 K

Processo 3 288 K

64 K
Sistemas Operacionais 31 Sistemas Operacionais 32
Swapping (1) Swapping (2)

❚ Processo necessita estar na memória para ser executado ❚ Tempo do swap é proporcional ao tamanho do processo
❙ Se não há mais espaço em memória é necessário fazer um rodizio de ❙ Possui influência na troca de contexto
processos em memória ! Política de swapping

Memória ! Escalonador de médio prazo (termo)

Swap out ❚ Atenção!!! Processos que realizam E/S


P1 ❙ Nunca realizar swap em processos que estão com E/S pendente
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


Swap in ❙ Utilizar buffers de E/S internos ao sistema
P2 ! Evitar que o E/S seja transferido a endereços de memória inválidos

❚ Existem variantes do sistema de swapping utilizados em sistemas


Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


como UNIX ou Microsoft Windows
❚ Memória secundária suficientemente grande para armazenar cópias
de todos os processos de usuários → backing store

Sistemas Operacionais 33 Sistemas Operacionais 34

Leituras complementares Introdução

❚ R. Oliveira, A. Carissimi, S. Toscani Sistemas Operacionais Editora ❚ Problemas com alocação particionada
Sagra-Luzzato, 2001. ❙ Necessidade de uma área contígua de memória (tamanho do processo)
❙ Capítulo 6, seções 6.2 e 6.3 ❙ Fragmentação interna (partições fixas) ou externa (partições variáveis)
❚ A. Silberchatz, P. Galvin Operating System Concepts Addison- ❚ Nova abordagem é considerar a existência de um espaço de
Wesley. 4th edition. endereçamento lógico e de um espaço de endereçamento físico
❙ Capítulo 8, Seção 8.4 ❙ O espaço de endereçamento físico não precisa ser contíguo
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

❙ Necessita “mapear” o espaço lógico no espaço físico


! Dois métodos básicos:

! Paginação
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

! Segmentação

❚ Suposição: para ser executado o processo necessita estar


completamente carregado em memória
Sistemas Operacionais 35 Sistemas Operacionais 36
Paginação (1) Paginação (2)

❚ A memória física (sistema) e a memória lógica (processo) são ❚ Para executar um processo de n páginas, basta encontrar n frames
dividos em blocos de tamanho fixo e idênticos livres na memória
❙ Memória física dividida em blocos de tamanho fixo denominados de frames ❙ Páginas são carregadas em qualquer frame livre
❙ Memória lógica dividide em blocos de tamanho fixo denominados de páginas ❚ Necessidade de traduzir endereços lógicos (páginas) em endereços
❚ Elimina a fragmentação externa e reduz a fragmentação interna físicos (frames)
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


Frame
Página 0
0 1
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


1 2
2 3
3 4
5
Processo A 6
7
Sistemas Operacionais 37 Sistemas Operacionais 38

Paginação: Endereço lógico Tradução de endereço lógico em endereço físico

❚ Endereço lógico é dividido em duas componentes:


❙ Número da página Memória RAM

❙ Deslocamento dentro de uma página


❚ Tamanho da página (P) pode assumir qualquer tamanho porém End. End.
emprega-se um tamanho potência de 2 para facilitar operações div lógico Físico
CPU p d f d
e mod
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


Página Página/Frame
0 E=p+d m bits
E p = E div P
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

d 1 E f
d = E mod P p d
p
2 Tabela de páginas
m-n n
3
Processo A

Sistemas Operacionais 39 Sistemas Operacionais 40


Exemplo de paginação (1) Exemplo de paginação (2)

❚ Características do sistema: End. lógico 000 1100 1001 1000


❙ Memória física: 64 kbytes (16 bits) 2 13
End. Frame
❙ Tamanho processo (máx): 32 kbytes (15 bits) CPU 0 C98
0
❙ Páginas 8 kbytes C98 0000
1
2000
❚ Paginação: 4000 2
❙ Número de frames: 64/8 = 8 (0 a 7) → 3 bits End. físico 3
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


6000
❙ Número de páginas: 32/8 = 4 (0 a 3) → 2 bits 100 0 1100 1001 1000 8000 4
5
❙ Deslocamento: 8 kbytes → 13 bits 3 13 A000
C000 6
100
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


15 bits 16 bits E000 7
x
End. End. x Memória física
Lógico p d Físico f d x

2 13 3 13

Sistemas Operacionais 41 Sistemas Operacionais 42

Características da paginação Tamanho da página

❚ Paginação é um tipo de relocação (via hardware) ❚ Páginas grandes significam


❚ Não gera fragmentação externa ❙ Processos compostos por menos páginas (tabela de páginas menores)
❙ Aumento da fragmentação interna na última página
❚ Fragmentação interna é restrita apenas a última página
❚ Importante: ❚ Páginas pequenas significam
❙ Processos compostos por mais páginas (tabela de página maiores)
❙ Visão do usuário: espaço de endereçamento contíguo
❙ Diminuição da fragmentação interna na última página
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


❙ Visão do sistema: processo é «esparramado » na memória física
❚ n páginas são alocadas a n frames implicando na criação de uma ❚ Objetivos conflitantes
tabela de correspondência ❚ Tamanho da página é imposto pelo hardware (MMU)
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

❙ Tabela de páginas ❙ Valores típicos variam entre 1 kbyte e 8 kbytes


❚ Facilita implementação de proteção e compartilhamento

Sistemas Operacionais 43 Sistemas Operacionais 44


Questões relacionadas com a gerência de páginas Proteção

❚ A gerência de memória deve manter controle de áreas livres e ❚ Proteção de acesso é garantida por definição:
ocupadas ❙ Processos acessam somente suas páginas → end. válidos
❚ Inclusão de mecanismos de proteção ❙ Endereço inválido apenas na última página
! Se houver fragmentação interna
❙ Evitar que um processo acesse área (páginas) de outros processos
❙ Garantir que um processo acesse apenas endereços válidos ❚ Inclusão de bits de controle na tabela de página (por entrada)
❙ Garantir acessos autorizados a uma posição de memória ❙ Indicação se a página é de leitura, escrita ou executável
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


! e.g.: páginas read-only, read-write, etc.
❚ Bit de validade:
❚ Inclusão de mecanismos de compartilhamento ❙ Página pertence ou não ao end. lógico do processo
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


❙ Permitir que dois ou mais processos dividam uma área comum
! e.g.: páginas de código de um aplicativo do tipo editor de texto

Sistemas Operacionais 45 Sistemas Operacionais 46

Exemplo de proteção Compartilhamento de páginas

P0
válido ❚ Código compartilhado
End. Frame
❙ Uma cópia do código (read-only, re-entrante) pode ser compartilhada entre
0000 0 vários processos (e.g.; editores de texto, compiladores, etc...)
2000 Pag.1 1
Processo ❙ O código compartilhado pertence ao espaço lógico de todos os processos
4000 2
Tabela de 6000 3 ❚ Dados e código próprios
páginas 8000 Pag.0 4 ❙ Cada processo possui sua própria área de código e seus dados
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


A000 Pag.3 5
C000 6
E000 Pag.2 7
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

Memória física

Sistemas Operacionais 47 Sistemas Operacionais 48


Exemplo de compartilhamento Implementação da tabela de páginas

Válido/Compartilhado ❚ Sistema operacional deve manter :


End. Frame
❙ Frames livres/alocados
0000 0
P1
❙ Número de frames e de páginas de um processo
2000 1
Processo 1
4000
❙ Uma entrada para cada frame e para cada processo
P0 2
Tabela de 6000 3 ❚ Como implementar a tabela de páginas?
páginas 8000 P0/P1 4 ❙ Registradores
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


A000 P3 5
❙ Memória
C000 P3 6
Válido/Compartilhado
E000 P2 7
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


Memória física

Processo 2

Tabela de
páginas
Sistemas Operacionais 49 Sistemas Operacionais 50

Implementação da tabela de páginas via registradores Implementação da tabela de páginas em memória

❚ Tabela de páginas é mantida por um conjunto de registradores ❚ Tabela de páginas é mantida em memória
❙ Cada página um registrador ❙ Page-table base register (PTBR): início da tabela de páginas
❙ No descritor de processo devem ser mantidas cópias dos registradores ❙ Page-table length register (PTLR): tamanho em número de entradas.
! Troca de contexto: atualização dos registradores
❚ Cada acesso a dado/instrução necessita, no mínimo, dois acessos a
❚ Desvantagem é o número de registradores memória
❙ Número de acesso depende da largura da entrada da tabela de página e de
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

como a memória é acessada (byte, word, etc...)

End. lógico End. físico


Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

+ Acesso 1
Acesso 2
(frame da página)
PTBR (dado/instr.)

Sistemas Operacionais 51 Sistemas Operacionais 52


Translation look-aside buffers (TLBs) Registradores associativos

❚ Uma espécie de meio termo entre implementação via registradores ❚ Registradores associativos permitem a busca de valores por
e via memória conteúdo, não por endereços
❚ Baseada em uma memória cache especial (TLB) composta por um ❙ Pesquisa paralela
banco de registradores (memória associativa) Key value
❚ Idéia é manter a tabela de páginas em memória com uma cópia
parcial da tabela em um banco de registradores (TLB)
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


❙ Página acessada está na TLB (hit): similar a solução de registradores
❙ Página acessada não está na TLB (miss): similar a solução via memória
❚ Funcionamento:
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


❙ Se valor “key” está na memória associativa, se obtém valor (value).

Sistemas Operacionais 53 Sistemas Operacionais 54

Implementação da tabela de páginas via TLB Aspectos relacionados com o uso de TLB

Memória RAM
End.
❚ Melhora o desempenho no acesso a tabela de páginas
lógico ❙ Tempo de acesso 10 vezes menor que uma memória RAM
CPU p d
❚ Desvantagem é o seu custo
Página/Frame ❙ Tamanho limitado (de 8 a 2048 entradas)
Hit TLB ❙ Uma única TLB (pertence a MMU) que é compartilhada entre todos os
End.
processos
Instituto de Informática - UFRGS

Físico Instituto de Informática - UFRGS


f d ! Apenas as páginas em uso por um processo necessitam estar na TLB
TLB
❚ Um acesso é feito em duas partes:
Miss TLB Tabela ❙ Se página está presente na TLB (hit) a tradução é feita
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

+ f
de páginas ❙ Se página não está presente na TLB (miss), consulta a tabela em memória e
PTBR atualiza entrada na TLB

Sistemas Operacionais 55 Sistemas Operacionais 56


Hit ratio (h) Exemplo: influência do hit ratio no desempenho

❚ Probabilidade de qualquer dado referenciado estar na memória, no t acesso _ tlb = 20ns h


CPU TLB Mem.
caso, na TLB t acesso _ mem = 100ns
❙ Taxa de acerto: hit ratio
❙ Seu complemento é a taxa de erro: miss ratio 1-h
t acesso ( hit ) = 20 + 100 = 120ns Mem. Mem.

h t acesso ( miss ) = 20 + 100 + 100 = 220ns


CPU TLB Mem.
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


hit _ ratio = 0.80
1-h t medio = 0.80 × (120) + 0.20 × (220) = 140ns
Mem. Mem.
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


t acesso = t atlb + t amem hit _ ratio = 0.98
t acesso = t atlb + t amem + t amem t medio = 0.98 × (120) + 0.02 × (220) = 122ns

( ) [
t medio = h × t atlb + t amem + (1 − h )× t atlb + t amem + t amem ]
Sistemas Operacionais 57 Sistemas Operacionais 58

Paginação multinível Exemplo: Paginação a dois níveis

❚ Na prática as tabelas de página possuem tamanho variável ❚ Processadores 80x86


❙ Como dimensionar o tamanho da tabela de páginas? ❙ End. Lógico: 4 Gbytes (32 bits)
! Fixo ou variável conforme a necessidade? ❙ Páginas: 4 kbytes
❙ Como armazenar a tabela de páginas? ❙ Tamanho da tabela de páginas: 4 Gbytes / 4 kbytes = 1048576 entradas
! Contígüo em memória → fragmentação externa
32 bits
! Paginando a própria tabela
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


t p d Memória
❚ A paginação multinível surge como solução a esses problemas f d física
❙ Diretórios de tabela de páginas (n níveis) 10 10 12
❙ Tabelas de páginas
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

Diretório de tabela ! Tabela de


de páginas páginas

Sistemas Operacionais 59 Sistemas Operacionais 60


Paginação a três níveis Tabela de páginas invertida

❚ Típico de arquiteturas de processadores de 64 bits ❚ Problema com tabela de páginas é o seu tamanho
❚ Tabela de páginas invertida surge como uma solução
Nível 1 Nível 2 Nível 3 deslocamento ❙ Uma tabela de páginas para todo o sistema (não mais por processo)
❙ Uma entrada para cada frame
❙ Endereço lógico da página e a qual processo pertence
❚ Endereço lógico é formado por <process_id, página, deslocamento>
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


❚ Cada entrada da tabela possui <process_id; página>
❚ Tabela é pesquisada e retorna, se presente, o indice i associado a
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


entrada
Diretório Diretório Tabela de Página ❙ Cada índice corresponde a um frame
global intermediário página

Sistemas Operacionais 61 Sistemas Operacionais 62

Esquema tabela de páginas invertida Leituras complementares

❚ R. Oliveira, A. Carissimi, S. Toscani Sistemas Operacionais Editora


Sagra-Luzzato, 2001.
Endereço
lógico ❙ Capítulo 6, seção 6.5
CPU pid p d i d ❚ A. Silberchatz, P. Galvin Operating System Concepts. 4rd edition
Endereço Addison-Wesley.
físico ❙ Seção 8.5
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


i
Memória
Pid | p
física
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

Tabela de
páginas

Sistemas Operacionais 63 Sistemas Operacionais 64


Segmentação Esquema lógico da segmentação

❚ Leva em consideração a visão de programadores e compiladores 1


❚ Um programa é uma coleção de segmentos, tipicamente: 4
1
❙ Código
❙ Dados alocados estaticamente 2
❙ Dados alocados dinamicamente 3
❙ Pilha
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


2
❚ Um segmento pode ser uma únidade lógica 4
❙ e.g.: procedimentos (funções), bibliotecas 3
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


❚ Gerência de memória pode dar suporte diretamente ao conceito de
Espaço de
segmentos usuário
Espaço físico

Sistemas Operacionais 65 Sistemas Operacionais 66

Endereço lógico em segmentação Tradução de endereço lógico em endereço físico

❚ Endereço lógico é composto por duas partes: ❚ Tradução é feita de forma similar a paginação (via tabela)
❙ Número de segmento ❙ Tabela de segmentos
❙ Deslocamento dentro do segmento ❚ Entrada na tabela de segmento:
❚ Os segmentos não necessitam ter o mesmo tamanho ❙ base: endereço inicial (físico) do segmento na memória
❚ Existe um tamanho máximo de segmento ❙ limite: tamanho do segmento
❚ Necessidade de verificar a cada acesso se ele é válido
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


❚ Segmentação é similar a alocação particionada dinâmica
❙ Hardware (comparador)
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

Sistemas Operacionais 67 Sistemas Operacionais 68


Exemplo de tradução de endereço lógico em endereço
Esquema de tradução da segmentação físico

Segmento 00 - Código
Memória Física
00000
Memória Lógica D1 00000
C1
D2 00001
00001
End.
C2
D3 00010
00010 C3
D4 00011
lógico 00011 C4
00100
CPU s d 00100
00101
C5
C6
00101
00110
00111
Segmento 01 - Dados
C1 01000
base/limite Memória 00000 D1 C2 01001
00001 D2 C3 01010
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


< End. física 00010
00011
D3
D4
C4
C5
01011
01100
Físico C6 01101
s d Segmento 10 - Pilha 01110
01111
Tabela de segmentos 00000
00001
P1
P2
10000
10001
00010
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


P3
10010
10011
P1 10100
Tabela de Segmentos P2 10101
P3 10110
Segmento Base Limite
10111
00 01000 0110
01 00000 0100
10 10100 0011

Sistemas Operacionais 69 Sistemas Operacionais 70

Implementação da tabela de segmentos Implementação da tabela de segmentos via registradores

❚ Construção de uma tabela de segmentos ❚ Tabela de segmentos é mantida por um conjunto de registradores
❙ Cada segmento corresponde a uma entrada na tabela ❙ Cada segmento dois registradores (base e limite)
❚ Cada segmento necessita armazenar dois valores: ❙ No descritor do processo devem ser mantidas cópias dos registradores
! Troca de contexto: atualização dos registradores
❙ Limite e base
❚ Análogo a tabela de páginas: ❚ Número de registradores impõem uma limitação prática ao tamanho
da tabela de segmentos (como na paginação)
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


❙ Registradores
❙ Memória
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

Sistemas Operacionais 71 Sistemas Operacionais 72


Implementação da tabela de segmentos em memória Problemas com implementação da tabela em memória

❚ Tabela de segmentos armazenada em memória ❚ Problemas similares ao da paginação:


❚ Segment-table base register (STBR): localização do início da tabela ❙ Tabela pode ser muito grande
de segmentos na memória ❙ Dois acessos a memória para acessar um dado/instrução
❚ Segment-table length register (STLR): indica o número de ❚ Solução:
segmentos de um processo ❙ Empregar uma TLB
❚ Observação (válida também para a paginação)
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


! Segmento é válido apenas se: s < STLR.
❙ A consulta a tabela em memória provoca no mínimo 2 acessos a memória,
pois uma entrada na tabela pode representar mais de um acesso.
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


Sistemas Operacionais 73 Sistemas Operacionais 74

Implementação da tabela de segmentos via TLB Aspectos de proteção e compartilhamento

❚ Os príncipios já estudados para paginação continuam válidos para a


End.
segmentação
lógico ❙ e.g.; bits de proteção (rwx), bit de validade, bits de compartilhamento, etc..
CPU s d
❚ Segmentação adiciona a possibilidade de compartilhar apenas
base/limite trechos da área de código
Memória ❚ Problema associado:
Instituto de Informática - UFRGS

hit Instituto de Informática - UFRGS


<
End. física
Físico
❙ Segmentos compartilhados devem ter a mesma identificação (entrada) na
TLB
tabela de segmentos
Base d
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

miss
Base/limite

Tabela de segmentos

Sistemas Operacionais 75 Sistemas Operacionais 76


Desvantagem da segmentação Solução para fragmentação externa

❚ A segmentação provoca fragmentação externa quando segmentos ❚ A paginação é a solução natural para a fragmentação
começam a ser liberar memória ❚ Analisar o problema sob dois pontos extremos:
❚ Mesmo problema de alocação partições variáveis com as mesmas ❙ Um processo é um único segmento
soluções: ❙ Cada byte é um segmento
❙ Concatenação de segmentos adjacentes ! Sem fragmentação externa, nem interna

❙ Compactação da memória ! Não viável pelos overheads envolvidos


Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


! Similar a página de 1 byte

❚ Solução: meio termo entre os extremos


Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani


❙ Fazer um segmento ser composto por um número fixo (e reduzido) de bytes
❙ Equivale a ter o segmento dividido em internamente em blocos

Sistemas Operacionais 77 Sistemas Operacionais 78

Segmentação com paginação Leituras complementares

❚ Recuperar as vantagens dos dois métodos em relação a ❚ R. Oliveira, A. Carissimi, S. Toscani; Sistemas Operacionais. Editora
fragmentação: Sagra-Luzzato, 2001.
❙ Fragmentação interna: paginação apresenta, segmentação não ❙ Capítulo 6
❙ Fragmentação externa: segmentação apresenta, paginação não ❚ A. Silberchatz, P. Galvin, G. Gane; Applied Operating System
❚ Solução se traduz em paginar segmentos Concepts. Addison-Wesley, 2000.
❙ Capítulo 9
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

End. lógico s d 63 ❚ W. Stallings; Operating Systems. (4th edition). Prentice Hall, 2001.
! 1k ❙ Capítulo 7
64k
Oliveira, Carissimi, Toscani

Oliveira, Carissimi, Toscani

2
s p d 1
0
Segmento contento
64 páginas de 1k

Sistemas Operacionais 79 Sistemas Operacionais 80