Organização e Recuperação da Informação Memória Secundária Dr. Ednaldo Pizzolato ORI - DISCOS • Memória Secundária • Memória Primária – Não Volátil – Lenta – Barata – Volátil – Rápida – Cara ORI - DISCOS ORI - DISCOS ORI - DISCOS • UNIDADE BÁSICA DE MEMÓRIA • O computador só pode identificar a informação através de sua restrita capacidade de destinguir entre dois estados, por exemplo, algo está imantado num sentido ou está imantado no sentido oposto. A uma dessas opções o computador associa o valor 1, e ao outro estado, o valor 0. • Os dígitos 0 e 1 são os únicos elementos do sistema de numeração de base 2, sendo então chamados de dígitos binários, ou abreviadamente, bit. Entenda-se por bit a unidade básica de memória, ou seja, a menor unidade de informação que pode ser armazenada num computador. ORI - DISCOS A tecnologia de gravação mais usada é a magnética, baseada em materiais que podem ser magnetizados (como o óxido de ferro e outros). Esta tecnologia foi usada inicialmente para a gravação de sons e depois adaptada para a gravação digital que os computadores exigem. ORI - DISCOS A superfície do disco, recoberta com uma fina camada de material magnetizável (quanto mais fina, melhor), é tratada como uma matriz de pontos. Cada ponto é considerado como um bit que pode ser definido como o equivalente magnético de 0 ou 1. Como a posição dos pontos não é determinada com precisão, o esquema de gravação envolve algumas marcas de orientação. Estas marcas são um dos motivos pelos quais um disco precisa ser formatado antes de poder ser utilizado. ORI - DISCOS Os discos (ao contrário das fitas que têm leitura/gravação linear) proporcionam acesso rápido por dois motivos: rotação e movimentação do cabeçote. Com a rotação, qualquer parte da circunferência do disco passa rapidamente por qualquer ponto determinado. A movimentação do cabeçote no sentido centro-borda aumenta ainda mais sua velocidade de acesso. ORI - Trilhas • A superfície dos discos é dividida em círculos concêntricos, as chamadas trilhas. Cada trilha é numerada, começando pelo círculo mais externo que recebe o número 0 (zero). O disquete de 1.44 Mb, por exemplo, possui 80 trilhas; os HDs costumam ter de 500 a mais de 1000 trilhas, dependendo do modelo. É bom lembrar que o perímetro da trilha 0 (a primeira e mais externa) é bem maior que o perímetro da trilha 79 (a última e mais central). ORI - Trilhas • A maioria das pessoas imagina que as trilhas cubram toda a superfície do disquete, mas não é bem assim. Basta fazer umas continhas sabendo que o disquete de 1.44 Mb e 3.5 polegadas grava dados na proporção de 135 trilhas por polegada, ou seja, poderia gravar cerca de 470 trilhas (135x3.5=472.5). Como existem 80 trilhas, a superfície que elas ocupam corresponde apenas a cerca de 0.6 polegadas, algo em torno de 1.5 cm dos 8.4 cm de superfície total. ORI - Setores • Cada uma das trilhas é dividida em porções menores - os setores. O tipo de disco determina o número de setores por trilha. O disquete de 3.5 polegadas e 1.44 Mb tem 18 setores por trilha e os HDs, novamente, podem ter números diferentes de setores dependendo do modelo além de poderem possuir mais setores nas trilhas mais externas. ORI - Setores • Os setores também são numerados. Os setores 0 (zero) de cada trilha estão reservados para identificação ao invés de armazenamento de dados. Eles têm sempre um tamanho fixo, que pode ser de 128 a 1024 bytes. O tamanho mais utilizado é de 512 bytes. Toda leitura e gravação é feita em termos de setores completos, mesmo que os dados ultrapassem setores e ocupem o último parcialmente. ORI - Lados • Nada impede a utilização das duas faces de um disco para armazenar dados. Deste modo, os chamados dupla face, possuem o lado 0 e o lado 1. Neles existem dois cabeçotes (por aste). Alguns HDs possuem um "sanduiche" de discos. Neste caso, os lados são numerados sequencialmente: lados 0 e 1 (do disco 1), lados 2 e 3 (do disco 2) e assim sucessivamente. ORI - Cilindros • O conjunto de trilhas com a mesma distância do centro em cada face do disco é chamado de cilindro. Imagine um HD com 3 discos de dupla face superpostos. Neste caso, existem 6 lados, numerados de 0 a 5. As trilhas de todas as faces ficam alinhadas na vertical, como se formassem tubos concêntricos. Cada um destes tubos é o chamado cilindro. Em outras palavras, um cilindro inclui uma trilha de cada uma das superfícies. Em um disquete, um cilindro sempre consiste de duas trilhas correspondentes, uma de cada lado. Calculando capacidades • Para calcular a capacidade bruta de qualquer disco, basta fazer algumas multiplicações. Tomemos como exemplo um disquete de dupla face com 80 trilhas por lado e 18 setores por trilha. Inicialmente multiplique o número de lados pelo número de trilhas por lado: 80 x 2 = 160. Agora multiplique o resultado pelo número de setores por trilha: 160 x 18 = 2880. Finalmente, multiplique o resultado pelo número de bytes por setor (512 bytes = 0.5 Kb): 2880 x 0.5 = 1440 Kb = 1.44 Mb. ORI - DISCOS ORI - DISCOS ORI - DISCOS ORI - DISCOS Evolução dos HDs ORI - DISCOS • Conceitos – Tempo de acesso (seek time): é o tempo gasto para a cabeça de leitura/gravação se posicionar na trilha correta. Varia de 3 ms (para trilhas adjacentes) e até 100 ms (para trilhas que estão nos extremos do disco). – Tempo de Latência Rotacional (rotational delay): é o tempo gasto para localizar o setor ao qual se quer ter acesso. O tempo total de acesso é a soma destes dois tempos (seek + latência rotacional). A latência rotacional varia de 0 ao tempo de uma rotação completa (a 3600 rpm, a LR é 16,67 ms). – Tempo de transferência (transfer time): é o tempo gasto para a migração dos dados da memória secundária para a memória principal. – Tempo de acesso: é a soma dos tempos: seek + latência + transferência. – Taxa de transferência: é a velocidade com a qual os dados migram da memória secundária para a memória principal. Ex.: 1.200 kbps. ORI - DISCOS • O tempo de acesso está relacionado com a velocidade de movimentação das cabeças de leitura e gravação do disco rígido. Podemos entender facilmente que quanto mais veloz for o movimento das cabeças, mais rapidamente o disco poderá acessar qualquer dado nele armazenado. Chamamos de tempo médio de acesso, ou simplesmente tempo de acesso, o tempo necessário para mover o braço desde o primeiro cilindro até o cilindro central. ORI - DISCOS • O tempo de acesso de uma memória é dependente do modo como o sistema de memória é construído e da velocidade dos seus circuitos. Ele varia bastante de acordo com o tipo de memória analisado, sendo valores típicos aqueles numa faixa entre 50 e 150 nanossegundos (ns), para a memória principal (ou memória DRAM); de 8 a 15 mili-segundos para discos magnéticos (memória secundária), enquanto fitas magnéticas têm tempo de acesso da ordem de poucos segundos. ORI - DISCOS • Ao lado do tempo médio de acesso, a taxa de transferência interna é o mais importante fator que define o desempenho de um disco rígido. • Enquanto o tempo médio de acesso é decisivo na leitura de arquivos pequenos em grande quantidade, a taxa de transferência interna é o principal fator envolvido na velocidade de leitura e gravação de arquivos grandes. ORI - DISCOS • Os discos rígidos possuem uma área interna de memória, para onde são lidos os dados que serão posteriormente transferidos para a placa de CPU. • Esta área é chamada de cache ou buffer. ORI - DISCOS • Quando um disco rígido IDE transfere dados, estão envolvidos dois tipos de transferência: • 1. Transferência da mídia magnética para a cache interna do disco • 2. Transferência da cache interna do disco para a placa de CPU ORI - DISCOS • A taxa de transferência interna representa a velocidade na qual a primeira transferência é feita. A velocidade na qual a segunda transferência se faz, é chamada de taxa de transferência externa. Para que o disco rígido possa fazer uma transferência completa (mídia cache - CPU) de forma mais veloz, tanto a transferência interna como a externa precisam ser rápidas. ORI – DISCOS (BLOCOS) Bloco Uma seqüência contígua de setores de uma única trilha Os dados são trasferidos entre o disco e a memória principal em blocos Os tamanhos variam de 512 bytes até vários kilobytes – Blocos menores: mais transferências do disco – Blocos maiores: mais espaço desperdiçado, devido a blocos parcialmente cheios – Os tamanhos típicos de blocos hoje variam de 4 a 16 kilobytes ORI – DISCOS (BLOCOS) Bloco Algoritmos de Agendamento do braço do disco Ordenam os acessos pendentes para as trilhas para minimizar a movimentação do braço do disco. Algoritmo elevador: move o braço do disco em uma direção (das trilhas externas para as internas e viceversa), processando a próxima requisição naquela direção, até que não haja mais requisições naquela direção, então reverte a direção e repete. ORI – DISCOS (blocos) • Suponha que tenhamos um disco organizado em blocos com capacidade para 20.000 bytes (por trilha) e que para armazenar um bloco o sistema gaste 300 bytes a mais com informações de suporte e espaçamento entre blocos. • Queremos armazenar um arquivo que tem registros de tamanho igual a 100 bytes. Quantos registros podem ser armazenados em cada trilha com fator de bloco igual a 10? ORI – DISCOS (blocos) • Se temos 100 bytes por registro e o fator de bloco é 10, então cada bloco armazena 1000 bytes de dados e mais 300 bytes de informação de controle. Assim, cada bloco utiliza 1300 bytes. Se temos 20.000 bytes em uma trilha, isso implica em 20.000 / 1.300 = 15.38 blocos. • Como precisamos de um número inteiro, teremos 15 blocos com 10 registros 150 registros por trilha. ORI – DISCOS (blocos) • E se o fator de bloco fosse 60? • Se fosse 60 teríamos 6000 bytes de dados (60 x 100) + 300 bytes de controle. • Assim, teríamos 20.000 / 6.300 = 3 • Ou sejam, 3 blocos com capacidade de 60 registros = 180 registros por trilha (contra 150 da versão anterior). É mais vantajoso utilizar o fator 60... ORI – DISCOS (organização) Organização de Arquivos Otimiza o tempo de acesso aos blocos organizando-os para corresponder à forma como os dados serão acessados. Por exemplo: armazenar informações relacionadas no mesmo cilindro ou em cilindros próximos. Fragmentação : Os blocos livres no disco ficam espalhados ou os arquivos novos têm seus blocos espalhados pelo disco: – Acesso seqüencial a um arquivo fragmentado resulta em maior movimentação do braço do disco Alguns sistemas possuem utilitários para desfragmentar o sistema de arquivos, para tornar mais rápido o acesso aos arquivos ORI – DISCOS (organização) Vamos analisar 2 situações diferentes de processamento de arquivo para demonstrar como o acesso à informação pode ser afetado pelo tempo de acesso. Situação 1 – Tempo para acessar o arquivo em seqüência. Situação 2 – Tempo para acessar o arquivo aleatoriamente. ORI – DISCOS (organização) O melhor desempenho para transferência de dados ocorre quando os arquivos estão em uma trilha. O arquivo tem 8.704.000 bytes e está dividido em 34.000 registros de 256 bytes cada. Primeiramente, é importante descobrir como o arquivo está distribuído no disco. Um bloco com 4096 bytes comporta 16 registros. O arquivo será armazenado de forma a ter uma seqüência de 2125 blocos que serão distribuídos em 100 trilhas. ORI – DISCOS (organização) Assumiremos que as 100 trilhas estão dispersas aleatoriamente no disco (situação extrema apenas para enfatizar a conclusão). Devemos estimar o tempo que se deve consumir para ler o arquivo em seqüência (setor por setor). O processo envolve os seguintes tempos: seek time = 8 msec rotational delay = 3 msec leitura de uma trilha = 6 msec Total para uma trilha = 17 msec ORI – DISCOS (organização) Como desejamos a leitura de 100 trilhas temos : 100 x 17 msec = 1.7 segundos A segunda situação assume que os setores podem estar em posições distintas (não seqüencial), e assim, a cabeça de leitura terá que ficar “pulando” de uma posição para outra. Para ler um registro é preciso ler um bloco: seek time = 8 msec rotational delay = 3 msec leitura de um bloco = 1/21.5 x 6) = 0.28 msec total = 11.28 msec Como temos 34.000 registros, teremos 34.000 x 11.28 ms = 9,25 s ORI – CD-ROMS • Desenvolvido inicialmente pela Philips, e em seguida com a colaboração da Sony, os cd-roms têm se tornado muito populares. Seguros, duráveis, fáceis de armazenar e com alta capacidade de armazenamento, eles têm se tornado um grande meio de distribuição de programas. ORI – CD-ROMS • O nome cd-rom vem de compact disk read only memory. Como o próprio nome diz, ele é uma memória rom, isto é, memória somente de leitura (não pode ser alterada). ORI – CD-ROMS • Um cd é gravado utilizando um laser de alta potência. Com este laser são feitos “furos” (pits) em um disco. As áreas não “furadas” entre os pits são chamadas lands. Com os pits têm uma refletividade diferente dos lands, podese, assim, representar uma informação digital (dois estados). ORI – CD-ROMS • O processo de leitura é feito através da interpretação de altos e baixos relevos (PITS e LANDS), impressos no CD-ROM durante o processo de fabricação. Os PITS tem 0,12 microns por 0,6 microns de largura, sendo que a distância entre os mesmos corresponde à espiral de 1,6 microns representando uma taxa de 16000 TPI (trilhas por polegadas), muito maior de que hoje temos nos disquetes 5 1/4” 360 kbytes. ORI – CD-ROMS • É usado para leitura, um feixe de laser (Light Amplification by Stimulated Emission of Radar), circular de aproximadamente 1 mícron de diâmetro. Para se produzir esse feixe de laser é necessário aumentar a sua intensidade, que irá passar por uma série de lentes de altíssima qualidade, a fim de incidir sobre a face reflexiva do CD-ROM. ORI – CD-ROMS • Assim, de um lado temos o disco CDROM e do outro um feixe de laser incidindo sobre a espiral (PITS/LANDS), que é refletida pela camada de alumínio que compõe o CD-ROM. ORI – CD-ROMS • Quando o feixe incidir sobre uma microcavidade (baixo relevo “LAND”), ela será refletida ordenadamente com a mesma intensidade, voltando através do sistema de lentes e passando por um fotodetector que produzirá uma corrente elétrica de intensidade proporcional ao feixe recebido. ORI – CD-ROMS • De outro modo, quando o feixe incidir sobre um PIT (alto relevo) será refletido em diversas direções, dispersando a intensidade de luz refletida e, voltando pelo sistema óptico com uma baixa intensidade, irá gerar uma corrente elétrica de baixa intensidade. ORI – CD-ROMS • Quando se armazenam dados, em qualquer meio, eles devem ter uma forma que seja aceitável por esse meio. Em todas essas formas, é utilizado o sistema de representação binário (1/0). Nos CD’s temos os PITS e LANDS (espaço entre pits), que não correspondem a 1s e 0s. O conceito de representação binária dos 1s é através da mudança de estado de PIT para LAND ou, de LAND para PIT, e o tamanho do PIT ou LAND indica o número de 0s. ORI – CD-ROMS • Transições adjacentes, (PIT/LAND/PIT), não conseguem ser lidas pelo sistema óptico. Para solucionar este problema foi definido um tamanho mínimo de LAND (2 bits) e um tamanho máximo (11bits) para que durante a leitura dos dados não houvesse perda de sincronismo e que não prejudicasse o sistema de leitura do CDROM . ORI – CD-ROMS • Para que isso fosse realizado, foi adotada para o CDROM uma modulação de dados chamada EFM (Eight Fourteem Modulation), que transforma um byte (8 bits) de dados do usuário em 14 bits, que representam um caractere ou símbolo. A utilização da conversão EFM (8 para 14 bits), faz com que seja possível o tamanho mínimo (land máximo de 11 bits), mas como existe a possibilidade do fim da representação de um caractere (seqüência de 14 bits) terminar com “1” e o próximo caractere também iniciar com “1” para que isso não ocorra, é introduzido uma seqüência de três bits (merge bits) entre os caracteres. ORI - EFM • Eight to Fourteen Modulation 00000000 01001000100000 00000001 10000100000000 00000010 10010000100000 00000011 10001000100000 00000100 01000100000000 00000101 00000100010000 00000110 00010000100000 00000111 00100100000000 00001000 01001001000000 00001001 10000001000000 00001010 10010001000000 ORI – CD-ROMS • A divisão lógica dos CD´s é totalmente diferente de um disquete ou disco rígido. Os dados não são gravados em trilhas e setores, mas numa espiral contínua, em blocos de dados. Um CD de 553 Mb, por exemplo, tem 270.000 blocos de dados. ORI – CD-ROMS • Os primeiros drives de CD-ROM operavam com a taxa de transferência de 150 kB/s, a mesma utilizada pelos CD Players para áudio. Surgiram os drives de velocidade dupla (2x), com taxa de 300 kB/s. Os drives mais antigos passaram a ser chamados de drives de velocidade simples, ou 1x. Seguiram-se os drives de velocidade tripla (3x), quádrupla (4x), e assim por diante. ORI – CD-ROMS • • • • • • • • • • • Tipo 1x 2x 3x 4x 6x 8x 10x 12x 16x 20x Taxa de transferência 150 kB/s 300 kB/s 450 kB/s 600 kB/s 900 kB/s 1,2 MB/s 1,5 MB/s 1,8 MB/s 2,4 MB/s 3,0 MB/s ORI – CD-ROMS Nos bons tempos, para comparar o desempenho de um drive, bastava saber sua velocidade, a velocidade média de acesso, a velocidade média de procura, e o tempo médio entre falhas (MTBF). ORI – CAV Para compreender a lógica por trás da tecnologia CAV (Constant Angular Velocity, ou Velocidade Angular Constante), é importante observar como os dados são gravados. Discos rígidos, por exemplo, usam velocidade angular constante ou CAV para ter acesso a informações, o que significa que em qualquer área do disco passa por um ponto especificado, o cabeçote do disco, a uma taxa constante. ORI – CAV Os setores num disco rígido são semelhantes aos raios de uma roda de bicicleta. No centro do disco, os dados estão mais compactados. Já na borda externa, as informações são gravadas de forma mais espalhada. Devido a essa variação de densidade de dados, o disco pode girar a uma velocidade constante e ler os dados a uma velocidade constante, estando no centro do disco ou em sua borda externa. ORI – CLV Ao contrário dos discos rígidos, a tecnologia de CD foi desenvolvida usando o padrão CLV (Constant Linear Velocity, ou Velocidade Linear Constante), pois os criadores de CDs de Áudio desejavam colocar o máximo de música possível no CD. ORI – CLV Para tanto, as especificações determinavam que cada setor num CD deveria ocupar o mesmo comprimento ao longo da trilha espiral, ao invés de espalhar os dados ao aproximar-se da borda do disco. ORI – CLV Para ler estes setores eqüidistantes no centro do disco à mesma velocidade que os da borda externa, era necessário acelerar o motor nas trilhas internas e reduzir sua rotação nas trilhas externas. ORI – CLV Diversos fatores forçaram os fabricantes de drives de CD-ROM a migrar da tecnologia CLV native do CD-ROM para a tecnologia CAV. O principal fator de limitação para a velocidade de drives de CD-ROM está nos próprios discos. Num drive de CD-ROM 12X CLV, a velocidade de rotação varia de 2.400 rpm a 6.360 rpm. A 6.360 rpm o disco está girando o mais rápido possível antes que pequenas imperfeições com o disco e a legenda impressa nele desequilibrem o disco em relação ao seu eixo de rotação, provocando vibrações e reduzida confiabilidade na leitura de dados. ORI – CLV Por outro lado, um drive usando tecnologia CAV não precisa girar tão rápido para atingir velocidades de leitura maiores, tendo portanto menos torque no motor e vibração reduzida. ORI – CLV x CAV ORI – CD-R • A sigla CD-R significa cd recordable. Um cd deste tipo pode ser gravado somente uma vez. Representa uma evolução dos Cd-roms comuns justamente pela capacidade de serem graváveis pelo usuário comum. ORI – Discos Ópticos Apagáveis • A terceira fase da evolução dos discos óticos é o cd óptico apagável. Com este tipo de mídia, podem ser realizadas várias gravações. • Como? • R: Utilizando-se ligas metálicas exóticas, que mudam suas propriedades de acordo com a temperatura. Na temperatura ambiente, suas propriedades não são alteradas, mas, a altas temperaturas, estas ligas (térbio, gadolínio), ficam sensíveis a campos magnéticos. ORI - Digitalização Quando queremos armazenar som, precisamos converter a onda em padrões digitais. ORI - Digitalização • A onda é representada por um gráfico de amplitude contra o tempo. ORI - Digitalização • Como estamos digitalizando, precisamos armazenar as amplitudes em períodos regulares para, depois, reconstruírmos o gráfico referente à onda. ORI - Digitalização ORI - Digitalização ORI - Digitalização • O CD de áudio utiliza 16 bits para armazenar cada amplitude. Isso significa que a amplitude pode ter 65536 graus de diferença. Existem restrições para o armazenamento adequado do som: é preciso armazenar as amplitudes um uma taxa no mínimo duas vezes maior que a mais alta freqüência que queremos capturar. Normalmente o “sampling” rate é de 44.1 KHz (ou 44.100 vezes por segundo) que permitem capturar freqüências de até 20 KHz (o limite da audição humana). ORI - Digitalização • Assim, 16 bits (2 bytes) a uma taxa de 44.100 vezes por segundo 88.200 bytes por segundo. Se for som estéreo, precisamos dobrar 176.400 bytes por segundo. ORI – Sistemas de Detecção de Erros • Pesquisar os sistemas de detecção de erros (CRC...) ORI – External Sorting • Em várias aplicações pode-se ter a necessidade de se organizar os dados em uma determinada ordem. • Entretanto, em muitos casos, os arquivos podem ser muito grandes de forma que seus dados não possam estar todos em memória ao mesmo tempo. ORI – External Sorting • Para ilustrar, vamos supor, nesta aula, que tenhamos um arquivo com 8 milhões de registros, cada um de 100 bytes. O espaço em disco necessário para armazenar estes dados é de 800 megabytes. • O espaço disponível em memória para trabalho é de 10 megabytes (espaço livre após contar-se o utilizado pelo SO, buffers...) ORI – External Sorting • Podemos utilizar um algoritmo como o quicksort – por exemplo – ou uma árvore binária para ordenar um subconjunto dos dados, de tal forma que possam ocupar quase todo o espaço disponível do sistema. • Após isso, devemos escrever os dados (ordenados) de volta no arquivo e proceder com o restante. A este subconjunto damos o nome de rodada. ORI – External Sorting • Em nosso exemplo, uma rodada seria: – 10.000 bytes / 100 bytes (registro) = 100.000 registros Após a primeira rodada, deve-se ler um segundo subconjunto de dados do arquivo e criar uma nova rodada... E, após 80 rodadas, pode-se combinar os resultados para se gerar um único arquivo (ordenado). ORI – External Sorting arquivo desordenado arquivo ordenado ORI – External Sorting • Two-way Sort / Merge • 50 110 95 10 100 36 153 40 120 60 70 130 22 140 80 • O número máximo de elementos que podem ocupar o espaço de memória de trabalho é 3. Assim, nossas rodadas podem ter no máximo tamanho 3: • F1 [50 95 110] [40 120 153] [22 80 140] • F2 [10 36 100] [60 70 130] ORI – External Sorting • F1 [50 • F2 [10 F3 [10 95 110] [40 120 153] [22 80 140] 36 100] [60 70 130] 36 ... 110] [ 40 ... 153] [22 80 140] • F1 [vazio] • F2 [vazio] F3 [10 36 ... 110] [ 40 ... 153] [22 80 140] ORI – External Sorting • F1 [10 ... 110] • F2 [40 ... 153] F3 [vazio] • F1 [10 ... 153] • F2 [22 ... 140] F3 [10 ... 153] [22 80 140] ORI – External Sorting • Características – Ordena arquivos de qualquer tamanho – Leitura seqüêncial mais rápida • Podem ser utilizadas fitas... – Ordenação interna com método rápido ORI – External Sorting • Merge Para analisar o processo de ordenação externa – e mais especificamente o merge – vamos considerar um disco rígido de alguns anos atrás (1997) da marca Seagate: Capacidade : 9 GB Seek time de trilha a trilha: 0.78 ms Seek time médio: 8 ms Rotational delay (médio): 3 ms Transfer rate: 14.506 bytes / ms ORI – External Sorting • Suposições: – Arquivos são sempre armazenados em áreas contíguas no disco. Assim, somente um seek é preciso para uma leitura seqüêncial; – Se a quantidade de dados a ser lida for maior que o espaço de uma trilha, assume-se 1 rotational delay. ORI – External Sorting • Durante a fase de ordenação é preciso ler os dados e criar as rodadas. Escrevendoas no disco. • Durante a fase de merge é preciso ler os dados de cada rodada e escrever o resultado de cada rodada no disco. ORI – External Sorting • Passo 1: Lendo registros – Os dados são lidos de 10 em 10 MB (80 vezes). O tempo para ler cada rodada inclui o tempo de acesso a cada bloco (seek time + rotational delay) + tempo de transferência. Assim, para nosso disco exemplo, temos: • 8 + 3 = 11 ms – Como vamos fazer 80 acessos, o tempo total será de 1 s – O tempo de transferência será de 60 s ORI – External Sorting • Passo 2: Escrita das rodadas – Processo reverso do anterior – Outros 61 s ORI – External Sorting • Passo 3: Lendo rodadas p/ o merge – Temos que ler 1/80 de cada rodada para realizar o merge. Assim, temos que ler cada rodada 80 vezes. E temos 80 delas para serem lidas... – 80 x 80 = 6.400 seeks – Assim 6.400 x 11 ms = 70 s – Tempo de transferência dos dados = 60 s – Total 130 s ORI – External Sorting • Passo 4: Escrita no disco – Depende do tamanho do buffer de saída. Para simplificar, vamos assumir um buffer de 200.000 bytes: • 800.000.000 / 200.000 = 4.000 seeks – 4.000 x 11 ms = 44 s – Tempo de transferência = 60 s – Total geral = 61 + 61 + 130 + 104 = 356 s (ou 5 minutos e 56 segundos) ORI – External Sorting • E o que aconteceria se aumentássemos a magnitude do problema ? • Analisando o problema verificamos que a leitura e a escrita são majoritariamente seqüêncial e, portanto, muito difícil de ter o desempenho melhorado. • A fase de merge, entretanto, pode ser melhorada... ORI – External Sorting • Se aumentarmos o tamanho do arquivo em um fator de 10, sem aumentarmos o tamanho da área de trabalho, precisaremos criar mais rodadas... Se antes tínhamos 80, agora teremos 800... Isso significa que vamos ter um merge de 800 arquivos que devem ser acessados 800 vezes 800 x 800 = 640.000 seeks. ORI – External Sorting Fase Seeks Transfer (mb) Seek+ Rot. Transfer (seg) Total (seg) leitura 640.000 8000 7040 600 7640 escrita 40.000 8000 440 600 1040 total 680.000 16000 7480 1200 8680 ORI – External Sorting • 8.680 s 2h e 24 m (aprox. 25 vezes o tempo de um arquivo de 800 MB) ORI – External Sorting • Analisando... – A grande diferença entre os problemas foi relativa ao seek time e o rotational delay. No primeiro caso tínhamos 6.400 seeks contra 640.000 no segundo (100 x 102 x); – Tínhamos 4.000 seeks de escrita e temos 40.000 agora (10 x); ORI – External Sorting • Concluindo... – A solução atual é O(n2) do ponto de vista de seeks... ORI – External Sorting • Como melhorar? – Melhoria de hardware; – Melhoria de software. ORI – External Sorting • Melhorando o algoritmo: • Ao invés de combinarmos as 800 rodadas de uma só vez, vamos criar um novo passo: vamos fazer 25 conjuntos de 32 rodadas cada (25 x 32 = 800) • Cada um dos buffers iniciais terá 1/32 da rodada o que perfaz 32 x 32 = 1024 seeks. • Com 25 conjuntos tem-se 25 x 1024 = 25.600 seeks. • Cada rodada resultante será de 320 MB (3.200.000 regs x 100.000 regs anteriormente) ORI – External Sorting Na segunda fase, teremos 25 rodadas finais. Cada buffer deverá conter 1/25 do espaço alocado (ou 1/800 de uma rodada). Assim, teremos 800 seeks por rodada: 25 x 800 seeks = 20.000 seeks Total das duas fases: 25.600 + 20.000 = 45.600 ORI – External Sorting É óbvio que teremos também que contabilizar os tempos extras de escrita e transmissão. Temos que transmitir os dados 3 vezes (no lugar de 2). Assim, o tempo de transmissão aumenta em 1.200 s. Além disso, escrevemos os registros 2 vezes (no lugar de 1), o que implica em mais 40.000 seeks (de escrita). O total geral será de 3.782 s (ou 1 h e 3 m – contra as 2h e 25 m)