38
Pesquisa em Memória Secundária Prof. Jonas Potros

Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

  • Upload
    vunhu

  • View
    232

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Pesquisa em Memória Secundária

Prof. Jonas Potros

Page 2: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Pesquisa em Memória Secundária

Pesquisa em memória secundária: arquivos que contém mais

registros do que a memória interna pode armazenar.

Algoritmos e estruturas de dados para o processamento em memória

secundária deve considerara alguns aspectos:

Custo para acessar um registro é algumas ordens de grandeza maior do que o

custo de processamento na memória primária.

Page 3: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Pesquisa em Memória Secundária

Medida de complexidade: custo de transferir dados entre a memóriaprincipal e secundária (minimizar o número de transferências).

Exemplo: o tempo necessário para a localização e a leitura de um número inteiro em discomagnético pode ser suficiente para obter a média aritmética algumas centenas de númerosinteiros ou mesmo para ordená-los na memoria principal.

Memórias secundárias: apenas um registro pode ser acessado em um dadomomento(acesso sequencial).

Memórias primárias: acesso a qualquer registro de um arquivo a um custouniforme (acesso direto).

As características da arquitetura e do sistema operacional da máquinatornam os métodos de pesquisa dependentes de parâmetros que afetamseus desempenhos.

Page 4: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Memória Virtual

Normalmente implementado como uma função do sistema operacional.

Modelo de armazenamento em dois níveis, devido à necessidade de grandes quantidades de memória e o alto custo da memória principal (principal e virtual).

Compromisso entre velocidade e custo é encontrado com uso deuma pequena quantidade de memória principal e uma grandequantidade de memória secundária.

Organização do fluxo entre a memória principal e secundária éextremamente importante.

Programador pode endereçar grandes quantidades de dados,deixando para o sistema a responsabilidade de transferir o dado damemória secundária.

Page 5: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Memória Virtual

Organização de fluxo : transformar o endereço usado pelo programador na localização física de memória correspondente.

Espaço de Endereçamento: endereços usados pelo programador.

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

O espaço de endereçamento 𝑁 e o espaço de memória 𝑀 podem servistos como um mapeamento de endereços do tipo:

𝑓 ∶ 𝑁 → 𝑀

O mapeamento permite ao programador usar um espaço deendereçamento que pode ser maior que o espaço de memóriaprimária disponível.

Page 6: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Memória Virtual

Existem vários meios de implementar sistemas de memória virtual.Dentre eles, o sistema de paginação, no qual o espaço deendereçamento é divido em páginas de igual tamanho em geralmúltiplo de 512 bytes, e a memoria principal é dividida de formasemelhante em Molduras de Páginas de igual tamanho.

As molduras de páginas contêm algumas páginas ativas enquanto orestante das páginas estão residentes em memória secundária(páginas inativas).

Page 7: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Memória Virtual: Sistema de Paginação

O mecanismo possui duas funções:

1. Mapeamento de endereços: determinar qual página um programa está endereçando, encontrar a moldura, se existir, que contenha a página.

2. Transferência de páginas: transferir páginas da memória secundária para a memória primária e transferi-las de volta para a memória secundária quando não estão mais sendo utilizadas.

Page 8: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Memória Virtual: Sistema de Paginação

Endereçamento da página: uma parte dos bits é interpretada como um número de página e a outra parte como o número do byte dentro da página.

Exemplo: se o espaço de endereçamento possui 24 bits, então amemoria virtual é de 224 𝑏𝑦𝑡𝑒𝑠 ; se o tamanho da página é de512 𝑏𝑦𝑡𝑒𝑠(29), então 9 bits são utilizados para representar o númerode bytes dentro da página e os 15 bits restantes são utilizados pararepresentar o número da página.

Page 9: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Memória Virtual: Sistema de Paginação

Mapeamento de endereços: realizado através de uma Tabela de Páginas.

– a 𝑝 − é𝑠𝑖𝑚𝑎 entrada contém a localização 𝑝′ da Moldura de Página contendo a página número 𝑝 desde que esteja na memória principal.

O mapeamento de endereços é: 𝑓(𝑒) = 𝑓(𝑝, 𝑏) = 𝑝′ + 𝑏, onde e é o endereço do programa, 𝑝 é o número da página e 𝑏 o número do byte.

Page 10: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Memória Virtual: Mapeamento de Endereços

Page 11: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Memória Virtual: Reposição de Páginas

• Se não houver uma moldura de página vazia: uma página deverá ser removida da memória principal.

• Ideal: remover a página que não será referenciada pelo período de tempo mais longo no futuro.– tentamos inferir o futuro a partir do comportamento passado.

Page 12: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Memória Virtual: Políticas de Reposição de Páginas

• Menos Recentemente Utilizada (LRU):– um dos algoritmos mais utilizados;

– remove a página menos recentemente utilizada.

– parte do princípio que o comportamento futuro deve seguir o passado recente;

• Menos Frequentemente Utilizada (LFU):– remove a página menos frequentemente utilizada;

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

• 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;

Page 13: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Acesso Sequencial Indexado

• Utiliza o princípio da pesquisa sequencial, cada registro é lidosequencialmente até encontrar uma chave maior ou igual a chave depesquisa.

• Providências necessárias para aumentar a eficiência:– o arquivo deve ser mantido ordenado pelo campo chave do registro (o custo para ordenar é caro);

– um arquivo de índices contendo pares de valores < 𝑥, 𝑝 > deve ser criado, onde 𝑥 representa uma chave e 𝑝 representa o endereço da página na qual o primeiro registro contém a chave 𝑥;

Page 14: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Acesso Sequencial Indexado

Page 15: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Chaves

Amanda, Barbara, Betânia, Bianca,Bruno, Carlos, Constantino, David,Dener, Elias

Page 16: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Constantino, David

Bloco 3 Dener, Elias

Page 17: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Inserir Carol

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Constantino, David

Bloco 3 Dener, Elias

Page 18: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Inserir Carol

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Constantino, David

Bloco 3 Dener, Elias

Page 19: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Inserir Carol

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Constantino, David

Bloco 3 Dener, Elias

Bloco 4

Page 20: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Inserir Carol

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Constantino, David

Bloco 3 Dener, Elias

Bloco 4

Page 21: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Inserir Carol

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos,

Bloco 3 Dener, Elias

Bloco 4 Constantino, David

Page 22: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Inserir Carol

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3 Dener, Elias

Bloco 4 Constantino, David

Page 23: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3 Dener, Elias

Bloco 4 Constantino, David

Page 24: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3 Dener, Elias

Bloco 4 Constantino, David

Page 25: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3 Dener, Elias

Bloco 4 Constantino, David

Page 26: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Remover David

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3 Dener, Elias

Bloco 4 Constantino, David

Page 27: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Remover David

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3 Dener, Elias

Bloco 4 Constantino, David

Page 28: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Remover David

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3 Dener, Elias

Bloco 4 Constantino, David

Page 29: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Remover David

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3 Dener, Elias

Bloco 4 Constantino,

Page 30: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Remover David

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3

Bloco 4 Constantino, Dener, Elias

Page 31: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Remover David

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3

Bloco 4 Constantino, Dener, Elias

Page 32: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Remover David

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3

Bloco 4 Constantino, Dener, Elias

Page 33: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Remover David

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3

Bloco 4 Constantino, Dener, Elias

Disponível

Page 34: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Exemplo: Acesso Sequencial Indexado

Chave: nomes

Fator de bloco: 4 nomes/bloco

Bloco 1 Amanda, Barbara, Betânia, Bianca

Bloco 2 Bruno, Carlos, Carol

Bloco 3

Bloco 4 Constantino, Dener, Elias

Disponível

Page 35: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Acesso Sequencial Indexado: Disco Magnético

Dividido em círculos concêntricos (trilhas).

Cilindro: todas as trilhas verticalmente alinhadas e que possuem o mesmo diâmetro.

Latência rotacional: tempo necessário para que o início do bloco contendo o registro a ser lido passe pela cabeça de leitura/gravação.

Tempo de busca (seek time): tempo necessário para que o mecanismo de acesso desloque de uma trilha para outra (maior parte do custo para acessar dados).

Acesso sequencial indexado = acesso indexado + organização sequencial;

Aproveitando características do disco magnético e procurando minimizar o número de deslocamentos do mecanismo de acesso, com esquema de índices de cilindros e de páginas.

Page 36: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Acesso Sequencial Indexado: Disco Magnético

Page 37: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode

Acesso Sequencial Indexado: Disco Magnético

Para localizar o registro que contenha uma chave de pesquisa são necessários os seguintes passos:

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.

Page 38: Pesquisa em Memória Secundária · quantidade de memória secundária. Organização do fluxo entre a memória principal e secundária é extremamente importante. Programador pode