Вы находитесь на странице: 1из 11

SOA

Memória Virtual
Memória Virtual
 Motivação:
– Permite que um processo seja executado,
sem estar completamente na memória
principal;
– Permite que processos maiores que o
tamanho da memória principal sejam
executados;
Sistemas Operacionais Abertos – Aumenta a utilização da CPU;
– Diminui o overhead das operações de swap.

Memória Virtual Memória Virtual

 Implementação:
– Pode afetar de forma radical o
= + desempenho do sistema;

Memória Memória Memória


Virtual Principal Secundária
– Depende de hardware específico,
(MV) (MP) (MS) geralmente extensões de paginação ou
de segmentação.

Memória virtual: paginação e mais ...


– Um Processo não precisa estar
– Processo é dividido em páginas;
memória é dividida em quadros de inteiramente na MP (memória
mesmo tamanho; principal);
– Páginas/quadros são de pequeno – Processo não precisa ocupar área
tamanho (ex: 1K): fragmentação
contígua em memória;
interna pequena;
– Elimina fragmentação externa; – Endereços são gerados dinamicamente
– SO mantém uma tabela de páginas em tempo de execução.
por processo.

1
SOA

Paginação: endereçamento 2-level Page Table

endereço virtual
# página deslocam.
# quadro deslocam.

registrador
pont. tab. de páginas pt1 pt2 offset

# quadro

memória
principal
tabela de
páginas

Paginação: suporte de h/w Paginação: TLB


 Cada processo tem sua tabela de endereço virtual
páginas # página deslocam. memória

 TP: mapeamento página x quadro secundária

 Bit de presença
 Bit de modificação tabela de TLB
páginas
 Como funciona?
– Tabela de páginas pode estar só
parcialmente na Memória Principal; memória
principal
– Dois acessos à MP ⇒ Translation # quadro deslocam.
Lookaside Buffer (TLB)

TLB (Translation Lookaside


Buffer) Como funciona?
 Memória Associativa : –O SO traz para a MP algumas páginas
– cara, mas rápida – pesquisa paralela do programa;
 TLB: seleciona um pequeno número de –O conjunto de páginas de um processo
entradas na tabela de páginas e presentes na MP é chamado de
armazena-as na TLB conjunto residente;

Página virt modificado proteção quadro


–Quando é necessário um endereço
140 1 RW 31 que não está presente na MP, uma
20 0 RX 38 interrupção é gerada e processo é
130 1 RW 29
129 1 RW 62
colocado no estado bloqueado.

2
SOA

e ... Vantagens desta divisão


– Enquanto o SO busca a página – Mais processos (pedaços!) podem
necessária (acesso a disco), outro estar na MP;
processo é despachado;
– Mais provável de existirem processos
– Quando a página é carregada para a
na fila dos prontos;
memória, o primeiro processo passa
para a fila dos prontos; – Processos podem ser maiores que a
– Transparência para usuário; MP (tão grandes quanto a MS);
– Memória virtual. – Reduz o tempo de swapping.

Memória virtual: Segmentação Segmentação


 Programas são normalmente  Endereçamento consiste de duas
separados em módulos: unidade partes – Um número de
lógica; segmento e um offset;
 Segmentos de um programa não
precisam ser do mesmo tamanho;  Já que os segmentos são
 Existe um tamanho máximo para o desiguais, segmentação é similar
segmento; ao particionamento dinâmico.
 Usuário tem controle.

Memória segmentada Segmentação: suporte de h/w


 Segmentação:
– pode ser dinâmica;
– permite que programas sejam alterados e
recompilados independentemente;
– compartilhamento e proteção.
 Segmentação x paginação
 Segmentação pura
 Segmentação com paginação

3
SOA

Segmentação: Endereçamento Segmentação pura


endereço virtual
# seg. deslocam.
+ base + deslocamento

registrador
pont. tab. segmentos

comp. base

memória
principal
tabela de
segmentos
Compactação!

Segmentação com paginação Segmentação com paginação

# quad. desloc. memória


# seg. # pág. desloc. principal

pont. tab. seg.

+ +

tabela de
tabela de páginas
segmentos

Intel 386: segmentação e paginação Intel 386: Segmentação e paginação


 O 386 apresenta 6 registradores de segmentos cada
 No modo protegido, o 386 (e superiores) utilizam um deles com uma parte visível de 16-bits que
um esquema combinado de segmentação e armazena um seletor e uma outra parte invisível de
paginação que foi explorado pelo OS/2 (Versão de 8-bytes que contem o descritor correspondente:
32-Bits) – Isso evita a leitura da LDT/GDT a cada referencia a
 O endereço lógico é um par (seletor, offset) memória.

 O seletor contém um bit que seleciona:  O descritor contém o endereço base e o tamanho do
– Global Descriptor Table; acessível por todos processos
segmento referenciado;
– Local Descriptor Table; acessível pelo processo que a  O endereço base de 32-bits é adicionado ao offset
detém (tem-se um LDT por processo) de 32-bits, para formar um endereço linear de 32-bits
 Dois bits do seletor são para proteção, e os 13 bits (p1,p2,d), o qual é basicamente idêntico ao formato
restantes são usados para selecionar uma entrada do endereço lógico usado pelo Windows NT
de 8-bytes na LDT ou na GDT denominado – tabelas de páginas de 2 níveis indexados por p1 e p2 (10
bits cada um)
descritor

4
SOA

Intel 386: segmentação e paginação


 A segmentação pode ser desabilitada
Intel 386 limpando o endereço de base de cada
descritor de segmento;
&
 Dessa forma o offset do endereço lógico
endereça passa a ser idêntico ao endereço linear
mento (p1,p2,d)
 Esse recurso é utilizado por todos os SO que
rodam nesse tipo de plataforma e fazem uso
somente de paginação:
– Windows NT
– Versões de Unix: Linux, FreeBSD...

Memória virtual: suporte de s/w Política de busca


 Determina em que instante uma página
 Políticas:
deve ser carregada na memória
– Busca; principal.
– onde colocar pedaços na memória
 O objetivo é minimizar o número de
principal (MP);
faltas de página;
– que páginas retirar;
– tamanho do conjunto residente;
– política de limpeza;  Políticas:
– controle de carregamento; – Por demanda;
– pré-paginação (Denning, Working Set).
– qual processo suspender.

Tamanho do conjunto residente Onde colocar?


 Determina a localização das partes
 Alocação fixa:
de um processo em MP;
– cada processo recebe um número fixo
de quadros;
– em caso de falta de páginas, uma das  Usualmente é irrelevante devido à
residentes é trocada. paginação;
 Alocação variável: o número de
páginas varia durante a execução  Se segmentação pura: melhor
do processo. encaixe, primeiro encaixe, ...

5
SOA

Princípio da localidade Localidade


 Só partes de um processo serão  Localidade de referência (P. Denning,
utilizadas em um dado intervalo de 1968):
tempo; – localidade espacial:
 Localidade espacial e temporal; • se um item é referenciado, itens com endereço
próximo tendem a ser referenciados em
 Palpites inteligentes podem ser feitos seguida.
quanto as páginas que serão – localidade temporal:
necessários no futuro próximo: • se um item é referenciado, ele tenderá a ser
⇒ memória virtual pode funcionar mais referenciado novamente em breve.
eficientemente

Exemplo de localidade Paginação por Demanda


 Características:
0 reservado
exemplo ( ... ) – Os processos ficam residentes em disco e são
trazidos para a memória em páginas, na medida em
{ código do for texto que são necessárias;
... – Swap implementado por página e não a processo;
for (i=1; i<N; i++) { i – Um flag na tabela de páginas indica se a página está
a[i] = b[i] + c[i]; na memória, ou no disco;
b[i] += 2; a[ ] – MMU gera uma exceção (trap) quando uma página
dados e acessada não está na memória (page-fault);
} b[ ]
pilha – Utilizado no UNIX BSD, Linux, XP.
... c[ ]
}
 Hardware necessário à implementação:
– MMU;
– Swap.
N-1
memória

Paginação por Demanda Paginação por Demanda


 Exceções em arquiteturas CISC: Memória

– Instruções de arquiteturas CISC freqüentemente Memória Swap Swap


3
manipulam blocos de dados;
S.O.
– Interrupções podem então ocorrer no meio de uma
instrução (page-fault) PT 2
1
load [mem] d
 Soluções: 6
5
– Retornar os dados ao estado original e recomeçar a free 4 1 - referência
instrução; 2 - page-fault
3 - requisita I/O
– Continuar a instrução após o retorno do tratador de 4 - page-in
page-fault. 5 - atualiza page table
6 - reinicia a instrução

6
SOA

Passos Envolvidos em um Page-Fault Desempenho da Paginação por


1 - Page-fautl trap:
2 - Salva contexto:
1 µs
10 µs
Demanda
3 - Identifica page-fault: 1 µs
4 - Localiza página no disco: 50 µs
5 - Lê página do disco: 10 ms  Fórmula:
5.1 - Fila de espera: 0s
5.2 - Seek: 7 ms tea = tempo efetivo de acesso
5.3 - Latência: 2 ms
5.4 - Transferência: 1 ms tam = tempo de acesso à memória RAM
6 - Escalona novo processo: 15 µs
7 - Interrupção do disco: 1µs
tpf = tempo para atender um page-fault
8 - Salva contexto: 10 µs p = probabilidade de ocorrência de p-f
9 - Identifica fim de I/O: 1 µs
10 - Atualiza a tabela de páginas: 15 µs
11 - Espera na fila Ready: 0s
12 - Escalonamento processo: 15 µs tea = (1 - p) x tam + p x tpf
TOTAL 10,109 ms

Desempenho da Paginação por Demanda Substituição de Páginas


 Exemplo: – Quando não existem mais frames livres,
tam = 50 ns o SO escolhe um frame ocupado para ser
tpf = 10 ms = 10.000.000 ns
substituído (vítima);

tea = (1 - p) x 50 + p x 10.000.000
tea = 50 + 9.999.950 x p  Algoritmos de substituição de páginas:
– Minimizar taxa de page-fault;
p = 0.001 -> tea = 10 µs
– Minimizar I/O.
tea = 50 ns então p < 0,000.005 ou
1 / 200.000

Substituição de Páginas FIFO (First-In First-Out)


 Dirty bit ou bit de modificação:  Características:
– Para evitar que todas as páginas – É salvo o instante em que a página foi para a
memória;
substituídas tenham de ser gravadas em – Substitui-se a página há mais tempo na memória.
disco;  Implementação:
– Cada entrada da tabela de páginas possui – Tabela de páginas é uma fila FIFO.
um dirty bit;  Exemplo:
– MMU seta sempre que a página foi alterada; Acessos 15 pf
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
– Somente as páginas alteradas precisam ser 7 7 7 2 2 2 4 4 4 0 0 0 7 7 7

gravadas no disco. 0 0 0 3 3 3 2 2 2 1 1 1 0 0
1 1 1 0 0 0 3 3 3 2 2 2 1

7
SOA

FIFO (First-In First-Out) Algoritmo Ótimo ou OPT


 Anomalia de Belady:  Características:
– Apresenta a menor taxa de falta de página e nunca
– Nem sempre se diminui a taxa de page- sofrerá da anomalia de Belady;
fault, aumentando a memória MP. – Substitui-se a página que não será usada pelo
período mais longo de tempo;
Acessos 9 pf
1 2 3 4 1 2 5 1 2 3 4 5
– Não implementável (conhecimento do futuro).
1 1 1 4 4 4 5 5 5
 Exemplo:
2 2 2 1 1 1 3 3
3 3 3 2 2 2 4

Acessos 10 pf Acessos 9 pf
1 2 3 4 1 2 5 1 2 3 4 5 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
1 1 1 1 5 5 5 5 4 4 7 7 7 2 2 2 2 2 7
2 2 2 2 1 1 1 1 5 0 0 0 0 4 0 0 0
3 3 3 3 2 2 2 2 1 1 3 3 3 1 1
4 4 4 4 4 3 3 3

LRU (Least Recently Used) LRU (Least Recently Used)


 Características:
– Usa o passado próximo para estimar o futuro;
 Exemplo:
– Substitui-se a página que há mais tempo não é
referenciada.
Acessos 12 pf
– Diferença entre LRU e FIFO: 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
• LRU utiliza a data em que a página foi utilizada; 7 7 7 2 2 4 4 4 0 1 1 1
• FIFO utiliza a data em que a página foi carregada. 0 0 0 0 0 0 3 3 3 0 0
1 1 3 3 2 2 2 2 2 7
 Implementação:
– Registrador de tempo para cada página;
– Bit de referência setado pela MMU;
– Lista encadeada de páginas.

Aproximações de LRU Aproximações de LRU


 Palavra de referência:  LFU (Least Frequently Used):
– A cada acesso desloca-se o bit de – Contador de referências incrementado a cada
referência para uma palavra de referência; acesso;
– Substitui-se a página com menor palavra de – Substitui-se a página com menor contador.
referência.  Bits de referência e modificação:
– Substitui-se a página do grupo de mais baixa
ordem:
 Segunda chance:
Ref Mod Estado
– Fila circular (FIFO); 0 0 não usada e não modificada <=Melhor escolha
– Se o bit de referência for zero então 0 1 não usada e modificada para substituição
substitui-se a página, senão zera-se o bit de 1 0 usada e não modificada
referência e testa-se a próxima página. 1 1 usada e modificada

8
SOA

Critérios de Alocação de Frames Critérios de Alocação de Frames


 Substituição Global:  Número mínimo de frames:
– Um processo seleciona a pagina a ser – Depende da arquitetura da máquina;
substituída do conjunto de todos os frames; – Uma única instrução pode estar parte em uma
um processo pode substituir um frame de página, parte em outra;
um outro. – Os argumentos de uma instrução podem estar em
páginas distintas;
– Instruções devem ser recomeçadas depois de um
 Substituição Local: page-fault.
– Cada processo seleciona páginas de seu  Quantidade de frames de um processo:
próprio conjunto de paginas alocadas. – Proporcional ao seu tamanho;
– Igualitária.

Critérios de Alocação de Frames Thrashing


 Um processo está thrashing se ele gasta
mais tempo substituindo páginas do que
 Interferência entre processos: executando;
 Causas do thrashing:
– Um processo pode causar a – O SO monitora o grau de utilização da CPU e
substituição de um frame originalmente aumenta o grau de multiprogramação quando este
está baixo;
alocado a outro processo; – Se a CPU estava pouco ocupada porque alguns
processos geravam um elevado número de page-
– Um processo está restrito ao seu faults, aumentar o grau de multiprogramação
causará trashing.
conjunto de frames.  Trashing só ocorre se um processo puder
roubar frames dos demais.

Diagrama de Thrashing Thrashing


Prevenção de thrashing:
Utilização da CPU

Thrashing


– Processos apresentam localidade de acesso


à memória;

Grau de Multiprogramação
– A cada instante, um processo possui um
conjunto de trabalho de frames;
 Por que a paginação funciona?
 Conceito de Localidade: – O SO deve garantir a cada processo uma
– Processo migra de uma localidade para outra. quantidade de frames grande o bastante
– Localidade podem se sobrepor. para conter seu conjunto de trabalho num
– Por que ocorre o thrashing?
Σ tamanho das localidades > tamanho total da memória determinado instante.

9
SOA

Outras Considerações Outras Considerações

 Carga de processos:  Cuidado com resultado de I/O:


– Lock Bit para impedir a substituição de páginas que
– Por demanda;
vão receber dados de I/O.
– De uma só vez para a memória principal;
– De uma só vez para o disco de Swap.
 Cuidado com a estrutura dos programas:
 Tamanho da página: – Apesar da paginação ser transparente, a forma
– Grande -> menos page-fault, menos I/O, como um programa é gerado pode otimizar a
menos tabelas; substituição de páginas.
– Pequena -> menos fragmentação interna.

SO comerciais & Mem. Virtual SO comerciais & MV


 Windows NT
• Tamanho da página 4KB;
• Espaço de endereçamento de 32-bits;
 OS/2 Versão 2.0 • Espaço de Swap alocado a medida em que é necessário;
• Algoritmo de substituição de páginas: FIFO;
• Tamanho da página 4KB; • Utiliza paginação sob demanda com clustering. O Clustering
traz também as páginas ao redor da pagina em falta.
• Espaço de endereçamento de 32- • Processos apresentam um valor mínimo e um máximo de
paginas garantidos de estarem na memória.
bits;
• Um processo pode ter tantas páginas em memória quanto for o
• Tabela de páginas com dois níveis; seu valor máximo.
• Quando a quantidade de memória do sistema fica abaixo de
um valor mínimo, um procedimento chamado automatic
working set trimming é executado para liberar memória.
• Working set trimming remove paginas dos processos que
tenham páginas em quantidade superior ao valor mínimo
definido.

SO comerciais & MV (cont) SO comerciais & MV (cont)


 Mach & OSF/1 – UNIX 4.3 BSD: 2-handed clock replacement
• Goals: flexible sharing; large, sparse address space; – UNIX 4.4 BSD: based on Mach VM architecture.
memory-mapped files; user control of page replacement
– DEC VMS: local FIFO with standby list.
• Object-oriented approach, even in memory system.
• Global FIFO replacement with a standby list. – Macintosh: second-chance clock replacement.
• Copy-on-write. – IBM MVS: 4 KB page size; 3-level paging.
• Clustered paging.
 UNIX System V Release 4  Comandos UNIX úteis para acompanhar o
• 2-handed clock page replacement estado da paginação:
• Address space divided into segments (but it is not a
segmented VM system; it is paged). – top
• Mostly hardware independent implementation. – vmstat
• Clustered paging. – monitor (AIX only)

10
SOA

Windows 2000 Virtual Memory Windows 2000 Virtual Memory


 Uses paging only (no segmentation), with a  Virtual addresses (p1, p2, d) use 32 bits
4KB page size where p1 and p2 are each 10 bits wide
 Each process has 2 levels of page tables: – p1 selects an entry in the page directory
– a page directory containing 1024 page-directory which points to a page table
entries (PDEs) of 4 bytes each – p2 selects an entry in this page table which
– each page-directory entry points to a page table points to the selected page
that contains 1024 page-table entries (PTEs) of 4  Upon process creation, W2K commits only
bytes each a certain number of virtual pages to a
– so we have 4MB of page tables per process process and reserves a certain number of
– the page directory is in main memory but page other pages for future needs
tables containing PTEs are swapped in and out  Hence, a group of bits in each PTE
as needed indicates if the corresponding page is
committed, reserved or not used

Windows 2000 Virtual Memory


 A memory reference to an unused page
traps into the OS (protection violation)
 Each PTE also contains:
– a present bit
• If set: 20 bits are used for the frame address
of the selected page.
• Else these bits are used to locate the
selected page in a paging file (on disk)
– some bits identifying the paging file used
– a dirty bit (i.e., a modified bit)
– some protection bits (ex: read-only, or read-
write)

11

Вам также может понравиться