• Nenhum resultado encontrado

Sistemas de Arquivo

No documento Fundamentos Em Sistemas Operacionais (páginas 133-145)

Tema 4: Segurança de Sistemas Operacionais

4.1 Sistemas de Arquivo

A parte do sistema operacional responsável por gerenciar os arquivos é conhecida como sis- temas de arquivos e este gerenciamento deve ser feito de maneira a facilitar o acesso dos usuários a seu conteúdo, sendo feito de forma uniforme independente dos diferentes dispositivos de arma- zenamento.

O sistema de arquivos consiste em duas partes distintas: um conjunto de arquivos, cada qual armazenando dados correlatos e uma estrutura de diretório, que organiza e fornece informações sobre todos os arquivos do sistema.

Em um ambiente onde múltiplos usuários podem ter acesso aos arquivos é imprescindível que o sistema de arquivos implemente mecanismos que proporcionem a proteção de arquivos para controlar quem irá acessá-los e de que forma.

Como você protegeria seus arquivos con- tra o acesso de estranhos? Pense sobre isso e divulgue suas conclusões no AVA para discussão.

Arquivo

Um processo precisa ler e gravar grande vo- lume de dados em dispositivos de armazenamento, como um disco, por exemplo, além de poder com- partilhá-los com outros processos. A forma pela qual o sistema operacional estrutura estas informações é através da implementação de arquivos.

Quando um processo cria um arquivo, ele dá um nome a esse arquivo. Quando o processo termi- na, o arquivo continua disponível e outros processos podem acessá-lo simplesmente buscando seu nome.

Nomes de Arquivo

As regras para se nomear um arquivo variam entre sistemas operacionais. O MS-DOS, por exem- plo, permitia cadeias de caracteres de 1 até 8 carac- teres alfa-numéricos como nomes válidos de arquivos. Caracteres especiais como # $ % & @ ! não eram permitidos.

Hoje a maioria dos sistemas operacionais aceita nomes com até 255 caracteres e alguns ca- racteres especiais. É importante perceber que al- guns sistemas operacionais distinguem letras maiúsculas de letras minúsculas (case sensistive). No Linux, por exemplo, Teste, teste e TESTE, poderiam ser três nomes de arquivos diferentes. Já no Windows corresponderiam ao mesmo arquivo.

Experimente ver qual o maior nome consegue dar a um arquivo.

Alguns sistemas operacionais suportam nomes de arquivos divididos em duas partes separadas por um ponto. Os caracteres após o ponto correspondem à extensão do arquivo, e normalmente é um indicador de algo sobre o arquivo. Por exemplo, no nome de arquivo teste. txt, a extensão .txt nos diz que corresponde a um arquivo de texto.

No MS-DOS, a extensão de arquivos era limitada a 3 caracteres. Nos sistemas operacionais baseados no UNIX16, o tamanho da extensão de

arquivos, se houver, fica a critério do usuário. Por outro lado, sistemas operacionais como o Windows conhece as extensões a atribui significado a elas. Quando um usuário clica duas vezes em um nome de arquivo, o programa atribuído à sua extensão é executado tendo o arquivo como um parâmetro.

16 No Unix as extensões de arquivos são apenas convenções, já que não são impostas pelo sistema operacional.

Atributos de Arquivos

As informações de controle que cada arquivo possui são chamadas de atributos, que variam entre os sistemas operacionais, mas há alguns que estão presentes em quase todos os sistemas, como tamanho do arquivo, data de criação e outros.

Vá até seu gerenciador de arquivos e peça para visualizar todos os detalhes do arquivo. Você, então, verá seus atributos.

Existem atributos que não podem ser modifica- dos, como sua organização e a data/hora do momen- to de sua criação, e atributos que são alterados pelo próprio sistema operacional, como data/hora da última alteração, ou pelo usuário, como senhas de acesso.

Figura 48 - Atributos de Arquivos

Fonte - MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed.

Rio de Janeiro: LTC, 2007, cap. 11, p. 216.

Estrutura de Arquivos

Existem diversas maneiras dos arquivos serem estruturados, uma delas é através de uma sequência desestruturada de bytes, em que o sistema operacional não sabe o que o arquivo contém. Tudo o que ele vê são bytes. Sistemas como o Windows e Unix utilizam essa estratégia.

Figura 49 - Sequência de Bytes

Fonte - TANENBAUM, Andrew S. Sistemas operacionais modernos. 2.

ed. Rio deJaneiro: Prentice Hall Brasil, 2007, p.288.

Outro modelo de estrutura de arquivos é uma sequência de registros de tamanho fixo, cada um com alguma estrutura interna. Neste modelo, a operação de leitura retorna um registro e a operação de escrita sobrepõe ou anexa um registro.

Figura 50 - Sequência de registros

Fonte - TANENBAUM, Andrew S. Sistemas operacionais modernos. 2.

O terceiro modelo mais comum de estrutura de arquivo é constituído de uma árvore de regis- tros, cada um contendo um campo-chave em uma posição fixa no registro. Essa árvore é ordenada pelo campo-chave para que se busque mais rapida- mente por uma chave específica.

Figura 51 - Árvore de registros

Fonte - TANENBAUM, Andrew S. Sistemas operacionais modernos. 2. ed. Rio deJaneiro: Prentice

Hall Brasil, 2007, p.288.

Tipos de Arquivos

Normalmente muitos sistemas operacionais suportam vários tipos de arquivos. Os arquivos re- gulares, em geral, são arquivos ASCII ou arquivos binários. Arquivos ASCII são constituídos de linhas de texto e arquivos binários têm, em geral, alguma estrutura conhecida pelos programas que o utilizam.

Já os arquivos especiais de caracteres estão relacionados à entrada/saída e são usados para modelar os dispositivos de entrada/saída (terminais, impressoras e redes).

Os arquivos especiais de bloco, por sua vez, são usados para modelar discos, enquanto que os diretórios são arquivos do sistema que mantêm a estrutura do sistema de arquivos.

Operações com arquivos

A função dos arquivos é armazenar informações e permitir que elas sejam recuperadas depois. O sistema operacional fornece chamadas ao sistema para criar, ler, escrever, excluir, reposicionar e truncar arquivos.

Criar um arquivo – acontece em duas etapas.

Primeiro, deve haver espaço no sistema de arqui- vos para que o arquivo seja criado. Segundo, uma entrada do arquivo deve ser feita no diretório.

Escrever em um arquivo – é feita uma cha-

mada ao sistema onde é especificado o nome do arquivo e as informações a serem escritas nele.

Ler um arquivo – é feita uma chamada ao

sistema que especifique o nome do arquivo e a po- sição na memória onde o próximo bloco do arquivo deverá ser colocado.

Reposicionar dentro do arquivo – O diretório

é pesquisado buscando a entrada apropriada e a posição do arquivo atual é ajustada para um deter- minado valor.

Excluir um arquivo – é feita uma chamada de sis-

tema para remover o arquivo e liberar o espaço que ele ocupa. É apagada também sua entrada no diretório.

Truncar o arquivo – permite que todos os

atributos permaneçam inalterados (exceto pelo ta- manho do arquivo).

Diretórios

A forma de o sistema operacional organizar logicamente os arquivos armazenados em disco é através de uma estrutura de diretórios. Ela possui entradas associadas aos arquivos onde cada uma delas armazena informações como localização física, nome e demais atributos.

No momento em que um arquivo é aberto, o sistema operacional procura sua entrada de diretó- rios, armazenando as informações sobre atributos e localização do arquivo em uma tabela mantida na memória principal.

Em sua maioria, os diretórios são organizados em uma estrutura de árvore em que cada usuário pode criar diversos níveis de diretórios chamado subdiretórios. Cada diretório pode conter arquivos ou outros diretórios.

Figura 52 - Estrutura de diretórios em árvore

Fonte - MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio

Este modelo de múltiplos níveis permite que os arquivos sejam logicamente melhor organizados. O nú- mero de níveis de uma estrutura em árvore depende do sistema de arquivos de cada sistema operacional.

Faça um teste para saber qual o limite de subdiretórios em seu sistema.

Implementação de Arquivos

Uma das questões mais importantes ao imple- mentar o armazenamento de arquivos é monitorar quais blocos de disco acompanham quais arquivos. Vejamos algumas técnicas de alocação de arquivos:

Alocação Contígua

O modelo de alocação contígua consiste em armazenar um arquivo em blocos sequencialmente dispostos no disco. É simples de implementar, pois monitorar a localização dos blocos reduz-se a guar- dar seu endereço. Além disso, possui um excelente desempenho, pois o arquivo inteiro pode ser lido do disco em uma única operação.

Figura 53 - Alocação contígua do espaço em disco para 7 arquivos Fonte - TANENBAUM, Andrew S. Sistemas operacionais modernos. 2.

ed. Rio deJaneiro: Prentice Hall Brasil, 2007, p. 301.

Contudo, algumas desvantagens podem ser per- cebidas neste modelo. Primeiro não pode ser aplicável a não ser que o tamanho máximo do arquivo seja conhecido no momento em que o arquivo é criado.

Segundo porque este modelo gera uma gran- de fragmentação dos arquivos, resultante dessa política de alocação.

Alocação com Lista Encadeada

Na técnica da alocação com lista encadeada, um arquivo pode ser organizado como um conjunto de blocos ligados logicamente no disco, indepen- dente de sua localização física. Cada bloco deve possuir um ponteiro para o bloco seguinte do arquivo e assim por diante.

Figura 54 - Alocação encadeada.

Fonte - MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas

operacionais. 4. ed. Rio de Janeiro: LTC, 2007, p. 224.

Apesar de não apresentar as desvantagens da alocação contígua, a fragmentação resultante deste modelo ocasiona um aumento no tempo de acesso aos arquivos (excessivo tempo de seek).

Se nunca fez uma desfragmentação de disco, agora sabe sua importância! Reflita sobre isso e divulgue suas conclusões no AVA para discussão.

Alocação com Lista Encadeada Usando Índice

O princípio do modelo da alocação com lista encadeada usando índice é manter os ponteiros de todos os blocos do arquivo em uma única estrutura chamada bloco de índice.

Figura 55 - Alocação Indexada

Fonte - MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas

operacionais. 4. ed. Rio de Janeiro: LTC, 2007, p. 225.

Com esta organização, o bloco inteiro está disponível para dados e o acesso aleatório é muito mais fácil. E além de permitir o acesso direto aos blocos do arquivo, não utiliza informações de controle nos blocos de dados, como na alocação encadeada.

I-Node (index-node)

Este modelo consiste em associar a cada ar- quivo uma estrutura de dados chamada i-node, que relaciona os atributos e os endereços em disco dos blocos de arquivo.

Uma grande vantagem deste modelo em relação ao anterior é que o i-node só precisa estar na memória quando o arquivo correspondente estiver aberto, enquanto no modelo anterior, toda a tabela de índice deve estar na memória todo o tempo.

Figura 56 - Exemplo de i-node

Fonte - TANENBAUM, Andrew S. Sistemas operacionais modernos. 2.

INDICAÇÃO DE LEITURA COMPLEMENTAR

Para saber mais sobre Sistemas de Arquivo, leia o Capítulo 6 (p. 284-336) do livro de:

TANENBAUM, Andrew S. Sistemas operacionais mo- dernos. 2. ed. Rio deJaneiro: Prentice Hall Brasil, 2007. Tanembaun apresenta em seu livro detalhes de im- plementação e gerenciamento de sistemas de ar- quivo em diversos sistemas operacionais.

Para saber mais sobre Sistemas de Arquivo, leia o Capítulo 11 (p. 212-228) do livro de:

MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007. Através de ilustrações que auxiliam na compreen- são dos tipos de processos, os autores Francis e Luiz Paulo apresentam o assunto de forma clara e com exemplos de situações vividas por usuários.

PARA REFLETIR

Ao instalar um sistema operacional como o Linux ou Windows pode-se escolher qual sistema de arquivo deseja utilizar. Pense a respeito de como escolher o sistema de arquivo ideal para seu sistema.

4.2 Princípios de Segurança de Sistemas

No documento Fundamentos Em Sistemas Operacionais (páginas 133-145)

Documentos relacionados