Please enable JavaScript.
Coggle requires JavaScript to display documents.
Cap 22 : O conceito de arquivo - Coggle Diagram
Cap 22 : O conceito de arquivo
Elementos básicos
Um arquivo é essencialmente uma sequência de bytes armazenada em um dispositivo físico não volátil
Cada arquivo possui um nome ou uma referência
Arquivos são versáteis em conteúdo e capacidade
Arquivos são, do ponto de vista dos usuários, a unidade básica de armazenamento
Organizados em estruturas hierárquicas chamadas diretórios para facilitar sua localização
A organização do conteúdo dos arquivos e diretórios dentro de um dispositivo físico é chamado sistema de arquivos e pode ser visto como uma estrutura de dados perene no sistema
Um dispositivo físico é estruturado em um ou mais volumes ou partições. Cada partição pode ter seu sistema de arquivos próprio
Atributos e operações
Atributos ou metadados
Nome: String que identifica o arquivo
Tipo: indicação do formato dos dados contidos no arquivo. Alguns sistemas usam parte do nome para identificar o tipo -> Extensão
Tamanho: tamanho do conteúdo do arquivo, geralmente em bytes
Datas: data de criação, de último acesso, e de modificação
Proprietário: em sistemas multiusuário cada arquivo tem um proprietário
Permissões de acesso: indicam quais usuários tem acesso ao arquivo, e que tipo de acesso é esse
Localização: ndicação do dispositivo físico onde o arquivo se encontra e da posição do arquivo dentro do mesmo
Vários outros atributos podem estar associados a um arquivo. Cada sistema de arquivos define seus atributos
Nem sempre os atributos são suficientes para exprimir todas as informações a respeito de um arquivo. Pode usar o nome para exprimir essas informações
Operações
O acesso a arquivos é feito através de operações implementadas por chamadas de sistema ou funções de bibliotecas
Criar: alocar espaço para um novo arquivo e definir seus atributos
Abrir: solicitar ao sistema a abertura do arquivo. O sistema verifica se o arquivo existe, se as permissões são válidas e cria uma referência para ele na memória da aplicação
Ler: transferir dados do arquivo para a memória da aplicação
Escrever: permitir transferir dados da memória da aplicação para o arquivo. Adicionar ou sobrescrever
Fechar: quando o arquivo não é mais necessário para a aplicação, o sistema libera suas estruturas de gerência
Remover: Eliminar o aqruivo do dispositivo, apagando seus dados e liberando espaço
Alterar atributos: modificar valores dos atributos
Outras operações podem ser definidas, embora elas possam ser feitas combinando as operações básicas acima
Formatos de arquivos
Sequência de bytes
Na forma mais simples, um arquivo contém uma sequência de bytes que pode ser estruturada para representar diferentes tipos de informação
O núcleo apenas reconhece alguns poucos formatos, como binários, executáveis e bibliotecas
Cabe às aplicaçãoes interessadas reconhecer os demais formatos
Uma aplicação pode definir formato próprio, proprietário, ou usar os formatos padronizados
Arquivos de registros
Alguns núcleo de sistemas fornecem arquivos com estruturas internas que vão além da sequência de bytes
Em arquivos baseados em registros o conteúdo é visto pelas aplicações como uma sequência linear de registros de tamanho fixo ou variável
Arquivos indexados são aqueles os quais podem ser armazendas pares (chave/valor)
Em sistemas que não suportam arquivos baseados em registors, essa funcionalidade pode ser obtida usando bibliotecas
Arquivos de texto
Usada para armazenar informações textuais simples
Formado por linhas de caracteres de tamanho variável separadas por caracteres de controle
Sistemas operacionais diferentes usando caracteres de controle diferenets, o que pode ocasionar problemas
Arquivos de código
Um programa executável ou biblioteca
ELF(Executable and Linking Format): formato usado nos sistemas UNIX modernos. Composto por cabeçalho e váias seções de dados
PE(Portable Executable): formato usado nos sistemas Windows. Extensão do formato COFF usado em sistemas UNIX antigos
Estrutura do formato ELF
ELF header: descreve o conteúdo do restante do arquivo
Section header, table: descreve cada uma das seções de código
Sections: trechos que compõe o arquivo. Podem ser agrupadas em segmentos
Program Header Table: informações sobre como o código deve ser carregado na memória
Segments: conteúdo que deve ser carregado em cada um dos segmentos de memória ao lançar o processo
Identificação de conteúdo
Usar parte do nome para identificar o tipo do conteúdo: Extensão do nome
Usar alguns bytes no início do conteúdo do arquivo para definir seu tipo: Magic numbers
Nos sitemas UNiX, o utilitário file permite identificar o arquivo pelos seus bytes inciais e estrutura interna, sem considerar o nome. Bom para arquivos com extensão errada
Atributos adicionais: identiticar a aplicação que criou o arquivo por exemplo. Desse modo na hora de abrir o arquivo o sistema irá usar a aplicação que o criou
Tipos MIME: usado para identificar arquivos transferidos por e-mail ou páginas web. Formato tipo/subtipo
Arquivos especiais
Abstração de dispositivos de entrada/saída
Sistemas UNIX costumam mapear as interfaces de entrada/saída a vários dispositivos físicos como arquivos dentro do diretório /dev. Permite que aplicação acessem esses dispositivos como se fossem arquivos
Abstração de interfaces do núcleo
Em UNIX, os diretórios, /proc e /sys permitem consultar e modificar informaçãoes internas do núcleo do sistema operacional, dos processos em execução, e dos drivers
Canais de comunicação
Uma conexão TCP é apresentada ao dois processos como um arquivo. Outros mecanismos de comunicação local também usam arquivos, como o pipe
Em alguns sistemas, todas as entidades são representadas por meio de arquivos