Falaremos sobre sistemas operacionais e seus respectivos sistemas de arquivos, mas antes teremos que conhecer alguns elementos importantes. Unidade de disco A unidade de disco será o local aonde ficará locado os sistemas de arquivos. Uma unidade de disco constitui-se de um ou mais pratos sobrepostos, cobertos por uma camada magnética. Existe uma cabeça de leitura-gravação para cada superfície. Cada superfície é dividida em anéis concêntricos (as trilhas) e uma trilha é dividida em setores, onde um setor tem, normalmente, 512 bytes. Demonstra os discos magnéticos com seus setores, trilhas e cilindros. As trilhas são numeradas de fora para dentro. Um conjunto de trilhas com o mesmo raio forma o cilindro. As cabeças de leitura-gravação são movimentadas conjuntamente, posicionando-se no mesmo cilindro. Essa geometria básica fornece um modelo para localização do setor, chamado CHS (cylinder, head, sector). O número do cilindro, juntamente com o numero da cabeça, fornece a localização da trilha. Identificando-se a trilha, pode-se localizar um determinado setor. Esse esquema é tridimensional, sendo necessário conhecer sempre os três parâmetros para localização do setor. O padrão LBA (logical block address) é mais simples. Os setores são identificados seqüencialmente (linearmente), começando da trilha mais externa. Se houver mais de um prato, cada superfície é numerada (a partir de zero) -- o setor zero é o primeiro setor na trilha zero, cabeça (superfície) zero. Essa é uma identificação unidimensional. Cabe à controladora no disco transformar esse número lógico de setor com a sua localização física no disco (mapeando cilindro, cabeça e setor correspondente). Apesar dos HD's virem fisicamente formatados já de fábrica, é preciso particioná-los e formatálos logicamente para serem usados por um sistema operacional. Uma partição é uma divisão de um disco rígido (SCSI ou ATA). Cada partição pode conter um sistema de arquivos diferente. Consequentemente, vários sistemas operacionais podem ser instalados na mesma unidade de disco. Sistema de arquivos É uma organização de dados e metadados em um dispositivo de armazenamento. São arquivos gerenciados pelo sistema operacional, aonde eles são estruturados, nomeados, acessados, utilizados, protegidos e implementados. O Sistema de Arquivos é a parte do Sistema Operacional mais visível para o usuário. O tempo todo, usuários manipulam arquivos contendo textos, planilhas, desenhos, jogos, etc. Cabe ao Sistema Operacional o suporte para a manipulação destes arquivos. Conceito de Arquivos Segundo o Dicionário Houaiss, podemos definir Arquivos como: “conjunto de dados digitalizados que pode ser gravado em um dispositivo de armazenamento e tratado como ente único [Arquivos podem conter representações de documentos, figuras estáticas ou em movimentos, sons e quaisquer outros elementos capazes de serem digitalizados.” Todo arquivo possui um nome e algumas propriedades, como tipo, tempo de criação, tamanho, nome do proprietário entre outras e ficam armazenados em diretório (ou pastas), que são utilizados para organizar estes arquivos. Formatação Existem dois tipos de formatação: a formatação física e a formatação lógica. Formatação física significa dividir a superfície do disco em vários setores, trilhas e cilindros. Esta é feita somente uma vez na fábrica, qualquer tentativa de formatar fisicamente o HD não terá resultados, ou irá inutilizá-lo. Esta opção existe apenas em HD's muito antigos como os de padrão de codificação MFM e RLL. Já a formatação lógica acontece através do comando FORMAT do MS-DOS, do Fdisk, e outros programas formatadores. Na formatação lógica, nenhum dado do HD é apagado, apenas é rescrito a Tabela de Alocação de Arquivos (FAT - File Allocation Table). Como o sistema operacional se orienta através desta tabela, reconhecerá o disco como estando vazio. Até serem rescritos porém, os dados antigos continuam lá, e podem ser recuperados através de programas específicos. O comando format /u quando usado em um disquete acarreta em uma formatação física, onde são remarcados todos os setores. Porém, quando usado em um HD tem um efeito exatamente igual ao comando FORMAT, a única diferença neste caso, é que não é salva uma imagem antiga da FAT, mas todos os dados continuam lá, tanto que se você antes de usar este comando fizer uma imagem da FAT usando um utilitário como o Image do Norton, poderá recuperar todos os dados do seu HD. Formatação lógica. Esse tipo é o mais conhecido e utilizado por grande parte dos usuários de computador. O meio de armazenamento é estruturado via software, de forma que possa abrigar futuramente informações requisitadas pelo usuário. Ao realizar-se uma formatação lógica, é criado o chamado sistema de arquivos, de acordo com formato estipulado pelo sistema operacional utilizado. Em contradição à formatação física realizada na fábrica, podem-se realizar inúmeras formatações lógicas sempre que necessário, e sem que com isso o meio de armazenamento seja prejudicado (ao contrário do que muitos usuários acreditam). Uma formatação lógica ainda pode ser dividida em 2 segmentos: ■Rápida: Somente o índice (tabela de alocação) que referencia os arquivos é apagado, fazendo com que o sistema operacional entenda que o dispositivo encontra-se vazio. Se o meio de armazenamento possuir erros lógicos em sua estrutura, essa formatação não irá garantir que os mesmos sejam corrigidos. Outra característica interessante é que, caso uma formatação rápida tenha sido realizada por acidente, os dados ainda poderão ser recuperados. ■Completa: Além de apagar o índice mencionado, o sistema operacional varrerá o meio de armazenamento em busca de erros lógicos, corrigindo-os (dentro do possível). Durante a varredura, o sistema aproveitará também para excluir os dados antigos que se encontram nos setores pesquisados. Por percorrer todo o dispositivo, pode demorar muito tempo para ser concluído (dependendo do tamanho do meio, bem como dos erros contidos no dispositivo).Nesse tipo de formatação ainda pode-se enquadrar as chamadas “formatações de baixo nível” (low level format), geralmente disponibilizadas por fabricantes de meios de armazenamento, em especial de discos rígidos. Trata-se de uma forma que busca minuciosamente erros na superfície do dispositivo, justamente pelo fato de ter sido elaborada exclusivamente para os produtos da empresa fabricante (podendo-se inclusive isolar erros físicos contidos na superfície do meio). Comumente são encontrados nesse quesito ferramentas exclusivas, como o “zero fill”, o qual consiste em uma formatação que preenche cada setor do dispositivo com zeros (preza pela confidencialidade, pois assegura que os antigos dados não sejam acessíveis por outras pessoas). Opção para alternar entre uma formatação rápida ou completa no Windows Vista Existem vários tipos de sistema de arquivos: •FAT: utilizado pelo MS-DOS, Windows 3.x e Windows 95 mas, perfeitamente reconhecido por todos os sistemas atuais (Windows XP e Linux). Este sistema não suporta os discos rígidos com mais de 2 Go. O tamanho dos clusters é bem grande, resultando em uma perda de espaço do disco. •FAT32: É uma evolução do Fat, reconhecido por todos os sistemas exceto pelo MS-DOS, Windows 3.x, Windows 95 Primeira Edição, Windows NT 3.5 e 4. Os discos podem ter até 2 TB (1 Terabyte vale 1024 GB). Os clusters são menores. •NTFS: utilizado pelo Windows NT, 2000 e XP. Linux reconhece este sistema experimentalmente porém, é melhor se limitar à leitura, sem gravação, para evitar a perda de dados. Este sistema não é possível para discos inferiores à 400 MB por que ele requer muito espaço para a estrutura do sistema. O tamanho dos clusters não depende do tamanho do disco (ou da partição) e você pode escolhê-lo à vontade. Em resumo, este sistema repara, automaticamente, os setores defeituosos. Por outro lado, os direitos administrativos são suportados. •Linux Ext2 (Ext2FS): utilizado pelo sistema Linux, não é reconhecido pelo MS-DOS e todos os sistemas do Windows. Os discos podem ter até 2 GB e os nomes dos arquivos até 255 caracteres. Os direitos administrativos são suportados. •Linux Ext3 (Ext3FS): utilizado pelo sistema Linux, não é reconhecido pelo MS-DOS e todos os sistemas do Windows. Os discos podem ter até 4 TB. Esta é uma melhoria do Ext2FS ao qual foi adicionada ao registro dos arquivos, para corrigir qualquer corrupção, rapidamente. •Reiser (ReiserFS): utilizado pelo Linux, este sistema é registrado a fim de corrigir as corrupções e não é reconhecido pelo MS-Dos e pelo Windows. •Linux Swap: utilizado pelo sistema Linux e não é reconhecido pelo MS-DOS e todos os sistemas do Windows. Este sistema serve para gerenciar o arquivo de troca do Linux (o Swap). •Não formatado: É uma partição virgem, sem qualquer sistema de arquivos. Saiba que existem algumas soluções, criticadas por alguns, para poder ler os sistemas originais do Windows : •Ext2 / Ext3 : Explore2fs •Reiser : rfstool Em sistemas GNU/Linux, ou Unix-like de uma maneira geral, quando se desejar acessar um sistema de arquivos seja uma partição, um disquete, um CD-ROM ou diferentes dispostivos tais como zip drive, pen-drives dentre outros, é necessário, inicialmente, montar o sistema de arquivos antes de começar a usá-lo. Atualmente, a maioria dos sistemas provêem mecanismos de automontagem, onde o sistema faz automaticamente a montagem para o usuário. Entretanto, algumas vezes temos que fazer esse processo manualmente, o que é feito utilizando-se o comando mount. O comando mount é utilizado para montar um dispositivo na hierarquia do sistema de arquivos O comando mount é usado para incluir o sistema de arquivos, de um dispositivo qualquer, à grande árvore de arquivos. Pronto? Já temos uma unidade de disco particionada ou não , formatada com um ou mais sistemas operacionais, com seus respectivos sistemas de arquivos. Mas quem faz o meio do caminho entre a Bios e o sistema escolhido? BIOS Em computação Basic Input/Output System (Sistema Básico de Entrada/Saída). O termo é incorretamente conhecido como Basic Integrated Operating System (Sistema Operacional Básico Integrado) ou Built In Operating System (Sistema Operacional Interno). O BIOS é um programa de computador pré-gravado em memória permanente (firmware) executado por um computador quando ligado. Ele é responsável pelo suporte básico de acesso ao hardware, bem como por iniciar a carga do sistema operacional. Existe um setor no disco também chamado de “Setor de Boot Mestre” (MBR), onde é encontrada a tabela de partição do disco que dará boot. A MBR é lida pelo BIOS, que interpreta a tabela de partição e em seguida carrega um programa chamado “Bootstrap”, que é o responsável pelo carregamento do Sistema Operacional, no setor de boot da partição que dará o boot. O MBR e a tabela de partição ocupam apenas um setor de uma trilha, o restante dos setores desta trilha não são ocupados, permanecendo vazios e inutilizáveis, servindo como área de proteção do MBR. É na verdade, uma área do HD reservada para gravação das instruções iniciais do computador.Também conhecida por trilha zero. Disquetes, Zip-disks e CDs-ROM não possuem MBR nem tabela de partição. Estes são exclusivos dos discos rígidos. Enfim, já temos tudo que precisamos para ter nosso sistema operacional e seu sistema de arquivos funcionando. Veremos a seguir as principais chamadas de sistemas (system call) Chamadas de Sistema Podemos definir o conjunto das Chamadas de Sistema como sendo a interface entre o Sistema Operacional e seus programas aplicativos. Vale ressaltar que as Chamadas de Sistemas exibidas aqui se referem especificamente ao sistema POSIX (Interface Portável entre Sistemas Operacionais), sistema de normalização criado por volta de 1985 pela IEEE, e tem como objetivo garantir a portabilidade do código-fonte de um programa a partir de um sistema operacional que atenda as normas POSIX para outro sistema POSIX. Como a verdadeira mecânica de uma chamada de sistema depende muito da máquina e freqüentemente deve ser expressa em código assembler, uma biblioteca de procedimentos pode ser fornecida para tornar possível fazer chamadas de sistema a partir de programas em C, por exemplo. Para exemplificar melhor uma chamada de sistema, examinaremos brevemente um READ. Ele possui três parâmetros: o primeiro especifica o arquivo, o segundo o buffer no disco e o terceiro o número de bytes a ler. Uma chamada READ de um programa em C pode se parecer com: Count = read (file, buffer, nbytes); A chamada de sistema (e o procedimento de biblioteca) retorna o número de bytes realmente lido em count. Caso a chamada de sistema não possa ser executada, seja devido a um parâmetro inválido, seja devido a um erro de disco, count é definido como -1 e o número do erro será colocado em uma variável global que poderá ser lida pelo aplicativo que dará um determinado tratamento para o erro. Exemplos de chamadas de sistemas: (mkdir, rmdir, mount, umount, chmod, time, kill, etc) Nos sistemas POSIX e similares, as chamadas de sistema mais usadas são close, execve, fork, wait, kill, open, read, write e ioctl. Os sistemas operacionais atuais tem centenas de chamadas de sistema. Por exemplo, o Linux tem quase 300 chamadas de sistema diferentes. O FreeBSD tem praticamente o mesmo número (quase 330). Existem várias chamadas de sistema, as principais chamadas de sistema são para: • Gerenciamento de processos; • Sinalização; • Gerenciamento de arquivos; • Gerenciamento de diretórios; • Proteção; • Gerenciamento de tempo. O sistema operacional suporta diversas operações sobre arquivos. As operações básicas são: Criação do Arquivo; Destruição do Arquivo; Leitura do conteúdo; Alteração do conteúdo; Escrita de novos dados ao final do arquivo; Execução do programa contido no arquivo; Troca de nome do arquivo; Alteração na lista de usuários que podem acessar o arquivo. Xi... apagei aquele arquivo importante e limpei a lixeira e agora? Perdi tudo? Não, mesmo quando apagamos um arquivo do sistema e depois da lixeira, ainda é possível recuperá-lo. Uma exclusão nada mais é que remover a estrutura de diretórios do arquivo, apenas isto. O espaço de dados alocado pelo arquivo continua lá no HD, porém invisível/inultilizável pelo usuário comum. No momento da exclusão, o espaço que pertencia a um arquivo é marcado para substituição, ou seja, ele é identificado como espaço livre, e quando necessário o HD irá substituir todo ou parte deste espaço por dados de um novo arquivo. Uma partição excluída é apenas interpretada como um “espaço não-alocado” no disco rígido, independente do seu antigo sistema de arquivos. Em relação a alteração na lista de usuários que podem acessar o arquivo, é a prova de violação? Não, mesmo quando o sistema operacional provê um mecanismo de autorização de usuários para alguns determinados arquivos. Você poderá acessá-lo diretamente do HD, lendo byte a byte nos setores do disco. Para ter segurança total sobre o arquivo é necessário criptografá-lo. Tudo no seu devido lugar. Porém como vivemos em um mundo cada vez mais globalizado. Os computadores e seus diversos sistemas cada vez estão mais unidos ora por redes locais ou pela internet; tem a necessidade de se comunicarem seja para simples troca de arquivos entre usuários ou pelo acesso remoto de arquivos. Para atender as diferenças nos sistemas de arquivos de Windows, de Mac VOS e Unix, foi desenvolvido um sistema de arquivos virtual (abreviado como VFS, do inglês Virtual File System), é uma camada de abstração em cima de um sistema de arquivos mais concreto. O propósito de um VFS é permitir que as aplicações clientes tenham acesso a diversos tipos de sistemas de arquivos concretos de uma maneira uniforme. Um VFS especifica uma interface (ou um contrato) entre o kernel e um sistema de arquivos em concreto. Portanto, é fácil agregar novos sistemas de arquivos ao kernel simplesmente satisfazendo o contrato. Os termos do contrato podem voltar-se incompatíveis de uma versão a outra, o que requereria que sistemas de arquivos concretos fossem recompilados, e possivelmente modificados antes da recompilação, para lhes permitir trabalhar com um novo lançamento do sistema operacional; ou o provedor do sistema operacional possa realizar somente mudanças retrocompatíveis ao contrato, de modo que um sistema de arquivos concreto construído para um lançamento dado do sistema operativo trabalhe com as versões futuras do mesmo sistema operacional. Sistemas de Arquivos são gravados no disco rígido(HD). Um sistema de Arquivos Virtual (VFS), ao invés do Real é gravado na memória. Graças ao VFS você pode publicar seus ítens da maneira que quiser, sem têr que mover ou mudar algo físicamente na estrutura de pastas e arquivos do seu HD. As pessoas vão vêr o que você quiser que elas vejam. Você pode ocultar arquivos, renomea-los, move-los para outra pasta, etc. Isso é o que as pessoas verão, mais na realidade, nada mudou em seus HD. Muitos ja são familiares à esse tipo de estrutura de arquivos, devido ao uso de outros softwares, como qualquer programa de gravação de CDs como o NERO, ao montar um CD de DADOS para gravação, cria-se um sistema de arquivos virtual na estrutura do CD à ser gravado, ou seja, é uma espécie de VFS. Referências: http://pt.kioskea.net/ http://www.instrutor.com/aulas/sistemas_operacionais/sistema_arquivos.php http://www.ibm.com/developerworks/br/library/l-linux-filesystem/ http://www.patentesonline.com.br/sistema-de-arquivo-virtual-2572.html http://pt.wikipedia.org/wiki/Sistema_de_arquivos_virtual http://pt.wikilingue.com/es/Sistema_de_arquivos_virtual http://www.rejetto.com/wiki/index.php/HFS:_O_Sistema_de_Arquivos_Virtual http://fernandopaiva.objectis.net/comandos/aprendendo-o-comando-mount http://www.uniriotec.br/~morganna/guia/mount.html http://www.faatesp.edu.br/publicacoes/A11%20-%20Chamadas%20de%20Sistema.pdf http://pt.wikipedia.org/wiki/Chamada_de_sistema http://www.dinx.com.br/2009/10/formatacao-o-que-e-como-funciona-e-quais-sao-ostipos-existentes/ SO Projeto e Implementação 2 ed_Tanenbaum(pt-br).pdf http://infohelp.org/danilo-salles/file-shredder-excluindo-arquivos-permanentemente/ http://www.epidemiclinux.org/wiki/index.php?title=O_b%C3%A1sico_sobre_permiss% C3%B5es_de_arquivos