Академический Документы
Профессиональный Документы
Культура Документы
●
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
●
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)
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
●
Í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