Sistemas Operacionais - Inf

Propaganda
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
máximo possível de processos
❚ Existem diferentes técnicas para gerência de memória
Capítulo 6
Revisão: Fev/2003
❙ Dependem do hardware do processador
Oliveira, Carissimi, Toscani
2a edição
Instituto de Informática - UFRGS
Gerência de memória
Sistemas Operacionais
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
❙ Memória secundária: discos
❙ É aquela que o processo “enxerga”
❙ Endereços lógicos são aqueles manipulados por um processo
❚ Programas são armazenados em disco
❚ Memória física
❙ Monotarefa: gerência é simples
❙ Multitarefa: complexa
❚ Algoritmos de gerência de memória dependem de facilidades
disponíveis pelo hardware da máquina
Sistemas Operacionais
3
❙ Implementada pelos circuitos integrados de memória
❙ Endereços físicos são aqueles que correspondem a uma posição real de
memória
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Executar um programa se traduz em transferi-lo da memória secundária à
memória primária
❚ Qualquer sistema operacional tem gerência de memória
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙
2
Sistemas Operacionais
4
Endereço lógico versus endereço físico
Unidade de gerência de memória
❚ Memory Management Unit (MMU)
❚ Hardware que faz o mapeamento entre endereço lógico e endereço
físico
❚ Espaço lógico de um processo é diferente do espaço físico
❚ Programas de usuários “vêem” apenas endereços lógicos
❚ Endereços lógicos são transformados em endereços físicos no
momento de execução dos processos
Memória
5
Sistemas Operacionais
100
Registrador Limite
Superior
❙ Mecanismos de suporte para proteção, carga de programas, tradução de
endereços lógicos a endereços físicos, etc...
6
❙ Alocação de um descritor de processos
❙ Alocação de áreas de memória para código, dados e pilha
123
não
não
Memória
sim
Registrador de Limite
200
Registrador de Base
500
123
623
>
não
❚ Transformação é feita através de uma série de passos, alguns com
a ajuda do próprio programador
Interrupção
(Endereço Ilegal)
+
Memória
sim
Interrupção
(Endereço Ilegal)
7
❙ Compilação, diretivas de compilação e/ou montagem, ligação, etc...
❚ Amarração de endereços (binding)
Oliveira, Carissimi, Toscani
sim
>
Instituto de Informática - UFRGS
<
Interrupção
(Endereço Ilegal)
Oliveira, Carissimi, Toscani
❚ Complexidade variável de acordo com a funcionalidade oferecida
❚ Um programa deve ser transformado em um processo para pode
ser executado
799
123
Processador
Instituto de Informática - UFRGS
End.
físico
Execução de programas
Registrador Limite
Inferior
Sistemas Operacionais
End.
lógico
MMU
Sistemas Operacionais
Exemplos de MMU
Processador
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
CPU
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙ Endereço lógico: gerado pela CPU (endereço virtual)
❙ Endereço físico: endereços enviados para a memória RAM
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
Compilador
❚ Diferenciação entre o endereço lógico e o endereço físico
❙ Como traduzir endereço lógico em endereço físico
❙ Código absoluto e código relocável
Sistemas Operacionais
Programa
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙ Em tempo de execução
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙ Em tempo de carga
9
RAM
Fase de ligação
Fase de carga
10
❚ Carregador relocador
❙ Correção de todas as referências a memória de forma a corresponder ao
endereço de carga do programa
❚ Necessidade de identificar quais endereços devem ser corrigidos
❙ Durante execução do programa sua localização física pode ser alterada
! e.g.; procedimento de swapping
❙ Via software: carregador relocador
❙ Via hardware: carregador absoluto
11
❙ Código relocável
❙ Mapeamento das posições a serem corrigidas é mantida através de tabelas
❚ Código executável mantém informações de relocação na forma de
tabelas
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Necessidade de traduzir endereços lógicos à endereços físicos
❚ Relocação é a técnica que fornece realiza essa tradução
Oliveira, Carissimi, Toscani
Fase de compilação
executável
Biblioteca
estática
Código relocável
❚ Programador não tem conhecimento onde o programa será
carregado na memória
❚ Endereço só é conhecido no momento da carga
Instituto de Informática - UFRGS
objeto
Carregador
Sistemas Operacionais
Carregador absoluto versus carregador relocador
Sistemas Operacionais
Ligador
❙ No momento da carga o programa executável é interpretado e os endereços
corrigidos
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
memória
❙ Onde deve ser carregado?
! Problema de alocação de memória
❚ Código executável absoluto não necessita manter tabelas de
endereços a serem corrigidos
❚ Endereço de carga
❙ Fixo pelo programa (programador)
❙ Qualquer
! Correção pode ser feita automáticamente, de forma transparente, a partir
de registradores de base
Simples
Alocação
Oliveira, Carissimi, Toscani
Não contígua
Particionada
14
Alocação contígua simples
❚ Sistema mais simples
❚ Memória principal é dividida em duas partições:
Estática
Dinâmica
❙ Sistema operacional (parte baixa da memória)
❙ Processo do usuário (restante da memória)
Paginação
Segmentação
Segmentação com paginação
Instituto de Informática - UFRGS
Contígua
❙ Determinação de áreas livres e ocupadas
❙ Racionalizar a ocupação da memória
Sistemas Operacionais
Mecanismos para alocação de memória
Instituto de Informática - UFRGS
❚ Necessidade de gerenciamento da memória
13
Sistemas Operacionais
❚ Até estudarmos memória virtual supor que para um programa ser
executada ele necessita estar carregado completamente em
memória
Sistemas Operacionais
❙ Código absoluto versus código relocável
❙ Necessidade de espaço contíguo ou não
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ A alocação de memória depende de:
15
❚ Usuário tem controle total da memória podendo inclusive acessar a
área do sistema operacional
❙ e.g. DOS (não confiável)
Oliveira, Carissimi, Toscani
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙ Não realiza correção de endereços no momento da carga do programa em
memória
❚ Evolução:
❙ Inserir proteção através de mecanismos de hardware + software
! Registradores de base e de limite
! Memory Management Unit (MMU)
Sistemas Operacionais
16
Alocação contígua particionada (1)
Alocação contígua particionada (2)
❚ O sistema operacional é responsável pelo controle das partições
mantendo informações como:
Instituto de Informática - UFRGS
❚ Duas formas básicas:
❙ Alocação contígua com partições fixa (estática)
❙ Alocação contígua com partições variáveis (dinâmica)
Sistemas Operacionais
Oliveira, Carissimi, Toscani
❙ Partições alocadas
❙ Partições livres
❙ Tamanho das partições
❙ Dividir a memória em blocos (partições)
❙ Cada partição pode receber um processo (programa)
❙ Grau de multiprogramação é fornecido pelo número de partições
! Importante: não considerando a existência de swapping
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Existência de múltiplas partições
❚ Imposta pela multiprogramação
❚ Filosofia:
17
OS
processo 5
processo 5
processo 5
processo 5
processo 9
processo 9
processo 8
processo 2
processo 3
processo 2
processo 2
processo 2
18
❚ Com código absoluto
❙ Um processo só pode ser carregado na área de memória (partição) para a
qual foi compilado
❙ Pode haver disputa por uma partição mesmo tendo outras livres
! Processo é mantido no escalonador de longo prazo (termo)
! Empregar swapping
19
❚ Com código relocável
Oliveira, Carissimi, Toscani
❙ Processos podem ser carregados em qualquer partição?
! Depende se código é absoluto ou relocável
❙ Número de processos que podem estar em execução ao mesmo tempo
! Sem swapping → igual ao número de partições (máximo)
! Com swapping → maior que 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
Instituto de Informática - UFRGS
Oliveira, Carissimi, Toscani
OS
Gerenciamento de partições fixas
❚ Memória disponível é dividida em partições de tamanho fixo que
podem ser do mesmo tamanho ou não
❚ Questões:
Instituto de Informática - UFRGS
OS
Sistemas Operacionais
Alocação contígua particionada fixa
Sistemas Operacionais
OS
❙ Um processo de tamanho menor ou igual ao tamanho da partição pode ser
carregado em qualquer partição disponível
❙ 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
20
Fragmentação Interna
Paliativo para reduzir fragmentação interna
❚ Problema da alocação fixa é uso ineficiente da memória principal
❚ Um processo, não importando quão pequeno seja, ocupa uma
partição inteira
❚ Partições de tamanho diferentes
Sist. Operacional
8M
❙ Fragmentação interna
2M
4M
8M
5M
8M
8M
Sistemas Operacionais
6M
8M
Oliveira, Carissimi, Toscani
Fragmentação
interna
Instituto de Informática - UFRGS
8M
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Sist. Operacional
21
Uma fila por partição
23
Novos
Processos
Sisop
Uma fila para
todas partições
Sisop
Novos
Processos
Oliveira, Carissimi, Toscani
❙ Partições de igual tamanho
! Não importa qual partição é utilizada
❙ Partições de diferentes tamanhos
! Atribui o processo a menor partição livre capaz de armazená-lo
! Processo são atribuídos a partições de forma a minimizar o desperdício
de memória (fragmentação interna)
Instituto de Informática - UFRGS
Oliveira, Carissimi, Toscani
22
Algoritmos para alocação de partições fixas(2)
❚ Se código é absoluto a alocação é determinada na fase de
montagem, compilação ou ligação
❚ Se código é relocável:
Instituto de Informática - UFRGS
12 M
Sistemas Operacionais
Algoritmos para alocação de partições fixas(1)
Sistemas Operacionais
8M
Sistemas Operacionais
24
Alocação particionada dinâmica
Fragmentação externa
320 K
Processo 2
224 K
Processo 3
288 K
64 K
Processo 1
Processo 3
❙ Pode haver memória disponível, mas não contígua
! Fragmentação externa
Sisop
320 K
Processo 1
320 K
224 K
Processo 4
128 K
96 K
288 K
Processo 3
288 K
64 K
64 K
Sistemas Operacionais
Criação processo 120K
25
Processo 4
128 K
96 K
Processo 3
288 K
64 K
26
❚ Determinar qual área de memória livre será alocada a um processo
❚ Sistema operacional mantém uma lista de lacunas
❙ 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
❙ Pedaços de espaços livres em memória
❚ Necessidade de percorrer a lista de lacunas sempre que um
processo é criado
❚ Acionado somente quando ocorre fragmentação
❚ Necessidade de código relocável
27
❙ Como percorrer essa lista??
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Oliveira, Carissimi, Toscani
320 K
Gerenciamento de partições dinâmicas
❚ Reunir espaços adjacentes de memória
❚ Empregar compactação
Instituto de Informática - UFRGS
Processo 1
Sistemas Operacionais
Soluções possíveis fragmentação externa
Sistemas Operacionais
SisOp
Exemplo:
Oliveira, Carissimi, Toscani
Processo 1
SisOp
❚ A execução de processos pode criar pedaços livres de memória
Instituto de Informática - UFRGS
SisOp
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Objetivo é eliminar a fragmentação interna
❚ Processos alocam memória de acordo com suas necessidades
❚ Partições são em número e tamanho variáveis
Sistemas Operacionais
28
Algoritmos para alocação contígua dinâmica
Exemplos: Algoritmos alocação contígua dinâmica
❚ Best fit
A
❙ tam_bloco > tam_processo
❚ Circular fit
❙ Variação do first-fit
29
Sistemas Operacionais
C
30k
C
30k
SisOp
SisOp
SisOp
Best-fit
Worst-fit
First-Fit
30
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
SisOp
Processo 1
320 K
Processo 4
128 K
96 K
Processo 3
288 K
64 K
31
Oliveira, Carissimi, Toscani
❙
Instituto de Informática - UFRGS
Oliveira, Carissimi, Toscani
C
❚ Reunir espaços adjacentes de memória
❚ Empregar compactação
❙ Pode haver memória livre, mas não contígua
! Fragmentação externa
Instituto de Informática - UFRGS
40k
Soluções possíveis para fragmentação externa
❚ Tende a criar lacunas de memória livres que individualmente podem
não ser suficientes para acomodar um processo
Sistemas Operacionais
A
Sistemas Operacionais
Desvantagem de partições variáveis
Criação processo 120k
SisOp
A
40k
30k
30k
20k
A
C
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ First fit
20k
40k
40k
❙ Maximizar tam_processo - tam_bloco
❙ Deixar espaços livres os maiores possíveis
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Worst fit
Exemplo:
20k
20k
❙ Minimizar tam_processo - tam_bloco
❙ Deixar espaços livres os menores possíveis
❚ Acionado somente quando ocorre fragmentação
❚ Necessidade de código relocável
Sistemas Operacionais
32
Swapping (1)
Swapping (2)
❚ Tempo do swap é proporcional ao tamanho do processo
❚ Processo necessita estar na memória para ser executado
❙ Se não há mais espaço em memória é necessário fazer um rodizio de
processos em memória
❙ Possui influência na troca de contexto
! Política de swapping
! Escalonador de médio prazo (termo)
Memória
❚ Atenção!!! Processos que realizam E/S
Swap in
P2
❚ Memória secundária suficientemente grande para armazenar cópias
de todos os processos de usuários → backing store
Sistemas Operacionais
❙ Nunca realizar swap em processos que estão com E/S pendente
❙ Utilizar buffers de E/S internos ao sistema
! Evitar que o E/S seja transferido a endereços de memória inválidos
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
P1
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Swap out
33
Sistemas Operacionais
Leituras complementares
❚ Problemas com alocação particionada
❙ Necessidade de uma área contígua de memória (tamanho do processo)
❙ Fragmentação interna (partições fixas) ou externa (partições variáveis)
Capítulo 6, seções 6.2 e 6.3
Instituto de Informática - UFRGS
❙ Capítulo 8, Seção 8.4
35
Oliveira, Carissimi, Toscani
❚ 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
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ A. Silberchatz, P. Galvin Operating System Concepts AddisonWesley. 4th edition.
Sistemas Operacionais
34
Introdução
❚ R. Oliveira, A. Carissimi, S. Toscani Sistemas Operacionais Editora
Sagra-Luzzato, 2001.
❙
❚ Existem variantes do sistema de swapping utilizados em sistemas
como UNIX ou Microsoft Windows
❙ 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
❚ Suposição: para ser executado o processo necessita estar
completamente carregado em memória
Sistemas Operacionais
36
Paginação (1)
Paginação (2)
❚ Para executar um processo de n páginas, basta encontrar n frames
livres na memória
❚ A memória física (sistema) e a memória lógica (processo) são
dividos em blocos de tamanho fixo e idênticos
❙ Memória física dividida em blocos de tamanho fixo denominados de frames
❙ Memória lógica dividide em blocos de tamanho fixo denominados de páginas
❙ Páginas são carregadas em qualquer frame livre
❚ Necessidade de traduzir endereços lógicos (páginas) em endereços
físicos (frames)
1
2
0
1
2
3
4
3
5
Processo A
6
7
37
Sistemas Operacionais
Frame
0
Página
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Elimina a fragmentação externa e reduz a fragmentação interna
Sistemas Operacionais
Paginação: Endereço lógico
38
Tradução de endereço lógico em endereço físico
❚ Endereço lógico é dividido em duas componentes:
Memória RAM
Página
0
E
d
1
p
E=p+d
p = E div P
d = E mod P
m bits
E
p
d
m-n
n
2
3
Processo A
Sistemas Operacionais
39
CPU
End.
lógico
p
d
f
d
End.
Físico
Página/Frame
f
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Tamanho da página (P) pode assumir qualquer tamanho porém
emprega-se um tamanho potência de 2 para facilitar operações div
e mod
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙ Número da página
❙ Deslocamento dentro de uma página
Tabela de páginas
Sistemas Operacionais
40
Exemplo de paginação (1)
Exemplo de paginação (2)
❚ Características do sistema:
End. lógico
❙ Memória física: 64 kbytes (16 bits)
❙ Tamanho processo (máx): 32 kbytes (15 bits)
❙ Páginas 8 kbytes
CPU
2
13
0
C98
000 1100 1001 1000
2000
16 bits
p
d
2
13
End.
Físico
f
d
3
13
Sistemas Operacionais
41
100
x
x
x
5
A000
6
C000
E000
7
Memória física
42
❚ Páginas grandes significam
❙ Processos compostos por menos páginas (tabela de páginas menores)
❙ Aumento da fragmentação interna na última página
❚ Páginas pequenas significam
Instituto de Informática - UFRGS
❙ Visão do usuário: espaço de endereçamento contíguo
❙ Visão do sistema: processo é «esparramado » na memória física
Oliveira, Carissimi, Toscani
13
4
8000
Tamanho da página
Paginação é um tipo de relocação (via hardware)
Não gera fragmentação externa
Fragmentação interna é restrita apenas a última página
Importante:
❚ n páginas são alocadas a n frames implicando na criação de uma
tabela de correspondência
❙ Tabela de páginas
❚ Facilita implementação de proteção e compartilhamento
Sistemas Operacionais
3
6000
0 1100 1001 1000
Sistemas Operacionais
Características da paginação
Instituto de Informática - UFRGS
3
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
15 bits
100
2
4000
End. físico
43
❙ Processos compostos por mais páginas (tabela de página maiores)
❙ Diminuição da fragmentação interna na última página
Oliveira, Carissimi, Toscani
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙ Número de frames: 64/8 = 8 (0 a 7) → 3 bits
❙ Número de páginas: 32/8 = 4 (0 a 3) → 2 bits
❙ Deslocamento: 8 kbytes → 13 bits
❚
❚
❚
❚
0
1
0000
C98
❚ Paginação:
End.
Lógico
Frame
End.
❚ Objetivos conflitantes
❚ Tamanho da página é imposto pelo hardware (MMU)
❙ Valores típicos variam entre 1 kbyte e 8 kbytes
Sistemas Operacionais
44
Questões relacionadas com a gerência de páginas
Proteção
❚ Proteção de acesso é garantida por definição:
❙ Processos acessam somente suas páginas → end. válidos
❙ 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
❙ Garantir acessos autorizados a uma posição de memória
! e.g.: páginas read-only, read-write, etc.
❙ 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
❚ Bit de validade:
❙ Página pertence ou não ao end. lógico do processo
45
Sistemas Operacionais
Sistemas Operacionais
Exemplo de proteção
End.
❚ Código compartilhado
Frame
4000
Tabela de
páginas
6000
Pag.0
Pag.3
8000
A000
C000
Oliveira, Carissimi, Toscani
E000
Pag.2
1
2
❚ Dados e código próprios
3
4
5
6
7
Memória física
47
❙ Cada processo possui sua própria área de código e seus dados
Oliveira, Carissimi, Toscani
Pag.1
2000
Processo
❙ Uma cópia do código (read-only, re-entrante) pode ser compartilhada entre
vários processos (e.g.; editores de texto, compiladores, etc...)
❙ O código compartilhado pertence ao espaço lógico de todos os processos
0
Instituto de Informática - UFRGS
0000
Sistemas Operacionais
46
Compartilhamento de páginas
válido
P0
Instituto de Informática - UFRGS
❙ Indicação se a página é de leitura, escrita ou executável
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Inclusão de bits de controle na tabela de página (por entrada)
❚ Inclusão de mecanismos de compartilhamento
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ A gerência de memória deve manter controle de áreas livres e
ocupadas
❚ Inclusão de mecanismos de proteção
Sistemas Operacionais
48
Exemplo de compartilhamento
Implementação da tabela de páginas
❚ Sistema operacional deve manter :
Válido/Compartilhado
End.
2000
P1
4000
P0
6000
8000
P0/P1
1
2
❚ Como implementar a tabela de páginas?
3
4
A000
Válido/Compartilhado
5
P3
C000
6
P3
E000
7
P2
Memória física
Processo 2
Tabela de
páginas
Sistemas Operacionais
❙ Registradores
❙ Memória
Oliveira, Carissimi, Toscani
Tabela de
páginas
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Processo 1
❙ Frames livres/alocados
❙ Número de frames e de páginas de um processo
❙ Uma entrada para cada frame e para cada processo
0
Instituto de Informática - UFRGS
0000
Frame
49
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
❙ No descritor de processo devem ser mantidas cópias dos registradores
! Troca de contexto: atualização dos registradores
❙ Page-table base register (PTBR): início da tabela de páginas
❙ Page-table length register (PTLR): tamanho em número de entradas.
❚ Cada acesso a dado/instrução necessita, no mínimo, dois acessos a
memória
51
❙ Número de acesso depende da largura da entrada da tabela de página e de
como a memória é acessada (byte, word, etc...)
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Desvantagem é o número de registradores
Sistemas Operacionais
50
Sistemas Operacionais
End. lógico
End. físico
+
PTBR
Sistemas Operacionais
Acesso 1
(frame da página)
Acesso 2
(dado/instr.)
52
Registradores associativos
❚ Uma espécie de meio termo entre implementação via registradores
e via memória
❚ Baseada em uma memória cache especial (TLB) composta por um
banco de registradores (memória associativa)
❚ Idéia é manter a tabela de páginas em memória com uma cópia
parcial da tabela em um banco de registradores (TLB)
❚ Registradores associativos permitem a busca de valores por
conteúdo, não por endereços
❙ Pesquisa paralela
❙ 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
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Key
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Translation look-aside buffers (TLBs)
53
Sistemas Operacionais
p
❙ Tempo de acesso 10 vezes menor que uma memória RAM
d
❚ Desvantagem é o seu custo
❙ Tamanho limitado (de 8 a 2048 entradas)
❙ Uma única TLB (pertence a MMU) que é compartilhada entre todos os
processos
! Apenas as páginas em uso por um processo necessitam estar na TLB
d
TLB
Oliveira, Carissimi, Toscani
Miss TLB
+
f
Tabela
de páginas
PTBR
55
❚ Um acesso é feito em duas partes:
Oliveira, Carissimi, Toscani
f
End.
Físico
Instituto de Informática - UFRGS
Hit TLB
Instituto de Informática - UFRGS
54
❚ Melhora o desempenho no acesso a tabela de páginas
Página/Frame
Sistemas Operacionais
❙ Se valor “key” está na memória associativa, se obtém valor (value).
Aspectos relacionados com o uso de TLB
Memória RAM
CPU
❚ Funcionamento:
Sistemas Operacionais
Implementação da tabela de páginas via TLB
End.
lógico
value
❙ Se página está presente na TLB (hit) a tradução é feita
❙ Se página não está presente na TLB (miss), consulta a tabela em memória e
atualiza entrada na TLB
Sistemas Operacionais
56
Hit ratio (h)
Exemplo: influência do hit ratio no desempenho
❚ Probabilidade de qualquer dado referenciado estar na memória, no
caso, na TLB
t acesso _ tlb = 20ns
)
Mem.
Mem.
[
t medio = h × t atlb + t amem + (1 − h )× t atlb + t amem + t amem
]
Sistemas Operacionais
57
hit _ ratio = 0.98
t medio = 0.98 × (120) + 0.02 × (220) = 122ns
58
❚ Processadores 80x86
❙ Como dimensionar o tamanho da tabela de páginas?
! Fixo ou variável conforme a necessidade?
❙ Como armazenar a tabela de páginas?
! Contígüo em memória → fragmentação externa
! Paginando a própria tabela
❙ End. Lógico: 4 Gbytes (32 bits)
❙ Páginas: 4 kbytes
❙ Tamanho da tabela de páginas: 4 Gbytes / 4 kbytes = 1048576 entradas
❙ Diretórios de tabela de páginas (n níveis)
❙ Tabelas de páginas
59
t
p
d
10
10
12
f
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
32 bits
❚ A paginação multinível surge como solução a esses problemas
Oliveira, Carissimi, Toscani
Mem.
Exemplo: Paginação a dois níveis
❚ Na prática as tabelas de página possuem tamanho variável
Instituto de Informática - UFRGS
Mem.
Sistemas Operacionais
Paginação multinível
Sistemas Operacionais
Mem.
hit _ ratio = 0.80
t medio = 0.80 × (120) + 0.20 × (220) = 140ns
Oliveira, Carissimi, Toscani
Mem.
Instituto de Informática - UFRGS
(
1-h
t acesso ( hit ) = 20 + 100 = 120ns
t acesso = t atlb + t amem
t acesso = t atlb + t amem + t amem
h
TLB
t acesso ( miss ) = 20 + 100 + 100 = 220ns
h
TLB
1-h
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙ Taxa de acerto: hit ratio
❙ Seu complemento é a taxa de erro: miss ratio
CPU
CPU
t acesso _ mem = 100ns
d
Memória
física
!
Diretório de tabela
de páginas
Sistemas Operacionais
!
Tabela de
páginas
60
Paginação a três níveis
Tabela de páginas invertida
❚ Típico de arquiteturas de processadores de 64 bits
Tabela de
página
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
Página
61
Sistemas Operacionais
62
❚ R. Oliveira, A. Carissimi, S. Toscani Sistemas Operacionais Editora
Sagra-Luzzato, 2001.
❙
p
i
d
Pid | p
Capítulo 6, seção 6.5
❚ A. Silberchatz, P. Galvin Operating System Concepts. 4rd edition
Addison-Wesley.
d
Instituto de Informática - UFRGS
i
Memória
física
Tabela de
páginas
Sistemas Operacionais
❙ Cada índice corresponde a um frame
Leituras complementares
Endereço
físico
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Endereço
lógico
pid
❚ Endereço lógico é formado por <process_id, página, deslocamento>
❚ Cada entrada da tabela possui <process_id; página>
❚ Tabela é pesquisada e retorna, se presente, o indice i associado a
entrada
Sistemas Operacionais
Esquema tabela de páginas invertida
CPU
Oliveira, Carissimi, Toscani
Diretório
intermediário
Nível 3
Instituto de Informática - UFRGS
Diretório
global
Nível 2
63
❙ Seção 8.5
Oliveira, Carissimi, Toscani
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
Nível 1
❚ Problema com tabela de páginas é o seu tamanho
❚ Tabela de páginas invertida surge como uma solução
Sistemas Operacionais
64
Segmentação
Esquema lógico da segmentação
1
2
3
❙ e.g.: procedimentos (funções), bibliotecas
❚ Gerência de memória pode dar suporte diretamente ao conceito de
segmentos
2
4
Oliveira, Carissimi, Toscani
❚ Um segmento pode ser uma únidade lógica
Sistemas Operacionais
65
Espaço de
usuário
Espaço físico
66
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
❙ Deslocamento dentro do segmento
❙ Tabela de segmentos
❚ Entrada na tabela de segmento:
❚ Os segmentos não necessitam ter o mesmo tamanho
❚ Existe um tamanho máximo de segmento
❚ Segmentação é similar a alocação particionada dinâmica
67
❚ Necessidade de verificar a cada acesso se ele é válido
❙ Hardware (comparador)
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙ base: endereço inicial (físico) do segmento na memória
❙ limite: tamanho do segmento
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
3
Sistemas Operacionais
Endereço lógico em segmentação
Sistemas Operacionais
4
1
Código
Dados alocados estaticamente
Dados alocados dinamicamente
Pilha
Instituto de Informática - UFRGS
❙
❙
❙
❙
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Leva em consideração a visão de programadores e compiladores
❚ Um programa é uma coleção de segmentos, tipicamente:
Sistemas Operacionais
68
Exemplo de tradução de endereço lógico em endereço
físico
Esquema de tradução da segmentação
Memória Física
Segmento 00 - Código
CPU
End.
lógico
s
00000
00001
00010
00011
00100
00101
d
Memória Lógica
C1
C2
C3
C4
C5
C6
D1
D2
D3
D4
Segmento 01 - Dados
d
Tabela de segmentos
Sistemas Operacionais
00000
00001
00010
00011
69
00000
00001
00010
P1
P2
P3
Tabela de Segmentos
Segmento
Base
Limite
00
01000
0110
01
00000
0100
10
10100
0011
P1
P2
P3
Sistemas Operacionais
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
❙ Limite e base
❚ Número de registradores impõem uma limitação prática ao tamanho
da tabela de segmentos (como na paginação)
Oliveira, Carissimi, Toscani
❙ Registradores
❙ Memória
71
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Análogo a tabela de páginas:
Sistemas Operacionais
70
❙ Cada segmento dois registradores (base e limite)
❙ No descritor do processo devem ser mantidas cópias dos registradores
! Troca de contexto: atualização dos registradores
❚ Cada segmento necessita armazenar dois valores:
Instituto de Informática - UFRGS
C1
C2
C3
C4
C5
C6
D1
D2
D3
D4
Segmento 10 - Pilha
Oliveira, Carissimi, Toscani
s
End.
Físico
Instituto de Informática - UFRGS
<
Memória
física
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
base/limite
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
Sistemas Operacionais
72
Implementação da tabela de segmentos em memória
Problemas com implementação da tabela em memória
❙ Tabela pode ser muito grande
❙ Dois acessos a memória para acessar um dado/instrução
❚ Solução:
❙ Empregar uma TLB
Segmento é válido apenas se: s < STLR.
Sistemas Operacionais
Implementação da tabela de segmentos via TLB
CPU
❙ 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.
73
Sistemas Operacionais
End.
lógico
❚ Observação (válida também para a paginação)
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
!
❚ Problemas similares ao da paginação:
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ Tabela de segmentos armazenada em memória
❚ Segment-table base register (STBR): localização do início da tabela
de segmentos na memória
❚ Segment-table length register (STLR): indica o número de
segmentos de um processo
Aspectos de proteção e compartilhamento
❚ Os príncipios já estudados para paginação continuam válidos para a
segmentação
s
❙ e.g.; bits de proteção (rwx), bit de validade, bits de compartilhamento, etc..
d
❚ Segmentação adiciona a possibilidade de compartilhar apenas
trechos da área de código
❚ Problema associado:
Base
End.
Físico
Memória
física
d
miss
Base/limite
Tabela de segmentos
75
❙ Segmentos compartilhados devem ter a mesma identificação (entrada) na
tabela de segmentos
Oliveira, Carissimi, Toscani
TLB
<
Instituto de Informática - UFRGS
hit
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
base/limite
Sistemas Operacionais
74
Sistemas Operacionais
76
Desvantagem da segmentação
Solução para fragmentação externa
❚ A paginação é a solução natural para a fragmentação
❚ Analisar o problema sob dois pontos extremos:
❙ Um processo é um único segmento
❙ Cada byte é um segmento
! Sem fragmentação externa, nem interna
! Não viável pelos overheads envolvidos
! Similar a página de 1 byte
❚ Solução: meio termo entre os extremos
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❙ Concatenação de segmentos adjacentes
❙ Compactação da memória
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
❚ A segmentação provoca fragmentação externa quando segmentos
começam a ser liberar memória
❚ Mesmo problema de alocação partições variáveis com as mesmas
soluções:
77
Sistemas Operacionais
Sistemas Operacionais
Segmentação com paginação
❚ R. Oliveira, A. Carissimi, S. Toscani; Sistemas Operacionais. Editora
Sagra-Luzzato, 2001.
❙ Fragmentação interna: paginação apresenta, segmentação não
❙ Fragmentação externa: segmentação apresenta, paginação não
❙
p
d
!
1k
2
1
0
Segmento contento
64 páginas de 1k
Sistemas Operacionais
79
❙ Capítulo 9
❚ W. Stallings; Operating Systems. (4th edition). Prentice Hall, 2001.
❙ Capítulo 7
Oliveira, Carissimi, Toscani
s
Instituto de Informática - UFRGS
64k
Oliveira, Carissimi, Toscani
Instituto de Informática - UFRGS
63
d
Capítulo 6
❚ A. Silberchatz, P. Galvin, G. Gane; Applied Operating System
Concepts. Addison-Wesley, 2000.
❚ Solução se traduz em paginar segmentos
s
78
Leituras complementares
❚ Recuperar as vantagens dos dois métodos em relação a
fragmentação:
End. lógico
❙ 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
80
Download