SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 7 1. Sistema de Arquivos Sistema de arquivo nada mais é do que a maneira de como o sistema operacional organiza e administra os dados em um disco. Os arquivos são gerenciados pelo sistema operacional e é mediante a implementação de arquivos que o sistema operacional estrutura e organiza as informações. A parte do sistema responsável pela gerência é denominada sistema de arquivo que é a parte mais visível do sistema operacional, pois é uma atividade freqüentemente realizada pelos usuários. Deve ocorrer de maneira uniforme independente dos diferentes dispositivos de armazenamento. 1.1. Nomes de Arquivo Os arquivos são um mecanismo de abstração, ou seja uma maneira de armazenar a informação no disco e tê-las de volta mais tarde. Esse trabalho deve ser realizado de forma transparente para o usuário. As regras para dar nome a um arquivo variam de um sistema para outro, no entanto todos permitem cadeias de 1 à 8 letras como nome de arquivos válidos, podendo chegar em alguns sistemas a 255 caracteres incluindo aí caracteres especiais. Em alguns SO há a distinção entre caracteres em letras maiúsculas e minúsculas o que acontece com o UNIX, por exemplo. Muitos SO’s suportam nomes de arquivos divididos em duas partes, por exemplo program.c. A parte que se segue ao ponto é chamado extensão de arquivo. No UNIX é comum encontrar arquivos com mais de uma extensão, como compacto.tar.gz. Em alguns casos a extensão do arquivo não passa de uma convenção como os arquivos .txt, que representa algum tipo de arquivo de texto. São úteis quando o programa trata vários tipos de arquivos. .bkp Arquivo de backup .c Programa fonte em C .f77 Programa Fortran 77 1 SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com .gif Imagem no formato GIF .hlp Arquivo de ajuda .html Documento HTML da WWW .mpg Filme codificado no padrão MPEG .o Arquivo-Objeto(Saída de compilador, ainda não linkeditado) .ps Arquivo PostScript .txt Arquivo genérico de texto .zip Arquivo compactado 1.2. Estrutura de Arquivos Os arquivos podem estar estruturados de várias maneiras. Três possibilidades comuns são apresentadas abaixo. A figura (a) é uma seqüência de bytes não estruturada. Assim o SO não sabe nem se importa com o que está no arquivo. Qualquer significado deve ser imposto no nível do usuário. Tanto o UNIX, quanto o Windows utilizam esta abordagem. Isto oferece uma maior flexibilidade na nomeação do arquivo para o usuário. 2 SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com Na figura (b), um arquivo é uma seqüência de registros de comprimento fixo, cada um com alguma estrutura interna. Neste caso, a operação de leitura retorna um registro e uma gravação sobrescreve ou anexa um registro. Atualmente esta abordagem já foi abandonada. Na figura (c) um arquivo consiste em uma árvore de registros, cada um com um campo chave em uma posição fixa no registro. A árvore é classificada pelo campo chave, permitindo localizar rapidamente uma chave particular. Esta estrutura é muito usada em mainframes de grande porte. 1.3. Tipos de Arquivo Os SO’s suportam vários tipos de arquivos. O UNIX e o MS-DOS, têm arquivos e diretórios em comum. Os arquivos comuns são os que contêm informações do usuário. Todos os arquivos da figura acima são comuns. São geralmente arquivos ASCII ou binários. Arquivos ASCII consistem em linhas de texto. Sua grande vantagem é que podem ser lidos, editados e impressos. Já os binários não são passíveis de leitura ou de impressão, resultando em uma lista de caracteres incompreensíveis Diretórios são arquivos de sistema para manter a estrutura do sistema de arquivos. Arquivos especiais de caractere relacionam-se com a entrada e saída e são utilizados para modelar dispositivos de E/S com impressoras e rede. Arquivos especiais de bloco são utilizados para modelar discos. 1.4. Acesso a Arquivos Os SO’s antigos ofereciam somente um tipo de acesso a arquivos: arquivo seqüencial. Estes são convenientes quando a mídia de armazenamento é fita magnética ao invés de disco. Nos discos, os arquivos recebem o nome de arquivos de acesso aleatório. Estes são essenciais para muitos aplicativos como sistemas de bancos de dados. 1.5. Atributos de Arquivos Cada arquivo tem um nome e dados. Além disso todos os SO’s associam outras informações com cada arquivo, por exemplo a data/hora de criação e o tamanho, que são chamados de atributos dos arquivos, que pode variar de um SO para outro. 3 SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com Os primeiros quatro atributos relacionam-se com a proteção e informam quem pode ou não pode acessá-lo. Abaixo alguns possíveis atributos de arquivos: Os vários campos de tempo monitoram a data/hora em que o arquivo foi criado ou mais recentemente modificado. O tamanho atual informa o tamanho atual do arquivo. Alguns sistemas operacionais de mainframes exigem, inclusive que o tamanho máximo seja especificado quando o arquivo é criado, deixando o SO reservar a quantidade máxima de armazenamento de antemão. Exemplo de atributos: $ ls –l drwxr-xr-x 5 ricardo prof 4096 Abr 14 11:34 a drwxr-xr-x 3 ricardo prof 4096 Mar 31 12:25 abc -rw-r--r-- 1 ricardo prof 647 Abr 28 12:24 arqcut1 -rw-r--r-- 1 laureano prof 2335 Abr 28 12:24 arqgrep drwxr-xr-x 11 laureano prof 4096 Mai 30 2005 arquivos 4 SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com 1.6. Operações com Arquivos Sistemas diferentes oferecem operações diferentes para permitir armazenamento e recuperação. Chamada de sistemas mais comuns: CREATE: Cria o arquivo e anuncia que é necessário configurar alguns atributos. DELETE/ERASE: Exclui o arquivo do sistema. OPEN: Permite que o sistema transfira os atributos e a lista de endereços de disco para a memória principal. CLOSE: O arquivo é fechado e libera espaço na memória principal. READ: Os dados do arquivo são lidos. WRITE: Os dados são gravados no arquivo. APPEND: Uma forma restringida de WRITE, inserindo dados no fim do arquivo. SEEK: Para os arquivos de acesso aleatório é necessário um mecanismo de busca que move o ponteiro da posição atual para um lugar específico no arquivo. GET ATTRIBUTES: Realiza a leitura dos atributos do arquivo. Ex. Comando Make no Unix, que examina todos os tempos de modificação e os arquivos-fonte. SET ATTRIBUTES: Permite a configuração dos atributos de um arquivo depois que ele foi criado, como o modo de proteção, por exemplo. RENAME: Realiza a mudança no nome do arquivo. 2. Diretórios Para manter a organização dos arquivos o SO utiliza-se dos diretórios, que em muitos sistemas também são arquivos. É o modo como o sistema organiza os diferentes arquivos contidos num disco. É a estrutura de dados que contém entradas associadas aos arquivos onde estão informações como localização física, nome, organização e demais atributos. Quando um arquivo é aberto, o sistema operacional procura a sua entrada na estrutura de diretórios, armazenando as informações do arquivo em uma tabela mantida na memória principal. Esta tabela contém todos os arquivos abertos, sendo fundamental para aumentar o desempenho das operações com arquivos. 5 SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com 2.1. Sistema hierárquico de diretórios 2.1.1. Nível Único (single-level directory) É a implementação mais simples, existe apenas um único diretório contendo todos os arquivos do disco. É bastante limitado já que não permite que usuários criem arquivos com o mesmo nome o que ocasionaria um conflito no acesso aos arquivos. No User File Directory (UFD), para cada usuário existe um diretório particular e assim poderia criar arquivos com qualquer nome. Deve haver um nível de diretório adicional para controle chamado de Master File Directory (MFD) que é indexado pelo nome do usuário e cada entrada aponta para o diretório pessoal. É análoga a uma estrutura de dados em árvore onde o MFD é a raiz, os galhos são a UFD e os arquivos são as folhas. Quando se referencia a um arquivo é necessário especificar seu nome e seu diretório isto é chamado de path (caminho). 2.1.2. Estrutura de Diretórios em Árvore Estrutura de diretórios em Árvore (Tree Structured Directory) é adotado pela maioria dos sistemas operacionais e é logicamente melhor organizado. É possível criar quantos diretórios quiser, podendo um diretório conter arquivos e outros diretórios (chamados subdiretórios). Cada arquivo possui um path único que descreve todos os diretórios da raiz (MFD) até o diretório onde o arquivo está ligado e na maioria dos sistemas os diretórios são tratados como arquivos tendo atributos e identificação. 6 SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com 2.2. Nomes de caminho Quando o sistema de arquivos é organizado com uma árvore de diretórios é necessário algum meio de especificar nomes de arquivos: a. Nome de caminho absoluto: consiste no caminho do diretório raiz até o arquivo. Em geral os nomes absolutos sempre iniciam pelo diretório-raiz e são únicos. Exemplo: /etc/apt/sources.list b. Nome de caminho relativo: é utilizado com conjunção com o conceito de diretório de trabalho (chamado diretório atual). Em outras palavras, para invocar um determinado arquivo ou endereço não é preciso referenciá-lo a partir do diretório-raiz. 7 SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com TRABALHO Faça um comparativo e explique a funcionalidade dos diretórios do sistema de arquivos dos Sistemas Operacionais Windows e Linux/UNIX. 8