Total de visualizações de página

segunda-feira, 9 de abril de 2012

Sistemas de Arquivos




Introdução

Todos nós sabemos que dados - sejam eles partes de programas ou dados propriamente dito, como um texto ou uma planilha - devem ser armazenados em um sistema de memória de massa, já que a memória (RAM) do micro é apagada quando desligamos o computador. Memória de massa é o nome genérico para qualquer dispositivo capaz de armazenar dados para uso posterior, onde incluímos disquetes, discos rígidos, CD-ROMs, ZIP drives e toda a parafernália congênere.
Dados são armazenados em forma de arquivos e a maneira com que os arquivos são armazenados e manipulados dentro de um disco (ou melhor dizendo, dentro de um sistema de memória de massa) varia de acordo com o sistema operacional.

A capacidade de armazenamento

Na maioria das vezes, um disco é dividido em pequenas porções chamadas setores. Dentro de cada setor cabem 512 bytes de informação. Multiplicando-se o número total de setores de um disco por 512 bytes, teremos a sua capacidade de armazenamento.
No caso de um disco rígido, ele possui na verdade vários discos dentro dele. Cada face de cada disco é dividida em círculos concêntricos chamados cilindros ou trilhas. Em cada trilha temos um determinado número de setores. É claro que toda esta divisão é invisível, pois é feita magneticamente. Para sabermos qual o número total de setores de um disco rígido, basta multiplicarmos sua geometria, ou seja, o seu número de cilindros, lados (parâmetro também chamado de "cabeças") e setores por trilha. Um disco rígido que possua a geometria 2448 cilindros, 16 cabeças e 63 setores por trilha, terá 2448 x 16 x 63 = 2.467.584 setores. Multiplicando-se o número total de setores por 512 bytes, teremos sua capacidade total, no caso 1.263.403.008 bytes.
Importante notar que 1 KB não representa 1.000 bytes, mas sim 1.024, assim como 1 MB não representa 1.000.000 de bytes, mas sim 1.048.576. Muita gente arredonda e acaba errando nas contas. Lembre-se: 1 KB = 210, 1 MB = 220 e 1 GB = 230. No exemplo dado, o disco rígido seria de 1,18 GB (basta dividir a capacidade que encontramos em bytes por 230 para encontrarmos o resultado em gigabytes) e não 1,26 GB como seria de se supor.

O sistema de arquivos FAT-16

O sistema de arquivos utilizado pelo MS-DOS chama-se FAT-16. Neste sistema existe uma Tabela de Alocação de Arquivos (File Allocation Table, FAT) que na verdade é um mapa de utilização do disco. A FAT mapeia a utilização do espaço do disco, ou seja, graças à ela o sistema operacional é capaz de saber onde exatamente no disco um determinado arquivo está armazenado.
Existem várias posições na FAT, sendo que cada posição aponta a uma área do disco. Como cada posição na FAT-16 utiliza uma variável de 16 bits, podemos ter, no máximo, 216 = 65.536 posições na FAT. Como em cada setor cabem apenas 512 bytes, concluímos que, teoricamente, poderíamos ter discos somente de até 65.536 x 512 bytes = 33.554.432 bytes ou 32 MB.
Por este motivo, o sistema FAT-16 não trabalha com setores, mas sim com unidades de alocação chamadas clusters, que são conjuntos de setores. Em vez de cada posição da FAT apontar a um setor, cada posição aponta para um cluster, que é um conjunto de setores que poderá representar 1, 2, 4 ou mais setores do disco.

Tamanho do Cluster
Capacidade Máxima de Armazenamento
2 KB
128 MB
4 KB
256 MB
8 KB
512 MB
16 KB
1 GB
32 KB
2 GB

Desperdício: Um grave problema

O tamanho do cluster é definido automaticamente pelo sistema operacional quando o disco é formatado, seguindo a tabela. Um disco rígido de 630 MB utilizará clusters de 16 KB, enquanto um de 1, 7 GB utilizará clusters de 32 KB.
Como a menor unidade a ser acessada pelo sistema operacional será o cluster, isto significa que os arquivos deverão ter, obrigatoriamente, tamanhos múltiplos do tamanho do cluster.
Isto significa que um arquivo de 100 KB em um disco rígido que utilize clusters de 8 KB obrigatoriamente ocupará 13 clusters, ou 104 KB, pois este é o valor mais próximo de 100 KB que conseguimos chegar utilizando clusters de 8 KB. Neste caso, 4 KB serão desperdiçados.
Quanto maior o tamanho do cluster, maior o desperdício. Se o mesmo arquivo de 100 KB for armazenado em um disco rígido que utilize clusters de 16 KB, ele obrigatoriamente utilizará 7 clusters, ou 112 KB. E, para o caso de um disco rígido com clusters de 32 KB, este mesmo arquivo ocupará 4 clusters, ou 128 KB.
O desperdício em disco é um dos maiores problemas do sistema FAT, característica que chamamos de slack space. Quando maior o tamanho do cluster, mais espaço em disco é desperdiçado.
Para saber qual o tamanho do cluster que está sendo utilizado em seu disco rígido, basta utilizar o comando CHKDSK, observando a linha "xxxxxx bytes em cada unidade de alocação", onde "xxxxx" é o tamanho do cluster em bytes.



Fat-32, HPFS e NTFS

Vimos que o grande vilão do sistema FAT-16 é o desperdício em disco. Há, contudo, outro grande problema: o sistema FAT-16 não reconhece diretamente discos maiores que 2 GB. Para que discos com mais de 2 GB possam ser utilizados, devemos particioná-los, ou seja, dividi-los logicamente em outros menores que 2 GB. No caso de um disco rígido de 2,5 GB devemos obrigatoriamente dividi-lo em dois, podendo esta divisão ser, por exemplo, uma unidade de 2 GB e outra de cerca de 500 MB.

FAT-32: A solução definitiva?

Junto com a última revisão do Windows 95 (chamado Windows 95 OSR2), a Microsoft lançou  um novo sistema de arquivos, denominado FAT-32. Este sistema estará presente também no novo sistema operacional da Microsoft, o Memphis.
Com o sistema FAT-32 o tamanho dos clusters é sensivelmente menor, o que faz com que haja bem menos desperdício. Este sistema permite, também, que discos rígidos de até 2 terabytes (1 TB = 2^40 bytes) sejam reconhecidos e acessados diretamente, sem a necessidade de particionamento.

Tamanho do Cluster
Capacidade Máxima de Armazenamento
512 bytes
256 MB
4 KB
8 GB
8 KB
16 GB
16 KB
32 GB
32 KB
2 TB

O sistema FAT-32 apresenta, porém, uma série de pequenos problemas:
  Disco que utilizem o sistema FAT-32 não são "enxergados" por outros sistemas operacionais que não sejam o Windows 95 OSR2. Até mesmo o Windows 95 tradicional não acessa discos que estejam formatados com o sistema FAT-32.
  Utilitários de manutenção de disco rígido mais antigos também não acessam discos formatados em FAT-32, como, por exemplo, o Norton Utilities (a última versão do Norton Utilities já reconhece discos em FAT-32).
  Não é mais rápido. No geral é cerca de 6 % mais lento que o sistema FAT-16. Quanto mais clusters o disco rígido tiver e quanto menor eles forem, mais lento será o sistema de armazenamento de dados.

HPFS e NTFS: As verdadeiras soluções

A verdadeira solução para o problema de desperdício em disco é a utilização de um outro sistema de arquivos que não o FAT. O sistema operacional OS/2, por exemplo, possui um excelente sistema de arquivos denominado HPFS (High Performance File System). O sistema operacional Windows NT também possui o seu próprio (e também excelente) sistema de arquivos, denominado NTFS (New Technology File System).
No caso do OS/2 e do Windows NT, na hora de sua instalação o usuário pode optar em utilizar o sistema FAT-16 ou então o HPFS/NTFS. A vantagem destes sistemas de arquivo é que não há desperdício em disco, pois não há clusters: a menor unidade de alocação é o próprio setor de 512 bytes.
A desvantagem óbvia destes sistemas de arquivos: só podem ser utilizados em conjunto com os seus sistemas operacionais. Ou seja, não há como instalar o HPFS no Windows 95... Outra desvantagem: assim como o sistema FAT-32, não são "enxergados" por outros sistemas operacionais diretamente (há, contudo, alguns "macetes" que permitem com que esta limitação seja transposta).

Particionamento

Dividir o disco rígido  em mais de uma partição nos traz algumas vantagens. A começar pela diminuição do desperdício em disco - o slack space, conforme havíamos visto. Podemos dividir um disco rígido de 1,7 GB em duas partições de cerca de 850 MB, por exemplo. Enquanto uma partição de 1,7 GB utiliza clusters de 32 KB, uma partição de 850 MB utiliza clusters de 16 KB, o que é bem mais aceitável.
O particionamento é feito através do comando FDISK e sua grande desvantagem é a perda total dos dados já instalados no disco rígido. Após o particionamento do disco, deveremos formatar cada partição individualmente.
Cada partição é tratada pelo sistema operacional como se fosse um disco rígido "a parte". Ou seja, o nosso disco de 1,7 GB que particionamos em dois de 850 MB será encarado pelo usuário como se fosse dois disco rígidos de 850 MB, um disco rígido "C:" e um "D:", embora fisicamente só haja um disco instalado ao micro.
Se você tiver dois discos rígidos  instalados no micro (um "C:" e um "D:"), as partições "extras" irão ser apresentadas com as próximas letras disponíveis, ou seja, se o primeiro disco possuir duas partições, a segunda partição irá ser apresentada como "E:" e não "D:" - letra que será utilizada pelo segundo disco rígido. Em relação a unidades de CD-ROM e/ou ZIP-drive, não há com o que se preocupar: o sistema operacional irá automaticamente renomeá-las para a próxima letra disponível.
Há outra enorme vantagem em se particionar o disco rígido: podemos ter um sistema operacional diferente em cada partição.

Instalando mais de um sistema operacional no disco rígido

Continuando o nosso exemplo do disco rígido de 1,7 GB que foi particionado em dois de 850 MB, podemos instalar em cada partição um sistema operacional diferente. Por exemplo, na partição C: podemos instalar o Windows 95 e na partição D: o MS-DOS com Windows 3.x. Ou, então, o Windows 95 na partição C: e o OS/2 na partição D:. Ou o Windows NT na partição C: e Windows 95 na partição D:. Enfim, você decide quais sistemas operacionais irão ocupar cada partição!
Além de você isolar completamente os arquivos de um sistema operacional do outro, há ainda uma outra grande vantagem: podemos utilizar sistemas de arquivos diferentes em cada partição. Na partição do Windows 95 podemos utilizar o sistema FAT-16, enquanto em uma partição com Windows NT podemos instalá-lo com o seu sistema NTFS.
E mais: podemos escolher com que partição podemos dar boot. Em outras palavras, poderemos escolher qual o sistema operacional que será carregado quando ligamos o micro!

Escolhendo o sistema operacional de boot

A partição que dará boot poderá ser escolhida através de um programinha chamado boot manager. As versões atuais deste programa são instaladas no Setor de Boot Mestre (MBR - Master Boot Record) do disco rígido, fazendo com que um menu interativo seja apresentado toda a vez em que você inicializa o micro, perguntando ao usuário que partição ele deseja para boot. Se você tiver sistemas operacionais diferentes instalados em partições separadas, você conseqüentemente escolherá qual sistema operacional o micro carregará em memória.
O Boot Manager acompanha os sistemas operacionais OS/2 e Windows NT. Para quem não pretende instalar estes sistemas, o Boot Manager poderá ser instalado através do programa Partition Magic, da Power Quest (veja em http://www.powerquest.com).

Sistemas de Arquivos no Android

No Android, os arquivos agrupam-se de forma hierárquica chamada sistemas de arquivos. Um dispositivo móvel geralmente possui dois sistemas de arquivos: a memória não volátil do aparelho e o cartão de memória removível (cartão SD, por exemplo), sendo que ambos são mostrados como ramificações do diretório principal (/).Diferentemente de sistemas de desktops comuns, no Android somente o aplicativo pode visualizar ou escrever em seu próprio diretório principal, e pode também, criar subdiretórios com permissões para que outros aplicativos o acessem. Quando uma aplicação necessita acessar uma informação de outra, utiliza-se um componente do tipo provedor de conteúdo. 
O sistema operacional roda sob o kernel 2.6.29 e reconhece os sistemas de arquivos EXT3, EXT2, NTFS E FAT (sendo estes dois últimos usados pelos Windows).No JAVA, o acesso ao sistema de arquivos é feita através das classes java.io. O Android fornece ainda classes auxiliares para criar e acessar novos arquivos e diretórios. Por exemplo, getDir (String s, int x) cria ou acessa um diretório, openFileInput (String s) abre um arquivo para entrada de dados e openFileOutput (String s, int x) cria o arquivo. O valor da variável de tipo int especifica as permissões, que podem ser:

MODE_PRIVATE: acesso proibido para outras aplicações.
MODE_WORLD_READABLE: acesso de leitura permitido para outras aplicações.
MODE_WORLD_WRITABLE: acesso de escrita permitido para outras aplicações.
MODE_WORLD_READABLE | MODE_WORLD_WRITABLE: acesso de leitura e escrita permitido para outras aplicações.

Sistemas de arquivo no Symbian OS

O Symbian OS utliza o Flash Disk, que é o disco interno para manipulação e escrita de dados pelo utilizador e pelo sistema de arquivos do sistema operativo. O sistema suporta os sistemas de arquivos comuns nos SO’s da Microsoft , FAT , e para além deste o sistema de arquivos LFFS (Logging Fast File System).

 Sistemas de arquivo no iOS

O iOS utiliza o sistemas de arquivo ZFS, que foi desenvolvido pela Sun, como um formato dinâmico de de arquivo para o sistema Solaris 10. Por ser um formato 128-bit, possui a capacidade de armazenar uma quantidade maior de dados em relação a sistemas 64-bit, cerca de 16 bilhões de vezes.
Outra característica do novo formato é possuir uma verificação que detecta e corrige arquivos danificados.

Sistemas de arquivos no Blackberry

Você pode, automaticamente, criar e gerenciar os arquivos e as pastas em smartphones BlackBerry com a API FileConnection. A API FileConnection foi introduzida com o BlackBerry Device Software 4.2.
A API FileConnection está implementada no pacote  javax.microedition.io.file.
A API FileConnection é definida pelo JSR 75 e é incorporada à Estrutura genérica de conexão.  O componente principal da API FileConnection é a classe  javax.microedition.io.file.FileConnection.  Diferentemente de outras conexões de Estrutura genérica de conexão, os objetos FileConnection podem, com êxito, ser retornados do método javax.microedition.io.Connector.open() sem se referir a um arquivo ou uma pasta existente. Este comportamento permite a criação de novos arquivos e pastas em um sistema de arquivos. Além da documentação da RIM, há muitas fontes de informações sobre JSR 75 e a Estrutura genérica de conexão.
Além disso, a RIM fornece extensões à API FileConnection. O pacote net.rim.device.api.io.file inclui as seguintes classes e interfaces:
FileSystemJournal e FileSystemJournalListener oferecem uma maneira de detectar alterações ao sistema de arquivos.
ExtendedFileConnectionExtendedFileConnection permite a criptografia e a proteção de arquivos.
Você pode acessar o sistema de arquivos no armazenamento interno e no armazenamento externo por cartão de memória:

Armazenamento interno
Armazenamento interno é o armazenamento de aplicativo ou o armazenamento incorporado de mídia. Todos os smartphones BlackBerry têm armazenamento interno. Para acessar o armazenamento interno, use o caminho file:///store. Por exemplo: FileConnection fc = (FileConnection)Connector.open("file:///Store")
Armazenamento externo
Você pode acessar o armazenamento externo por cartão de memória apenas em smartphones com cartões microSD. Para acessar armazenamento externo por cartão de memória, use o caminho file:///SDCard. Por exemplo: FileConnection fc = (FileConnection)Connector.open("file:///SDCard")

Arquivos criados por seu aplicativo não são excluídos automaticamente quando o aplicativo é desinstalado.
Os smartphones que têm armazenamento incorporado de mídia têm uma partição de sistema de arquivos chamada Sistema. Você pode acessar esta partição com o caminho file:///system. No BlackBerry Device Software5.0 e posterior, a partição do sistema é somente leitura e está reservada para o uso do sistema. Em versões anteriores ao BlackBerry Device Software 5.0, a partição do sistema é de leitura/gravação.

Conclusão

Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que permitem ao sistema operacional controlar o acesso ao disco rígido. Diferentes sistemas operacionais usam diferentes sistemas de arquivos. Conforme cresce a capacidade dos discos e aumenta o volume de arquivos e acessos, esta tarefa torna-se mais e mais complicada, exigindo o uso de sistemas de arquivos cada vez mais complexos e robustos. Existem diversos sistemas de arquivos diferentes, que vão desde sistemas simples como o FAT16, que utilizamos em cartões de memória, até sistemas como o NTFS, EXT3 e ReiserFS, que incorporam recursos muito mais avançados.
No mundo Windows, temos apenas três sistemas de arquivos: FAT16, FAT32 e NTFS. O FAT16 é o mais antigo, usado desde os tempos do MS-DOS, enquanto o NTFS é o mais complexo e atual. Apesar disso, temos uma variedade muito grande de sistemas de arquivos diferentes no Linux (e outros sistemas Unix), que incluem o EXT2, EXT3, ReiserFS, XFS, JFS e muitos outros. Para quem usa apenas o Windows, estes sistemas podem parecer exóticos, mas eles são velhos conhecidos de quem trabalha com servidores, já que neles o Linux é que é o sistema mais popular.


Bibliografia:


Postado por:

Dyane , Monique, Luana, Lucas, Adriano e Elizabet. 

Nenhum comentário:

Postar um comentário