Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* Gerenciamento sistemas de arquivos Prof. André Leon S. Gradvohl, Dr. andre.gradvohl@gmail.com * * Plano de aula Visão externa do sistema de arquivos Gerenciamento de arquivos Estrutura de informação Descritores de arquivos Gerenciamento de blocos Formatação lógica e física do sistema de arquivos Particionamento Estudos de Casos * * Visão externa do sistema de arquivos Hardware Programa Ger. Arquivos Ger. Discos Ger. Memória Ger. Processos UNIX Ger. Arquivos Ger. Dispos. Ger. Memória Ger. Processos Windows open() read() close() write() lseek() CreateFile() ReadFile() CloseHandle() SetFilePointer() WriteFile() mount() * * Armazenamento persistente Dispositivos compartilhados Por que os arquivos são necessários? Editor HTML <head> … </head> <body> … </body> Web Browser Informação estruturada Pode ser lida por qualquer aplicação Acessibilidade Protocolo <head> … </head> <body> … </body> foo.html Gerenciador de arquivos Gerenciador de arquivos * * Gerenciamento de arquivos Arquivo é uma coleção organizada de informação devidamente nomeada. O gerenciador de arquivos administra a coleção através das seguintes ações: Armazenando a informação em um dispositivo. Mapeando o armazenamento em bloco em uma visão lógica. Alocando e desalocando armazenamento. Provendo diretórios de arquivos. * * Estrutura de informação Registros Aplicações Registros de arquivos estruturados Tradução para um fluxo de registros Tradução em blocos de fluxo Arquivos de fluxo de bytes Dispositivo de armazenamento * * Arquivos de baixo nível Tradução em blocos de fluxo b0 b1 b2 bi ... ... fid = open(“nome”,…); … read(fid, buf, buflen); … close(fid); int open(…) {…} int close(…) {…} int read(…) {…} int write(…) {…} int seek(…) {…} O dispositivo de armazenamento responde aos comandos. * * Arquivos sequenciais orientados a registros ... Cabeçalho Registro lógico ... Fragmento Blocos de armazenamento físico Registro lógico * * Arquitetura de baixo nível do sistema de arquivos b0 b1 b2 b3 bn-1 … … Bloco 0 . . . Dispositivo seqüencial Dispositivo aleatório * * Descritores de arquivos Nome externo Estado atual Compartilhado Dono/usuário Bloqueio Proteções Tamanho Tempo de criação Hora da última modificação Hora do último acesso Contador de referências Detalhes do dispositivo de armazenamento * * Operação open() Localizar o descritor do arquivo Extrair as informações necessárias para ler e escrever no arquivo Verificar se o processo pode acessar o arquivo Criar um descritor do arquivo na memória principal Cria uma entrada por processo na tabela de arquivos abertos. Alocar recursos (buffers) para suportar a utilização de arquivos. * * Estrutura de dados do gerenciador de arquivos Descritor de arquivos externo Descritor lógico Copia a informação do descritor externo para o descritor lógico 1 Sessão Processo- arquivo Mantém o estado do arquivo-processo 2 Retorna uma referência a uma estrutura de dados. 3 * * Gerenciamento de blocos É responsável pela seleção e atribuição de blocos de armazenamento ao arquivo Para um arquivo de tamanho fixo de k blocos: Arquivo de tamanho m requer N = m/k blocos O byte bi é armazenado no bloco i/k. Há três estratégias básicas: Alocação contínua Alocação encadeada Alocação indexada * * Alocação contínua Mapeia os N blocos em N blocos contínuos no dispositivo de armazenamento secundário. Vantagens: Simples de implementar. Desempenho alto. Blocos i e i+1 são armazenados fisicamente em sequência; isso reduz a necessidade da operação de seek. Desvantagens: Dificuldade de trabalhar com arquivos de tamanho dinâmico (gera fragmentação externa). Pré-alocação do arquivo em um espaço máximo gerando fragmentação interna. * ... Alocação contígua (exemplo) Arquivo A Arquivo B Arquivo C Arquivo D * Alocação ligada Cada bloco contém um cabeçalho com: Número de bytes no bloco Ponteiro para o próximo bloco Vantagens: Os blocos não precisam ser contínuos Os arquivos podem ser expandidos e contraídos Desvantagens: As buscas são lentas. * Alocação encadeada (Exemplo) * Alocação encadeada Observação: As desvantagens da alocação encadeada podem ser eliminadas colocando-se cada palavra de ponteiro de cada bloco de disco em uma tabela na memória. Essa estratégia é chamada File Allocation Table (FAT) e a tabela deve estar na memória o tempo inteiro. * Alocação indexada (i-node) Visa resolver o problema de “ponteiros” esparramados pelo disco que a alocação encadeada provoca. Mantém, por arquivo, um índice de blocos que o compõem. O índice é mantido em um bloco. O diretório possui um ponteiro para o bloco onde está o índice associado a um determinado arquivo. Extrai os cabeçalhos e os coloca em um índice. Simplifica as buscas. Pode juntar vários índices para arquivos grandes. * Alocação indexada (exemplo) Propriedades Blocos diretos Blocos indiretos simples Blocos indiretos duplos Blocos indiretos triplos dados dados dados Tabela dados dados dados Tabela Tabela Tabela dados dados dados dados * * Gerência de espaço livre Mapa de bits Forma simples de gerenciar o espaço em disco. A cada bloco do disco está associado um bit indicando se o bloco está livre ou ocupado. Lista de blocos livres Os blocos livres são organizados em uma lista. A lista é mantida no próprio disco O problema é o tamanho da lista. A medida que o espaço em disco é ocupado a lista diminui de tamanho liberando espaço do disco. Uma solução alternativa é manter uma lista de áreas livres ao invés de uma lista de blocos livres. * Formatação lógica e física A formatação de disco é o processo de preparação do disco rígido e a criação de um sistema de arquivos. Os discos podem ser particionados, i. e. divididos em seções lógicas, onde cada seção pode possuir seu próprio sistema de arquivos. Há dois níveis de formatação: física e lógica. * Formatação lógica e física A formatação física define a “geometria” do disco, i. e., definição de trilhas, setores e gravação de informações de controle. Atualmente, formatação física deve ser evitada, pois os fabricantes já definem a melhor geometria na fabricação do disco. * Formatação lógica e física A formatação lógica é a criação de um sistema de arquivos vazio no disco, bem como a criação de um setor de boot. A formatação lógica pode ser rápida, se simplesmente grava o sistema básico de arquivos e o setor de boot, ou mais lenta, se percorre o disco em busca de setores corrompidos. * Particionamento O setor de boot é o primeiro setor de um dispositivo de armazenamento. O nome para esse setor é “Master Boot Record”, nele estão as informações necessárias para as cargas do sistema operacional e do respectivo sistema de arquivos. MBR Sistema Operacional 1 Sistema Operacional 2 * Particionamento Master Boot Record (MBR): Track 0, Sector 1 Número de partições e sua localização ponteiro para a partição com o bootloader * Estudos de Caso: NTFS Características do NTFS: Todos os dados relativos ao arquivo – nome, data, permissões etc – são armazenados como metadados na Master File Table. Internamente o NTFS usa árvores B+ para indexar os dados para acesso de arquivos. Apesar de complexo, esse esquema permite um acesso rápido aos dados. Um sistema de arquivos “diário” (file system journal) é usado para garantir a integridade dos metadados do sistema de arquivos, mas não o conteúdo dos arquivos. * Estudos de Caso: EXT3 Características do EXT3: É uma evolução do EXT2 e inclui um sistema de journaling. O journal (diário) consiste em uma espécie de log, que armazena todas as alterações que são feitas nos arquivos e quando elas foram concluídas. Possui três níveis de journaling: Journal: dados e metadados são escritos no log antes de serem escritos, de fato, em disco. Ordered: Só os metadados são gravados no log. Mas é garantido que o conteúdo dos arquivos é gravado no disco antes dos metadados associados está marcado como comprometidos no log. Writeback: O conteúdo pode ser escrito antes ou depois da atualização do log. Internamente usa árvores H (uma especialização das árvores B+) para indexar os dados para acesso de arquivos. Apesar de complexo, esse esquema permite um acesso rápido aos dados.
Compartilhar