ARQUITETURA DE COMPUTADORES - 1866 6.7 – Operações com as Memórias: Já sabemos, conforme anteriormente citado, que é possível realizar duas operações em uma memória: • Escrita (write) – armazenar informações na memória; • Leitura (read) – recuperar uma informação armazenada na memória. A operação de leitura não destrói o conteúdo da memória, ela apenas providencia a transferência de uma cópia do que está armazenado, enquanto a informação desejada continua armazenada. Somente a operação de escrita é destrutiva. 6.8 – Memória Virtual: Antes de poder explicar o que é a memória virtual, é importante ao menos voltarmos a falar um pouco a respeito da memória principal (MP) = RAM. A memória RAM é o local que o processador utiliza para armazenar tudo que estiver aberto em seu computador, como arquivos, jogos e todo tipo de programas. Assim, conforme vamos abrindo mais aplicativos, a RAM vai sendo consumida. A memória principal (RAM) disponível em um computador é em geral bem menor do que o tamanho máximo de memória permitido pelo processador (por exemplo, em uma arquitetura de 32 bits podemos endereçar até 4 GB de memória principal). O problema é que temos um espaço limitado de memória RAM e, cada vez mais, os aplicativos consomem partes maiores dela. E o que o processador faz quando a memória RAM acaba? Muito simples: utiliza a Memória Virtual. O mecanismo de memória virtual foi criado para permitir a execução de programas que necessitem de mais memória principal (RAM) do que a quantidade instalada no sistema. A memória virtual é uma espécie de arquivo que é criado no computador e o processador utiliza para armazenar dados que ele costuma deixar na memória RAM. É como se ele simulasse a memória RAM dentro do seu HD, por isso que se chama memória virtual. E por que será que a memória RAM é mais cara? Não seria mais fácil simplesmente utilizar o HD para armazenar os dados? Não exatamente, porque a - 48 - ARQUITETURA DE COMPUTADORES - 1866 memória virtual é extremamente mais devagar do que a memória RAM. Dessa forma, se o seu computador estiver com pouca memória RAM e precisar usar a memória virtual para armazenar dados dos programas, com certeza o desempenho vai despencar. Existe uma separação da memória lógica do usuário, da memória física: • somente uma parte do programa precisa estar na memória para execução; • o espaço de endereçamento lógico pode ser muito maior que espaço de endereçamento físico; • permite o compartilhamento de espaços de endereços por vários processos. Em um sistema de memória virtual, o endereço de memória gerado pelo programa é um endereço virtual, sendo diferente do endereço real usado para o acesso à memória principal. Os possíveis endereços virtuais que podem ser gerados pelo programa formam o espaço de endereçamento virtual, enquanto a faixa de endereços na memória principal constitui o espaço de endereçamento real. Embora sob o ponto de vista do programa as instruções e dados estejam armazenados no espaço de endereçamento virtual, na realidade eles continuam armazenados na memória principal, representada pelo espaço de endereçamento real. Esta diferença entre endereçamento virtual e real utiliza um mecanismo que faz a correspondência entre o endereço virtual gerado pelo programa e o endereço real que será usado para acessar a memória principal, o gerenciador de memória virtual, ou DAT (Dynamic Address Translator). - 49 - ARQUITETURA DE COMPUTADORES - 1866 Como a memória virtual pode ser muito maior do que a memória principal presente, pode acontecer que o bloco de dados referenciado pelo programa não esteja presente na memória principal no momento que é referenciado. Os blocos de dados e instruções de um programa em execução ficam armazenados na memória secundária, que é uma unidade de disco do sistema. Na ausência do bloco referenciado pelo programa no momento que o DAT realiza o mapeamento, este é carregado da memória secundária para a memória principal. 6.8.1 – Memória Virtual - Segmentação e Paginação: Blocos de memória podem ser organizados de duas formas: em segmentos ou páginas. O segmento pode ser formado por um bloco de informações logicamente relacionadas; os segmentos podem ter tamanho variável. Uma página é um bloco de dados de tamanho fixo e não segue nenhuma coesão lógica, isto é, os dados podem não ter relação entre si. O DAT possui uma pequena memória interna chamada TLB (Translation Lookaside Buffer), que armazena os pares de endereços virtual/principal acessados recentemente, como uma memória cache. No acesso a uma posição de memória virtual, se o dado requerido não possui um registro relacionando com a memória principal, o bloco de dados também não se encontra na memória principal. Essa ausência de bloco é denominada falha de página ou falha de segmento. 6.8.2 – Controle de Memória Virtual: Ao ocorrer uma falha o DAT gera uma interrupção, transferindo o controle do processador para o sistema operacional, para que este transfira o bloco de dados referenciado da memória secundária para a memória principal. Após a transferência do bloco de dados ser concluída, o controle do processador retorna ao programa em execução, exatamente para o ponto onde foi interrompido, agora com os dados referenciados presentes na memória principal. - 50 - ARQUITETURA DE COMPUTADORES - 1866 Com a utilização da memória virtual, não é necessário que todas as instruções e dados de um programa permaneçam na memória principal durante a execução do programa, blocos são transferidos da memória secundária para a principal à medida que forem referenciados. É importante ressaltarmos que todo o mecanismo de memória virtual funciona de forma totalmente transparente para o programa, e mais importante, para o programador que o desenvolveu. 6.9 – Memória Cache: A memória cache é uma pequena porção de memória inserida entre o processador e a memória principal, cuja função é acelerar a velocidade de transferência das informações entre a CPU e a memória principal e, com isso, aumentar o desempenho dos sistemas de computação. Para tanto, este tipo de memória é fabricado com tecnologia semelhante à da CPU e, em conseqüência, possui tempos de acesso compatíveis com a mesma, resultando numa considerável redução da espera da CPU para receber dados e instruções da cache, ao contrário do que acontecem em sistemas sem cache. Devido ao custo, a capacidade de armazenamento costuma ser da ordem de Kbytes. Nos sistemas mais modernos já encontramos caches com 1 Mbyte ou mais. As memórias cache podem ser inseridas em dois ou mais níveis. O primeiro nível é o L1 (Level 1 – Nível 1), uma memória cache inserida internamente no processador, isto é, é encapsulada na mesma pastilha. Nas placas-mãe mais antigas a cache L2 vinha soldada na própria placa, sendo que os processadores mais novos já possuem esta memória em seu próprio interior, a exemplo da L1. Quando processadores que possuem cache L1 e L2 em seu próprio interior são instalados em - 51 - ARQUITETURA DE COMPUTADORES - 1866 uma placa mãe que possua memória cache, esta passa a ser utilizada como cache de nível 3, ou L3. Já existem processadores que possuem esta memória (L3) também em seu próprio interior. Como exemplo podemos citar o processador Core i7 da Intel, que possue 8MB de cache L3. Neste caso, se existir memória cache presente na placa mãe, esta será considerada como L4. A CPU procura por dados primeiro em L1, depois em L2 (e/ou L3 e L4) e finalmente requisita os dados da memória principal. 6.10 – Organização para transferência de Informações entre CPU/Cache/MP: Sempre que a CPU vai buscar uma nova informação (instrução ou dado), ela acessa a memória cache. Se a informação estiver na cache, chama-se de acerto (ou hit), ela é transferida em alta velocidade, compatível com a da CPU. Se a informação não estiver na cache, chama-se de falta (ou fault), então o sistema está programado para interromper a execução do programa e transferir a informação desejada da MP para a cache. Só que essa transferência não é somente da instrução desejada, mas dela e de um grupo subsequente, na pressuposição de que as instruções do grupo serão requeridas pela CPU em seguida e, portanto, já estarão na cache quando necessário (acertos). Para haver realmente algum aumento de desempenho de um sistema de computação, com a inclusão da memória cache, é necessário que haja mais hits do que faults. - 52 - ARQUITETURA DE COMPUTADORES - 1866 6.11 – Memória Secundária (ou Auxiliar): Na base da pirâmide que representa a hierarquia de memória em um sistema de computação encontra-se um tipo de memória com maior capacidade de armazenamento do que os outros tipos já descritos, menor custo por byte armazenado e com tempos de acesso também superiores aos outros tipos. Esta memória denominada memória secundária ou memória auxiliar tem por objetivo garantir um armazenamento mais permanente aos dados e programas do usuário, razão por que deve naturalmente possuir maior capacidade que a memória principal. Este tipo de memória pode ser constituído por diferentes tipos de dispositivos, alguns diretamente ligados ao sistema para acesso imediato (discos rígidos, por exemplo) e outros que podem ser conectados quando desejado (como pen drive, CD, DVD, etc), cuja informação armazenada se torna disponível para o usuário quando o específico pen drive ou CD estiver inserido no elemento de leitura (porta USB ou drive de CD-ROM, respectivamente). Dispositivos de memória secundária são necessários a qualquer sistema de computação, pois nenhum computador fica ininterruptamente ligado, ou seja, os dados e instruções não podem ficar armazenados indefinidamente na memória principal. Vejamos abaixo algumas características deste tipo de memória: Tempo de acesso: os dispositivos que representam este tipo de memória são eletromecânicos e não circuitos puramente eletrônicos (como é o caso dos registradores, memória cache e memória principal), por isso este tipo de memória possui os maiores tempos de acesso dentre todos os tipos de memória. Capacidade de armazenamento: uma das principais características da memória secundária é sua grande capacidade de armazenamento, a qual também varia consideravelmente dependendo do tipo de dispositivo utilizado. Volatilidade: uma das principais características dos dispositivos que constituem a memória secundária é sua não volatilidade: as informações não se perdem quando não há alimentação elétrica. Trata- - 53 - ARQUITETURA DE COMPUTADORES - 1866 se, pois, de dispositivos úteis para guardar os programas e dados de forma permanente. 6.11.1 – Geometria dos Discos Rígidos (HD): O disco rígido ou HD (Hard Disk) é um dispositivo de armazenamento de grande volume de dados (Memória Secundária), não volátil. No HD são armazenados os programas instalados no computador (Sistema Operacional: Windows, Linux, Mac OS / Aplicativos: Word, Excel, Outlook, Nero, IE, Firefox, Photoshop, etc) e os arquivos gerados pelos mesmos (Fotos, Textos, Músicas, Planilhas, Apresentações, etc). Um disco consiste de pratos, cada qual com duas superfícies. Cada superfície consiste de anéis concêntricos denominados trilhas. Cada trilha consiste de setores separados por espaços. O número de trilhas em um disco e a capacidade que cada trilha pode armazenar depende do tipo de disco. Numeradas da borda para o centro, isto é, a trilha que fica mais próxima da extremidade do disco é denominada trilha 0, a trilha que vem em seguida é chamada trilha 1, e assim por diante, até chegar à trilha mais próxima do centro. Os HDs com grande capacidade contam com mais de um prato, sobrepostos um sobre o outro. - 54 - ARQUITETURA DE COMPUTADORES - 1866 Trilhas de mesmo número em faces diferentes formam um cilindro. Exemplo: Todas as trilhas de número Zero de todos os discos formam o cilindro Zero. Os cilindros são numerados a partir de zero, na borda mais externa dos discos. As faces também são numeradas, começando de zero na superfície mais alta. 6.11.2 – Capacidade do Disco: Capacidade: é número máximo de bits que podem ser armazenados expresso em terabytes (1 TB). Fatores que determinam a capacidade: Densidade de gravação: número de bits que podem ser gravados em 1 polegada de uma trilha. Densidade de trilha: número de trilhas que podem existir em um segmento radial. Densidade de armazenamento: produto da densidade de gravação com densidade de trilha. Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) - 55 - ARQUITETURA DE COMPUTADORES - 1866 Exemplo 01: – 512 bytes/setor – 300 setores/trilha (em média) – 20.000 trilhas/superfície – 2 superfícies/prato – 5 pratos/disco Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 ≅ 30,72 GB Exemplo 02: – 512 bytes/setor – 500 setores/trilha (em média) – 100.000 trilhas/superfície – 2 superfícies/prato – 5 pratos/disco Qual será a capacidade deste disco? - 56 - ARQUITETURA DE COMPUTADORES - 1866 6.11.3 – Operação do Disco: Operação de disco com múltiplos discos 6.11.4 – Organização do Disco – Setor de Boot: Nem toda a área disponível no disco pode ser utilizada para a gravação de arquivos de dados. É necessário reservar certas porções para operações necessárias a qualquer sistema, como o setor de boot e tabelas de alocação de arquivos. A BIOS (Basic Input/Output System) lê um setor específico do disco rígido, chamado se setor de boot mestre MBR (Master Boot Record) ou trilha zero. O setor de boot do HD armazena informações sobre o Sistema Operacional instalado, quais arquivos devem ser carregados para inicializar o sistema, etc. O setor de boot funciona como um ponto de partida. Assim que o computador é ligado, a BIOS lê o setor de boot e segue as instruções que estiverem gravadas nela, que iniciarão o carregamento do Sistema Operacional. Geralmente o boot é feito através do HD, mas - 57 - ARQUITETURA DE COMPUTADORES - 1866 de acordo com o que for configurado na opção "Boot Sequence" no Setup, a BIOS pode procurar o boot também no disquete (atualmente em desuso), no CD-ROM, num disco Zip ou até mesmo tentar dar boot através da rede. 6.11.5 – Organização do Disco – Endereçamento: Para que o sistema operacional seja capaz de recuperar dados rapidamente de um sistema de memória de armazenamento secundário, é necessária a utilização de um sistema de endereçamento, denominado genericamente de formatação. A formatação organiza trilhas e setores do disco em regiões onde os dados são, de fato, gravados. O tamanho destas regiões varia segundo o processo de formatação utilizado. 6.11.5.1 – File Allocation Table - FAT FAT é a sigla para File Allocation Table (Tabela de Alocação de Arquivos). A primeira versão do FAT surgiu em 1977, para trabalhar com o sistema operacional MS-DOS, mas foi padrão até o Windows 95. Trata-se de um sistema de arquivos que funciona com base em uma tabela que indica onde estão os dados de cada arquivo. Esse esquema é necessário porque o espaço destinado ao armazenamento é dividido em blocos, e cada arquivo gravado pode ocupar vários destes, mas não necessariamente de maneira sequencial: os blocos podem estar em várias posições diferentes. Assim, a tabela acaba atuando como um "guia" para localizá-los. Entendendo os sistemas de arquivos FAT: Em um disco rígido, a área de armazenamento é dividida em trilhas. Cada trilha é subdividida em setores. Desse modo, é de se presumir que os sistemas de arquivos FAT trabalhem diretamente com esses setores. Mas não é bem assim. Na verdade, o FAT trabalha com grupos de setores, onde cada um recebe a denominação cluster (ou unidade de alocação). No caso do FAT16, cada cluster pode ter, comumente, um dos seguintes tamanhos: 2 KB, 4 KB, 8 KB, 16 KB e, por fim, 32 KB. A definição desse tamanho é uniforme, ou seja, não pode haver tamanhos variados de clusters em uma mesma unidade de armazenamento. - 58 - ARQUITETURA DE COMPUTADORES - 1866 Cada arquivo gravado utiliza tantos clusters quanto forem necessários para cobrir o seu tamanho. Se, por exemplo, tivermos um arquivo com 50 KB, é possível guardá-lo em dois clusters de 32 KB cada. Você deve ter percebido então que, neste caso, um cluster ficou com espaço sobrando. Esta área pode ser destinada a outro arquivo, correto? Errado! Acontece que cada cluster só pode ser utilizado por um único arquivo. Se sobrar espaço, este permanecerá vazio. Esse é um dos problemas do sistema FAT: desperdício. Normalmente, o tamanho dos clusters é definido no procedimento de instalação do sistema operacional, na etapa de formatação da unidade de armazenamento. Diferenças entre FAT16 e FAT32 O FAT16 utiliza 16 bits para endereçamento dos dados (daí o número 16 na sigla), o que, na prática, significa que o sistema de arquivos pode trabalhar com até 65536 clusters, no máximo. Para chegar a este número, basta fazer 216 = 65536. O sistema de arquivos FAT32 consegue solucionar esse problema por utilizar 32 bits no endereçamento de dados (novamente, aqui você pode perceber o porquê do número na sigla). No FAT16, quanto maior o espaço em disco, maior o tamanho do cluster. Com o FAT32, é possível usar clusters menores - geralmente de 4 KB mesmo com a unidade oferecendo maior capacidade de armazenamento. Desta forma, o desperdício acaba sendo menor. 6.11.5.2 – NTFS Para discos de maior capacidade, procuramos reduzir o tamanho do cluster, para evitar a fragmentação interna (a fragmentação interna ocorre quando a área mínima de gravação que definimos para arquivos não é totalmente utilizada), e a conseqüente perda de espaço de armazenamento. O NTFS (New Technology File System) foi desenvolvido pela Microsoft para ser utilizado pelo Windows NT e seus derivados (2000, XP, Vista, Server 2003, Server 2008 e Seven) para ser um sistema de arquivos mais flexível, confiável, adaptável, seguro e veloz. - 59 - ARQUITETURA DE COMPUTADORES - 1866 O acesso é direto ao setor físico, de 512 bytes, independente do tamanho do disco. Com partições NTFS é ainda possível armazenar um maior volume de dados e suporte a nomes longos de arquivos. Obs: O Windows 8 utiliza uma nova versão de sistemas de arquivos desenvolvido pela Microsoft: o ReFS (Resilient File System). Trata-se de um novo sistema de arquivos que fez sua estréia em 2012 e baseia-se no NTFS. Esse sistema de arquivos traz suporte aprimorado para grandes volumes e maior confiabilidade para estruturas de discos. 6.11.6 – Partições Discos rígidos (HDs) podem ser divididos logicamente em espaços que chamamos de partições, com o objetivo de realizar um melhor gerenciamento de uma grande quantidade de dados. Cada partição contém seu próprio setor de boot, o que quer dizer que cada uma pode ter seu próprio sistema operacional. No primeiro setor físico do disco rígido fica armazenado o MBR (Master Boot Record), que é uma tabela de partição, onde ficam armazenadas as informações sobre as partições. Junto ao MBR fica armazenado um programa de pré-boot, que manipula a tabela de partição, determinando de qual partição será realizada a inicialização (boot) do computador. Somente uma partição pode ser considerada ativa por vez. - 60 -