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

Projeto de Algoritmos II

Pesquisa em memória secundária

Prof. Reginaldo Santos


1 / 38
Agenda


Recapitulando: registro, chave e arquivo

Introdução a pesquisa em memória secundária

Modelo computacional para memória secundária
– Memória virtual
– Sistema de paginação
– Algoritmos para remoção de páginas

Arquivo indexado

Tipos de índices

Acesso sequencial indexado

2 / 38
Recapitulando: registro, chave e
arquivo


A informação é dividida em registros

Cada registro possui uma chave para ser usada na
pesquisa

O objetivo da pesquisa é encontrar uma ou mais
ocorrências de registros com chaves iguais à chave de
pesquisa
– Encontrou registro: pesquisa com sucesso
– Não encontrou registro: pesquisa sem sucesso

Um conjunto de registros é chamado de tabela ou
arquivo

3 / 38
Recapitulando: registro, chave e
arquivo

Registro

Arquivo ou
Tabela
Chave 7

4 / 38
Introdução a pesquisa em memória
secundária


Envolve arquivos contendo um número de registros
maior do que o número que a memória interna
pode armazenar

Aspectos importantes:
– Custo para acessar um registro é maior do que o custo
de processamento na memória primária

A medida de complexidade está relacionada com o
custo de transferir dados entre a memória principal
e secundária

Deve-se minimizar o número de vezes que
cada registro é transferido entre memória interna e
memória externa
5 / 38
Introdução a pesquisa em memória
secundária


Aspectos importantes
– Apenas um registro pode ser acessado em um
dado momento, ao contrário das memórias
primárias, que permitem acesso a qualquer registro de
um arquivo a um custo uniforme

Fita magnética: acesso de forma sequencial

Disco magnético: acesso direto, mas a um custo
maior do que acessá-los sequencialmente
• O S.O. divide o arquivo em blocos, cada bloco
constituído de vários registros
• A leitura de um único registro implica a
transferência de todos os registros de um bloco
para a memória principal 6 / 38
Introdução a pesquisa em memória
secundária

Bloco

7 / 38
Introdução a pesquisa em memória
secundária

Bloco

Exemplo de índice esparso 8 / 38


Introdução a pesquisa em memória
secundária


Aspectos importantes:
– Métodos eficientes de pesquisa dependem do
hardware e do S.O.

A transferência de blocos entre as memórias
primária e secundária deve ser tão eficiente quanto
as características dos equipamentos disponíveis

9 / 38
Modelo de computação para memória
secundária


Memória virtual é implementada pelo S.O.
– Entender o funcionamento facilita a implementação de
algoritmos eficientes para pesquisa em memória
secundária
– Velocidade versus custo

pequena quantidade de memória principal com
memória secundária muito maior
– Apenas informações na memória principal
podem ser acessadas diretamente
– Por tanto, a organização entre o fluxo de informação
entre as duas memórias é importante

10 / 38
Modelo de computação para memória
secundária

E
11 / 38
Memória virtual


A ideia é transformar o endereço usado pelo programador
na correspondente localização física da memória

Deve-se distinguir:
– Mapeamento de endereços: f: N → M

Espaço de endereçamento N: endereços usados pelo programador

Espaço de memória M: localizações de memória no computador

O programador pode usar um espaço de endereçamento
que pode ser maior que o espaço de memória principal
disponível

Sistema de paginação: implementação mais utilizada

12 / 38
Sistema de paginação


Espaço de endereçamento dividido em páginas de igual
tamanho

Memória principal é dividida em moldura de páginas de
igual tamanho

Moldura de páginas contém algumas páginas ativas

Páginas inativas estão na memória secundária

Mecanismo de paginação tem duas funções:
– Mapeamento de endereços: determinar qual página
está sendo usada e encontrar a moldura (se existir)
– Transferência das páginas entre memória primária e
secundária
13 / 38
Sistema de paginação


Mapeamento de endereços
– Ex.:

Espaço de endereçamento com 24 bits
– 15 bits → para o número da página
– 9 bits → para o número do byte dentro da página

Tamanho da página 512 bytes (29: 9 bits)
– O mapeamento por meio de uma tabela de páginas
(cada processo tem uma tabela de páginas):
f (e)=f ( p ,b)= p' +b
onde e é o endereço de programa (número de página
p e número do byte b)
14 / 38
f (e)=f ( p ,b)=p'+b

Moldura de página 15 / 38
16 / 38
17 / 38
18 / 38
Sistema de paginação


Se p’ = nill, o número de página não está disponível na
memória principal
– A página deve ser trazida da memória secundária para
a memória primária, atualizando a tabela de páginas

Se não existir espaço na moldura de página para
receber uma nova página no disco, então alguma outra
página tem de ser removida da memória principal para
abrir espaço
– É comum remover a página que não será referenciada
pelo período de tempo mais longo

19 / 38
Sistema de paginação


Algoritmos comuns para a escolha da página a ser
removida
– Menos recentemente utilizada (Least Recently
Used – LRU)

– Menos frequentemente utilizada (Least


Frequenly used – LFU)

– Ordem de chegada (First In First Out - FIFO)

20 / 38
Menos recentemente utilizada (LRU)


Um dos algoritmos mais utilizados

Remove a página menos recentemente utilizada

Registra a sequência de acesso a todas as páginas

Implementado por uma fila de moldura de páginas

Toda vez que uma página é utilizada, ela é movida para o
fim da fila

A página que está na moldura do início da fila é a página
LRU

21 / 38
Menos recentemente utilizada (LRU)

22 / 38
Menos frequentemente utilizada
(LFU)


Remove a página menos frequentemente utilizada

Deve-se registrar o número de acessos a todas as páginas

Inconveniente: uma página recentemente trazida da
memória secundária tem um baixo número de acessos
registrados e pode ser removida

23 / 38
Ordem de chegada (FIFO)


Remove a página que está residente há mais tempo

Algoritmo mais simples e barato de manter

Desvantagem: ignora o fato de que a página mais antiga
pode ser a mais referenciada

24 / 38
Resumindo


Em um sistema de memória virtual, o programador pode
endereçar grandes quantidades de dados, deixando para
o S.O. a responsabilidade de transferir o dado da memória
secundária para a memória principal

25 / 38
Arquivo indexado


É um arquivo que possui um ou mais índices que
permitem acesso aleatório a um registro, dada uma
determinada chave

26 / 38
Tipos de índices


Tipos de índices
– Primários ou secundários
– Diretos ou indiretos
– Densos ou esparsos

27 / 38
Tipos de índices


Índices primários seguem a mesma ordem do arquivo
de dados
– Podem ou não ser baseado na chave primária
– Podem apontar para blocos de registros

Índices secundários não seguem a mesma ordem do
arquivo de dados

Primário Arquivo de dados Secundário 28 / 38


Tipos de índices


Índices diretos aponta diretamente para a posição do
registro no arquivo de dados

Índices indiretos aponta para um índice direto,
normalmente, baseado na chave primária (que por sua
vez, aponta para o arquivo de dados)

29 / 38
Tipos de índices


Ex.: índice direto

30 / 38
Tipos de índices


Ex.: índice indireto

31 / 38
Tipos de índices


Índices densos possuem uma entrada para cada registro
no arquivo de dados

Índices esparsos possuem entradas para apenas alguns
registros (agrupamento)

32 / 38
Acesso sequencial indexado


Utiliza o princípio da pesquisa sequencial

A partir do primeiro, cada registro é lido sequencialmente
até encontrar chave maior ou igual à chave procurada
– O arquivo deve ser ordenado pelo campo chave do
registro
– Um arquivo de índices contém pares de valores

(x, p)
onde x = chave e p = endereço da página

33 / 38
Acesso sequencial indexado

Disco magnético
– Contem várias superfícies de gravação
– É divido em círculos concêntricos: trilhas
– Quando o mecanismo de acesso está posicionado em
determinada trilha, todas as tilhas verticalmente
alinhadas formam um cilindro
– Uma referência a um registro que se encontra em
qualquer página de qualquer trilha do cilindro não
requer o deslocamento do mecanismo de acesso
– Latência rotacional: tempo necessário para que o
início do bloco que contém o registro a ser lido passe
pela cabeça de leitura/gravação
– Tempo de busca: tempo associado ao deslocar o
mecanismo de acesso de uma trilha para outra 34 / 38
35 / 38
36 / 38
37 / 38
Acesso sequencial indexado


Encontrando um registro no disco magnético,
minimizando o número de deslocamentos do mecanismo
de acesso

Utiliza-se um esquema de índices de cilindros e de
páginas:
1) Localize o cilindro correspondente à chave de pesquisa
no índice de cilindros
2) Desloque o mecanismo de acesso até o cilindro
correspondente
3) Leia a página que contém o índice de páginas
daquele cilindro
4) Leia a página de dados que contém o registro desejado
38 / 38

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