• Nenhum resultado encontrado

Memória Secundária e Ordenação externa Algoritmos e Estruturas de Dados III

N/A
N/A
Protected

Academic year: 2021

Share "Memória Secundária e Ordenação externa Algoritmos e Estruturas de Dados III"

Copied!
6
0
0

Texto

(1)

Mem´

oria Secund´

aria e Ordena¸c˜

ao externa

Algoritmos e Estruturas de Dados III

Diego de Moura Duarte

diegomd@dcc.ufmg.br

25 de Junho de 2008

1

Mem´

oria secund´

aria

1.1

Hierarquia de mem´

orias

Para entendermos o conceito de mem´oria secund´aria, ´e importante pri-meiro que conhe¸camos a Hierarquia da Mem´oria. Esta hierarquia e nor-malmente comparada com uma pirˆamide. Como base desta pirˆamide temos o disco magn´etico do computador, onde est˜ao armazenados todos os dados necess´arios para o funcionamento do computador. Acima deste, podemos encontrar a mem´oria do computador, onde ficam armazenados os programas em execu¸c˜ao e os dados mais utilizados por estes. Esta id´eia de dados mais utilizados, mais frequˆentes, deve ficar bem clara, pois muitos dos problemas e solu¸c˜oes relacionados com a m´em´oria s˜ao relacionados a isto. Para a melhor compreens˜ao, podemos citar uma bolsa de mulher, onde possui apenas os utens´ılios de maior uso, devido `a facilidade de armazenamento e praticidade de acessos. A partir disto, podemos montar mais n´ıveis na nossa pirˆamide da mem´oria, aparecendo ent˜ao a mem´oria cache. Esta ´e uma mem´oria de acesso r´apido entre o processador, que est´a no topo de nossa pirˆamide, e a mem´oria do computador. Esta se divide em dois tipos: cache L2, maior e mais lenta que a cache L1, que est´a mais pr´oxima do processador. Podemos perceber que, subindo nesta pirˆamide, a velocidade de acessos aumenta em detrimento da capacidade de armazenamento.

(2)

1.2

Localidade de Referˆ

encia

Conhecida a hierarquida da mem´oria, como avali´a-la? Para isso, criou-se o conceito de Localidade de Referˆencia, que ´e uma forma de avaliar como um determinado programa acessa a mem´oria. Existem dois tipos desta Locali-dade:

• Localidade Temporal : diz que, se um dado da mem´oria foi acessado, existe grandes chances de ser acessado novamente num futuro pr´oximo.

• Localidade Espacial : diz que, se um dado da mem´oria foi acessado, existe grandes chances dos dados vizinhos a este serem acessados num futuro pr´oximo.

Com isso, podemos concluir que um programa com localidades distantes possui acessos ruins `a mem´oria. Comesse conceitos, temos uma visualiza¸c˜ao ainda melhor sobre a hierarquia de mem´orias, que apenas ´e eficiente por causa destes conceitos de Localidade de Referˆencia.

Uma forma de medir a localidade de referˆencia ´e utilizando uma pilha. Assim, empilhamos os acessos na mem´oria e para medir a localidade tempo-ral, temos a distˆancia de pilha, isto ´e, calculamos a distˆancia de acessos de um dado da mem´oria verificando na pilha a ´ultima vez que este foi acessado. Quanto maior a distˆancia, pior a localidade temporal. Com rela¸c˜ao `a loca-lidade espacial, temos a distˆancia entre o ´ultimo acesso, ou seja, a distˆancia na mem´oria entre o dado acessado e o ´ultimo acessado.

1.3

Fragmenta¸

ao

Outro conceito importante relacionado a mem´oria ´e a fragmenta¸c˜ao. Voltando-nos para a localidade espacial, temos que os dados s˜ao careegados em con-junto para a cache. Assim, existe um porcentagem de dados que n˜ao s˜ao utilizados. Esta porcentagem ´e chamada de fragmenta¸c˜ao. Um exemplo j´a utilizado ´e o de uma bolsa de mulher, que mesmo com muitos utens´ılios, temos que poucos s˜ao utilizados, possuindo assim uma alta fragmenta¸c˜ao.

Sobre a fragmenta¸c˜ao, temos as unidades de armazenameno, que s˜ao uni-dades cont´ıguas de dados. Assim, podemos encontrar uma rela¸c˜ao entre as unidades e a fragmenta¸c˜ao, onde temos que o custo de acesso pode ser re-presentado por uma fun¸c˜ao do tipo C(x) = Ax + B, onde x representa o tamanho da unidade de armazenamento:

(3)

Exemplo 1 Exemplo 2 Tamanho da Unidade ⇓ ⇑

Fragmenta¸c˜ao ⇓ ⇑ N de unidades ⇑ ⇓

Custo ⇑ ⇓

Avaliando a tabela, podemos ver que, no exemplo 1, quanto menor o ta-manho da unidade de armazenamento, maior ser´a a quantidade destes, mas menor ser´a a fragmenta¸c˜ao. Entretanto, neste caso, teremos um custo maior. No exemplo 2, apenas invertemos este caso.

Conhecido o conceito de fragmenta¸c˜ao, podemos dar um exemplo relacio-nado `a paraleliza¸c˜ao, para ser mais exato, uma falsa paraleliza¸c˜ao. Se tiver-mos uma matriz N×N, e o tamanho da unidade de de armazenamento for menor que N, mesmo que threads diferentes percorram cada linha, ter´ıamos um custo de carregar a unidade na cache, prejudivando a paraleliza¸c˜ao.

1.4

Mem´

oria Virtual

Com os conceitos expostos acima, podemos entender a mem´oria secund´aria. Um modelo muito conhecido desta mem´oria ´e a mem´oria secund´aria. Utili-zamos esta mem´oria quando temos um saturamento da mem´oria principal. Ou seja, quando realizamos um ou mais processos no computador, fazendo com que este precise de mais mem´oria, temos a utiliza¸c˜ao da mem´oria vir-tual, que utiliza o disco r´ıgido do computador. No sistema operacional Linux, esta mem´oria ´e definida na pr´opria instala¸c˜ao, e recebe o nome de swap. J´a no Windows, temos que a mem´oria virtual ´e utilizada dependendo da de-manda, ou seja, utilizamos o disco r´ıgido o quanto precisamos, resultando no problema de, caso utilizemos muito, corrompermos o Sistema Operacional.

Para a sua implementa¸c˜ao, utilizamos a id´eia de pagina¸c˜ao. A sua id´eia ´e bem parecida com a que temos nos ´ındices: um “atalho” para descobrirmos onde est˜ao certos dados. Assim, no m´etodo de endere¸camento por pagina¸c˜ao, temos referˆencias para o come¸co de conjuntos de dados. Existem ta,b´em v´arios m´eodos para inserirmos e removermos as p´aginas, sendo que o mais utilizado ´e o LRU (Menos Recentemente utilizado), que possui id´eia paracida com a localidade de referˆencia: retiramos sempre a p´agina menos utilizada

(4)

para inserirmos uma nova. Tamb´em existe m´etodos com LFU (Menos Fre-quentemente Utilizada), e id´eias de Ordem de chegada ou FIFO (First In, First Out ).

1.5

Arvores de Pesquisa

´

Para pesquisarmos na mem´oria, existe uma estrutura muito eficiente cha-mada ´Arvore B. Muitos conhecem ´arvores bin´aria, mas esta ´arvore ´e um caso especial da ´Arvore B. Nesta estrutura, temos que cada n´o possui mais de um registro (´arvore n-´aria). Assim, devemos respeitar que: os n´os (chamdos neste caso por p´aginas) cont´em um m´ınimo de m registros e no m´aximo 2m, execto a raiz, que pode conter entre 1 e 2m registros; todas as p´aginas folha aparecem no mesmo n´ıvel.

2

Ordena¸

ao Externa

A ordena¸c˜ao externa envolve a ordena¸c˜ao de v´arios arquivos quando os dados n˜ao cabem na mem´oria principal. Sendo diferentes dos m´etodos de ordena¸c˜ao conhecidos, como Inser¸c˜ao e QuickSort, a principal id´eia neste caso ´

e a intercala¸c˜ao. Para esta ordena¸c˜ao, a mem´oria secund´aria normalmente ´

e representada por fitas, discos e tambores magn´eticos, onde os dados s˜ao armaenados de forma sequencial. Assim, o m´etodo como inserimos nestes fitas ´e essencial para a eficiˆencia da ordena¸c˜ao. Temos que ter em mente que o custo de acesso e c´opias entre as mem´orias ´e alto.

Assim, a maioria dos m´etodos utilizam a id´eia de blocos. Os dados s˜ao armazenados na mem´oria secund´aria (fitas) em conjuntos (blocos) j´a ordena-dos. Assim, o que fazemos ´e intercalar os primeiros blocos e criar um outro maior (respeitando o tamanho da mem´oria principal). Assim, realizamos as intercala¸c˜oes at´e restar apenas um bloco. Segue abaixo dois algoritmos utilizados para a ordena¸c˜ao externa.

2.1

Intercala¸

ao de N-Caminhos

Neste m´etodo, com f fitas, utilizamos f2 fitas. Assim, o seu funcionamento ´

e simples: lemos o arquivo, enchendo a mem´oria principal e ordenamos os dados. Feito isso, inserimos este bloco em uma fita. Para mantermos a inter-cala¸c˜ao balanceada, alternamos as inser¸c˜oes nas f2 fitas. Ao terminarmos o arquivo, lemos o primeiro arquivo dos primeiros blocos de cada fitas e seleci-onamos o menor para come¸carmos a inserir nas outras fitas. Lemos registro

(5)

por registro dos primeiros blocos e formamos um bloco maior. Realizamos este mesmo processo com os pr´oximos blocos de mesmo n´ıvel. Ao terminar-mos a primeira metade das fitas, realizaterminar-mos o mesmo processo com a segunda metade, sendo que terminamos a ordena¸c˜ao quando restar apenas um ´unico bloco ordenado.

2.2

Intercala¸

ao Polif´

asica

Este m´etodo de intercala¸c˜ao ´e bastante parecido com a intercala¸c˜ao de N-Caminhos. Inicialmente, uma diferen¸c˜ao ´e a forma de criarmos os primeiros blocos na leitura do arquivo. Utilizamos neste caso o m´etodo de Sele¸c˜ao por Substitui¸c˜ao. Neste m´etodo, temos elementos com prioridade de inser¸c˜ao. Ao enchermos a mem´oria principal, selecionamos o menor elemento e inserimos num bloco. Se o pr´oximo elemento a ser lido for menor do que este que saiu, marcamos o elemento que est´a entrando e ser´a considerado como o maior da mem´oria principal. Caso contr´ario, apenas o inserimos na mem´oria principal. Assim, temos a cria¸c˜ao de blocos at´e o momento que todos os elementos estiverem marcados, iniciando ent˜ao um novo bloco. Este m´etodo permite que blocos maiores que a mem´oria principal sejam criados nas fitas. Um melhoria na implementa¸c˜ao seria utilizarmos um heap para inserirmos e retirarmos os elementos.

Realizado este m´etodo, a Intercala¸c˜ao Polif´asica ´e bastante semelhante ao m´etodo visto na se¸c˜ao 2.1. A diferen¸ca est´a em, ao inv´es de preenchermos as f2 fitas no primeiro passo, preechemos as k - 1 fitas. Assim, temos que a intercal¸cao de blocos ´e feita sempre na fita que estiver vazia. Este m´etodo, em alguns casos onde temos um n´umero de fitas pequeno, ´e relativamente melhor que a Intercala¸c˜ao de N-Caminhos.

(6)

3

Conclus˜

ao

Com rela¸c˜ao `as informa¸c˜oes acima, podemos perceber a grande importˆancia da Localidade de Referˆencia no computador. A maneira como acessamos os dados e a ordem de acesso s˜ao parˆametros importantes de compara¸c˜ao entre sistemas e programas. Pudemos entender o funcionamento da mem´oria, e entendermos o que vem a ser a mem´oria secund´aria. Encontramos exemplos de como trat´a-la, al´em de conhecermos uma forma de realizarmos buscas efi-cientes atrav´es de pagina¸c˜oes e ´Arvores B. Com isso, tamb´em aprendemos a ordenar elementos que necessitam de muita mem´oria, levando-nos a trabahar com formas de armazenamento externo. Sobre o intuito educativo da rese-nha, conseguimos adquirir mais conhecimento sobre uma ´area de tamanha importˆancia no funcionamento de qualquer computador.

Referências

Documentos relacionados

Os interessados em adquirir quaisquer dos animais inscritos nos páreos de claiming deverão comparecer à sala da Diretoria Geral de Turfe, localizada no 4º andar da Arquibancada

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

Promovido pelo Sindifisco Nacio- nal em parceria com o Mosap (Mo- vimento Nacional de Aposentados e Pensionistas), o Encontro ocorreu no dia 20 de março, data em que também

O objetivo deste trabalho foi avaliar épocas de colheita na produção de biomassa e no rendimento de óleo essencial de Piper aduncum L.. em Manaus

Assim como a Natureza, a leitura de folhetos de cordel constituiu uma fonte de inspiração para fazer poesia.. Na comunidade em que vivia Patativa, a leitura dos folhetos de

As quinolonas já têm sido relatadas como seguras para o tratamento da otite, sem apresentar sinais de ototoxicidade nos animais (GOTTHELF, 2004), e não foram observados

Observações como esta ganham peso ainda maior quando se leva em conta que, num país desprovido de cultura científica, os veículos de comunicação representam o canal mais

É relevante, ainda, considerar que os termos “reciclagem/ formação” indiciam a vontade que o especialista, reconhecido como portador de um saber, tem de