cap6
20 pág.

cap6


DisciplinaSistemas Operacionais I8.357 materiais171.805 seguidores
Pré-visualização6 páginas
i
,
 
T
o
s
c
a
n
i
Paginação multinível
\u275a Na prática as tabelas de página possuem tamanho variável
\u2759 Como dimensionar o tamanho da tabela de páginas?
! Fixo ou variável conforme a necessidade?
\u2759 Como armazenar a tabela de páginas?
! Contígüo em memória \u2192 fragmentação externa
! Paginando a própria tabela
\u275a A paginação multinível surge como solução a esses problemas
\u2759 Diretórios de tabela de páginas (n níveis)
\u2759 Tabelas de páginas
Sistemas Operacionais 60
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Exemplo: Paginação a dois níveis
\u275a Processadores 80x86
\u2759 End. Lógico: 4 Gbytes (32 bits)
\u2759 Páginas: 4 kbytes
\u2759 Tamanho da tabela de páginas: 4 Gbytes / 4 kbytes = 1048576 entradas
dt
32 bits
10 12
p
10
!!!!
!!!!
df
Memória
física
Diretório de tabela 
de páginas
Tabela de
páginas
Sistemas Operacionais 61
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Paginação a três níveis
\u275a Típico de arquiteturas de processadores de 64 bits
Nível 1 Nível 2 Nível 3 deslocamento
PáginaTabela de
página
Diretório
global
Diretório
intermediário
Sistemas Operacionais 62
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Tabela de páginas invertida
\u275a Problema com tabela de páginas é o seu tamanho
\u275a Tabela de páginas invertida surge como uma solução
\u2759 Uma tabela de páginas para todo o sistema (não mais por processo)
\u2759 Uma entrada para cada frame
\u2759 Endereço lógico da página e a qual processo pertence
\u275a Endereço lógico é formado por <process_id, página, deslocamento>
\u275a Cada entrada da tabela possui <process_id; página>
\u275a Tabela é pesquisada e retorna, se presente, o indice i associado a
entrada
\u2759 Cada índice corresponde a um frame
Sistemas Operacionais 63
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Esquema tabela de páginas invertida
CPU pid d
Tabela de
páginas
Pid | p
i d
Memória
física
Endereço
lógico
Endereço
físico
p
i
Sistemas Operacionais 64
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Leituras complementares
\u275a R. Oliveira, A. Carissimi, S. Toscani Sistemas Operacionais Editora
Sagra-Luzzato, 2001.
\u2759 Capítulo 6, seção 6.5
\u275a A. Silberchatz, P. Galvin Operating System Concepts. 4rd edition
Addison-Wesley.
\u2759 Seção 8.5
Sistemas Operacionais 65
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Segmentação
\u275a Leva em consideração a visão de programadores e compiladores
\u275a Um programa é uma coleção de segmentos, tipicamente:
\u2759 Código
\u2759 Dados alocados estaticamente
\u2759 Dados alocados dinamicamente
\u2759 Pilha
\u275a Um segmento pode ser uma únidade lógica
\u2759 e.g.: procedimentos (funções), bibliotecas
\u275a Gerência de memória pode dar suporte diretamente ao conceito de
segmentos
Sistemas Operacionais 66
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Esquema lógico da segmentação
1
3
2
4
1
4
2
3
Espaço de 
usuário 
Espaço físico
Sistemas Operacionais 67
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Endereço lógico em segmentação
\u275a Endereço lógico é composto por duas partes:
\u2759 Número de segmento
\u2759 Deslocamento dentro do segmento
\u275a Os segmentos não necessitam ter o mesmo tamanho
\u275a Existe um tamanho máximo de segmento
\u275a Segmentação é similar a alocação particionada dinâmica
Sistemas Operacionais 68
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Tradução de endereço lógico em endereço físico
\u275a Tradução é feita de forma similar a paginação (via tabela)
\u2759 Tabela de segmentos
\u275a Entrada na tabela de segmento:
\u2759 base: endereço inicial (físico) do segmento na memória
\u2759 limite: tamanho do segmento
\u275a Necessidade de verificar a cada acesso se ele é válido
\u2759 Hardware (comparador)
Sistemas Operacionais 69
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Esquema de tradução da segmentação
Memória
físicaEnd. 
Físico
s dCPU
End. 
lógico
base/limite
Tabela de segmentos
<
s d
Sistemas Operacionais 70
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Exemplo de tradução de endereço lógico em endereço
físico
Memória Lógica
Memória Física
00000
00001
00010
00011
00100
00101
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
10000
10001
10010
10011
01100
01101
01110
01111
10100
10101
10110
10111
C1
C2
C3
C4
P1
P2
P3
D1
D2
D3
D4
Tabela de Segmentos
Segmento Base
00
01
10
01000
00000
10100
C1
C2
C3
C4
C5
C6
Limite
C5
C6
0110
0100
0011
00000
00001
00010
00011
D1
D2
D3
D4
00000
00001
00010
P1
P2
P3
Segmento 00 - Código
Segmento 01 - Dados
Segmento 10 - Pilha
Sistemas Operacionais 71
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Implementação da tabela de segmentos
\u275a Construção de uma tabela de segmentos
\u2759 Cada segmento corresponde a uma entrada na tabela
\u275a Cada segmento necessita armazenar dois valores:
\u2759 Limite e base
\u275a Análogo a tabela de páginas:
\u2759 Registradores
\u2759 Memória
Sistemas Operacionais 72
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Implementação da tabela de segmentos via registradores
\u275a Tabela de segmentos é mantida por um conjunto de registradores
\u2759 Cada segmento dois registradores (base e limite)
\u2759 No descritor do processo devem ser mantidas cópias dos registradores
! Troca de contexto: atualização dos registradores
\u275a Número de registradores impõem uma limitação prática ao tamanho
da tabela de segmentos (como na paginação)
Sistemas Operacionais 73
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Implementação da tabela de segmentos em memória
\u275a Tabela de segmentos armazenada em memória
\u275a Segment-table base register (STBR): localização do início da tabela
de segmentos na memória
\u275a Segment-table length register (STLR): indica o número de
segmentos de um processo
! Segmento é válido apenas se: s < STLR.
Sistemas Operacionais 74
I
n
s
t
i
t
u
t
o
 
d
e
 
I
n
f
o
r
m
á
t
i
c
a
 
-
 
U
F
R
G
S
O
l
i
v
e
i
r
a
,
 
C
a
r
i
s
s
i
m
i
,
 
T
o
s
c
a
n
i
Problemas com implementação da tabela em memória
\u275a Problemas similares ao da paginação:
\u2759 Tabela pode ser muito grande
\u2759 Dois acessos a memória para acessar um dado/instrução
\u275a Solução:
\u2759 Empregar uma TLB
\u275a Observação (válida também para a paginação)
\u2759 A consulta a tabela em memória provoca no mínimo 2 acessos a memória,
pois uma entrada na tabela pode representar