Sistemas de Arquivos Sistemas Operacionais Mitsuo Takaki Capítulo 6 – Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios 6.3 Implementação Capítulo 6 – Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios 6.3 Implementação Arquivos • É um mecanismo de abstração. • Oferece meios de informações no disco. – • armazenar e Deve ser feito de forma que o usuário não se atenha a detalhes de como isto é feito. Uma das características mais importantes é como os objetos são gerenciados e nomeados. ler Nomeação de Arquivos • Quando um processo cria um arquivo, um nome é dado a ele. • Este arquivo pode ser posteriormente buscado pelo nome dado. • As regras variam de SO para SO. – No Unix os caracteres minúsculos e maiúsculos são diferentes. Nomeação de Arquivos - Extensões • • No windows, a extensão determina o tipo de arquivo. – JPEG, arquivo de imagens no formato JPEG. – EXE, arquivo executável. – C, arquivo fonte da linguagem C. É criada uma tabela de associação de formato a um programa para abrí-lo. Nomeação de Arquivos - Extensões • No Unix um arquivo pode ter qualquer extensão e mais de uma. – As extensões servem apenas como dica do formato do arquivo. – .tar.gz – já informa o usuário que o arquivo foi empacotado usando o tar e zipado usando o gz. Nomeação de Arquivos - Extensões • Alguns programas podem exigir arquivos em um determinado formato e uma determinada extensão. – O gcc exige arquivos no formato .C ou .CPP. • .c – arquivo fonte da linguagem C. • .cpp – arquivo fonte da linguagem C++. Estrutura de Arquivos Estrutura de Arquivos • Podem seguir uma estrutura pré-determinada. • Ou podem ser apenas uma sequência de bytes (a). – Esta é a forma mais usada. – Quem determina o significado do arquivo é o programa que o abre. – Os programas podem inserir qualquer dado sem se preocupar com nenhuma estrutura. Estrutura de Arquivos • Outra forma é utilizar registros de tamanhos fixos (b). • Pode ser utilizada uma árvore de registros (c). – Podem possuir diferentes tamanhos. – Melhor tempo de busca de um determinado registro. Tipos de Arquivos • Arquivos regulares são arquivos que possuem informações do usuário. • Diretórios são arquivos do sistema que mantém a estrutura dos arquivos do disco. • Arquivos especiais de caracteres são relacionados a E/S. – No linux: /dev/hda5 • Representa o HD a, quinta partição. Tipos de Arquivos • São geralmente: – ASCII, constituídos de linhas de texto. • • • – Em alguns sistemas cada linha termina com um caractere de carriage return. Em outros é usado o caractere de line feed. Em alguns, ambos são usados. Binário, possuem estrutura interna conhecida pelo programa que o usa. Tipos de Arquivos (a) Arquivo executável (b) Repositório Tipos de Arquivos – Binário Executável • Só é executado se possui uma estrutura apropriada. • Formado por cinco partes: – Cabeçalho. – Texto. – Dados. – Bits de relocação. – Tabela de simbolos. Tipos de Arquivos – Binário Executável • O cabeçalho começa pelo número mágico. – Número pré-determinado que o identifica como executável. – Usado para impedir execução de arquivos que não estejam no formato adequado. Tipos de Arquivos – Repositório • Usado no Unix. • Composto por procedimentos de bibliotecas (módulos) compilados. – • Não estão ligados. Cada módulo possui um cabeçalho indicando nome, data de criação, proprietário, código de proteção e tamanho. Tipos de Arquivos • Todo SO deve ser capaz de reconhecer pelo menos um tipo de arquivo. – O seu próprio executável. Acesso aos Arquivos • Tipos de acessos: – Sequêncial, utilizado nos primeiros SOs. • – Ideal para meios de armazenamento sequênciais, como fitas magnéticas. Aleatório. • SOs modernos utilizam apenas este tipo. Atributos de Arquivos Atributos de Arquivos • Além do nome e dos dados, os SOs associam outras informações a cada arquivos. – Chamadas de atributos. – Variam para cada SO. Operações com Arquivos • Os SOs realizam diferentes operações. As mais comuns são: – Create, cria o arquivo sem dados. • Usado para anunciar que o arquivo existe e definir alguns atributos. – Delete, remove o arquivo. – Open, realizado antes de usar um arquivo. • • O SO busca o arquivo e põe na memória principal os atributos e lista de endereços do disco. Alguns SOs limitam o número de arquivos abertos. Operações com Arquivos – Close, realizado quando o processo termina de usar o arquivo. • – Read, lê os dados do arquivo na posição atual. • – Força a escrita do último bloco do arquivo. Deve ser definida quantidade de dados necessários para fornecer um buffer. Write, escreve os dados na posição atual. • • Se a posição atual estiver no final do arquivo, este sofrerá um aumento no tamanho. Se a posição estiver no meio do arquivo, os dados posteriores serão sobrescritos. Operações com Arquivos – Append, chamada restrita de Write. • – Seek, busca uma posição no arquivo. • – Só permite escrita no final do arquivo, não permite sobrescrevê-lo. Modifica o ponteiro que aponta para uma posição dentro do arquivo. Get Attributes, lê os atributos do arquivo. • O make do Unix verifica os momentos de alteração dos arquivos fonte e arquivos objeto usando esta operação. Operações com Arquivos – Set Attributes, define atributos do arquivo. • – Alguns atributos podem ser alterados pelo usuário. Rename, modifica o nome do arquivo. Arquivos Mapeados em Memória • Acessar arquivos usando chamadas ao sistema de arquivos pode ser uma tarefa tediosa. • Alguns SOs fornecem um mapeamento de arquivos na memória. – No espaço de endereçamentodo processo em execução. Arquivos Mapeados em Memória • • Conceitualmente, vão existir duas rotinas: – Map, que retorna um endereço virtual onde o arquivo foi mapeao. – Unmap, remove o arquivo da memória principal. Quando um processo acessa a posição x da memória, onde o arquivo foi mapeado, a posição 0 do arquivo está sendo lida. Arquivos Mapeados em Memória Espaço de endereçamento de um processo. Arquivos Mapeados em Memória • Ao término do uso do arquivo, o arquivo é salvo no disco como se tivesse sido usado chamadas ao sistema de arquivos. • As tabelas internas são alteradas para que o arquivo se torne um armazenamento sobressalente. – Uma leitura no endereço virtual do mapeamento gera uma falta de página. – O arquivo é trazido à memória. – Quando a paǵina é removida, o arquivo é Arquivos Mapeados em Memória • Funciona melhor em sistemas que usam segmentação. • Cada arquivo pode ser mapeado em seu próprio segmento. – O byte k do segmento é o byte k do arquivo. Arquivos Mapeados em Memória (a) Processo com dois segmentos: código e dados. (b) Após o mapeamento do arquivo “abc” e, ao término, arquivo xyz será criado. Arquivos Mapeados em Memória • Vantagem: – Elimina chamadas ao sistema de arquivos. • • Facilita programação. Desvantagem: – O SO não sabe o tamanho exato do arquivos no momento da escrita do arquivo. • • Pode ser usado o tamanho máximo da página ou do segmento. Estimação do tamanho, não tem certeza. Arquivos Mapeados em Memória – Compartilhamento, quando um processo lê um arquivo que está sendo escrito por outro processo. • – O arquivo só possuirá as modificações quando a página for retirada da memória. O arquivo pode ser maior que o segmento ou maior que todo espaço virtual de endereçamento. • Solução mapear somente uma parte do arquivo. Capítulo 6 – Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios 6.3 Implementação Sistemas de Diretórios • Controla o armazenamento/localização dos arquivos. • Pode ser um arquivo também, dependendo do SO. • Pode ser implementado de diversas formas. Nível Único • Mais simples implementação de um sistema de diretórios. • Um único diretório possui todos os arquivos. – • Chamado de diretório-raiz. Usado nos primeiros PCs. – Por possuir apenas um usuário. Nível Único A,B e C são os proprietários dos arquivos. Nível Único • • Vantagens: – Fácil de implementar. – Fácil localização de arquivos. Desvantagem: – Sistemas com vários usuários podem criar arquivos com mesmo nome. • O arquivo será perdido e sobrescrito com o novo. Nível Único • Não é mais utilizado em PCs por razões óbvias. • Pode ser utilizado em sistemas embarcados. – Devido limitações de usabilidade e hardware. – Sistemas que existe apenas um único usuário. Dois Níveis • Resolve conflitos de usuários. – Um diretório oferecido para cada usuário. • Está implicito que o SO identifica o usuário e já sabe qual é o seu diretório. • O usuário só tem acesso ao seu diretório. – Na sua forma mais básica de implementação. – Pode ser extendido e permitir acesso a arquivos de outros usuários. Dois Níveis Dois Níveis • Acesso ao diretório de outros usuários permite separar um diretório para programas do sistema. – • Sem isto, haveria uma cópia dos programas do sistema no diretório de cada usuário. Tem problemas quando o usuário possui muitos arquivos. – Um usuário pode querer arquivos com mesmo nome. – Uma organização melhor é necessária para identificar os arquivos. Diretórios Hierárquicos • Os arquivos são organizados de acordo com o usuário. – • É criada uma hierarquia de diretórios. É utilizado até hoje. Diretórios Hierárquicos Nomes de Caminhos • Em um sistema de arquivos organizado como árvore, é necessário um método de especificar um arquivo. • São utilizados dois métodos: – Nome de caminho absoluto. – Nome de caminho relativo. Nome de Caminho Absoluto • Representa o caminho da raiz à folha (arquivo) da árvore. • Exemplo: /var/www/index.html – Existe um diretório chamado var – /var possui um subdiretório chamado www – O subdiretório www possui um arquivo chamado index.html Nome de Caminho Absoluto • Quando o primeiro caractere é um separador, então o caminho absoluto está sendo usado. – O caractere separador é específico de cada SO. • • Windows: \ Linux: / Nome de Caminho Relativo • Usado em conjunto com o conceito de diretório de trabalho. – • Também chamado de diretório atual. Todos os caminhos que não começam na raiz, são assumidos como relativos ao diretório atual. Nome de Caminho Relativo • Se o diretório atual for /var/www, o arquivo index.html pode ser acessado diretamente, sem o uso do caminho absoluto. • Cada processo possui um diretório de trabalho. – Um arquivo pode ser acessado usando o caminho relativo. – Permite que um diretório de trabalho seja modificado sem afetar os outros processos. Nomes de Caminho • A maioria dos SOs que suportam sistema de diretório hierárquico, possuem duas entradas especiais: – . (ponto) • – Refere-se ao diretório atual. .. (ponto-ponto) • Refere-se ao diretório pai. Operações com Diretórios • As operações variam para cada SO. As mais comuns são: – Create, cria um diretório vazio. • • – Delete, remove um diretório. • • – Exceto pelo ponto e ponto-ponto. Geralmente inseridos pelo programa mkdir. O diretório deve estar vazio para ser removido. Ponto e ponto-ponto não são contados neste caso. Opendir, abre o diretório. • • Antes de ser lido, o diretório deve ser aberto. Após a abertura, está pronto para listar os Operações com Diretórios – Closedir, fecha o diretório. • – Deve ser fechado para liberação de espaço na tabela interna. Readdir, retorna a próxima entrada do diretório aberto. • • Antes era feito usando a chamada de sistema read, porém o programador precisaria conhecer a estrutura interna usada pelo sistema de diretórios. Permite ler o diretório de forma padronizada. Operações com Diretórios – Rename, modifica o nome do diretório. – Link, técnica chamada de ligação (link). • • • Permite que um arquivo apareça em mais de um diretório, ao mesmo tempo. A chamada tem como entrada um diretório e um arquivo existente. Incrementa o contador do i-node do arquivo. Operações com Diretórios – Unlink, remove uma entrada do diretório. • Se o arquivo existe somente neste diretório, o arquivo é fisicamente removido. • Caso exista em outros diretórios, somente o caminho especificado é removido. • O delete na verdade é um unlink. Capítulo 6 – Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios 6.3 Implementação Implementação do Sistema de Arquivos • Como o sistema de arquivos funciona sob a ótica do programador. Esquema do Sistema de Arquivos • • Os arquivos são armazenados em discos. – Os discos geralmente são divididos em partições. – Cada partição pode possuir um sistema de arquivos diferente. O setor 0 (zero) do disco é chamado de MBR (Master Boot Record). – Usado para iniciar o computador. • No fim da MBR tem uma tabela com os endereços finais e iniciais de cada partição. • Uma das partições é marcada como ativa. Esquema do Sistema de Arquivos • Quando o computador inicia, a BIOS lê e executa o MBR. – Localizar a partição ativa. – Lê seu primeiro bloco (bloco de boot). – Executa o programa no bloco de boot. • O programa no bloco de boot carrega o SO contido naquela partição. • Toda partição contém um bloco de boot, mesmo sem ter nenhum SO. – Futuramente ela poderá ter um SO. Esquema do Sistema de Arquivos Esquema do Sistema de Arquivos • Logo após o bloco de boot está o superbloco. – Contém todos os principais parâmetros sobre o sistema de arquivos. – É lido quando o computador é iniciado ou quando o sistema de arquivos é usado pela primeira vez. – Possui um número mágico para identificar o tipo de sistema de arquivos usado. – Possui o número de blocos e outras informações. Esquema do Sistema de Arquivos • Após o superbloco, estão as informações sobre os blocos livres. – • Pode ser na forma de um mapa de bits ou uma lista de ponteiros. Em seguida, os i-nodes. – Arranjo de estrutura de dados, um por arquivo, que diz tudo sobre o respectivo arquivo. Esquema do Sistema de Arquivos • Depois, pode vir o diretório-raiz. – • Contém o topo da árvore do sistema de arquivos. Por último estão todos os arquivos e diretórios. Implementação do Sistema de Arquivos • A questão mais importante na implementação de armazenamento de arquivos é a manutenção do controle de quais blocos de disco estão relacionados a quais arquivos. • São usados vários métodos em diferentes SOs. Alocação Contígua • É o esquema mais simples de armazenamento de arquivos no disco. • Os arquivos são armazenados em blocos contíguos de disco. • Em um disco de blocos de 1kb, um arquivo de 50kb usa 50 blocos consecutivos. Alocação Contígua Alocação Contígua • Na figura é possível observar o que ocorre quando um arquivo é removido. – • Lacunas são criadas dentro do conjunto de blocos. Caso um arquivo use meio bloco, este restante do bloco será desperdiçado. Alocação Contígua • Vantagens: – Fácil implementação. • – Só precisa guardar o endereço do início e o número de blocos usados. Alto desempenho de leitura. • • A leitura de um arquivo é feita de uma só vez, pois o arquivo está escrito de forma contígua. Apenas um seek é necessário. Alocação Contígua • Desvantagem: – Tendência a fragmentar. • • • Sempre que um arquivo é removido, uma lacuna é criada no lugar do arquivo. A compactação dos blocos dos arquivos poderia ser feita após cada exclusão, porém é extremamente custosa. Quando o disco está cheio, a compactação é necessária. Alocação Contígua • Não é mais utilizada em SOs modernos. • É utilizada em sistemas de armazenamento de somente leitura. – CDs, DVDs, mídias óticas. – Algumas técnicas antigas podem se tornar úteis com o advento de novas tecnologias. Alocação Por Lista Encadeada Alocação Por Lista Encadeada • Todo bloco é utilizada e não é gerada fragmentação com a remoção de arquivos. – • Porém a fragmentação interna dos blocos continua. É necessário manter apenas o endereço do primeiro bloco na entrada de diretório. – O restante é encontrado a pártir dele. Alocação Por Lista Encadeada • Desvantagem: – Leitura aleatório lenta. • • – Para ler o dado n, é necessário ler n-1 blocos, um a um. A leitura sequêncial é feita sem problemas. Quantidade de dados armazenados não é uma potência de 2. • • É necessário armazenar o endereço do próximo bloco. A leitura de todo bloco requer obter e concatenar a informação de dois blocos. Alocação Por Lista Encadeada • Leitura de um arquivo. – Concatenando os dados de dois blocos. Alocação Por Lista Encadeada usando Tabela na Memória • Uma tabela é usada para armazenar o endereço físico de cada bloco no disco. – • A tabela é chamada de FAT (File Allocation Table). O disco também é totalmente utilizado. – Possui acesso aleatório mais rápido, pois não precisa ler do disco os endereços do próximo bloco. Alocação Por Lista Encadeada usando Tabela na Memória Alocação Por Lista Encadeada usando Tabela na Memória • Somente o número do bloco inicial é necessário para representar a entrada de diretório. • A tabela utiliza um código de fim de arquivo. Alocação Por Lista Encadeada usando Tabela na Memória • Desvantagens: – Usa muita memória principal. • • • Para funcionar, a tabela deve estar na memória principal o tempo todo. Para um disco de 20GB e blocos de 1KB, a tabela precisa de 20 milhões de entradas, uma para cada bloco. A tabela ocuparia 60 ou 80 MB na memória principal, dependendo do número de bytes usados nas entradas da tabela. i-Nodes • Estruturas de dados que controlam quais blocos pertencem a quais arquivos. – • Relaciona atributos e os endereços no disco ao arquivo. A pártir de um i-node é possível encontrar todos os blocos do arquivo. i-Nodes i-Nodes • Vantagem: – Usa menos memória principal. • • • Só precisa estar na memória quando um arquivo está sendo usado. Se cada i-node usa n bytes e no máximo k arquivos podem ser abertos simultâneamente, somente nk bytes são necessários na memória. A tabela FAT é proporcional ao tamanho do disco e o espaço gasto pelos i-nodes é proporcional ao número de arquivos abertos. i-Nodes • Desvantagem: – Limite do número de blocos endereçados pelo i-node. • • Se a estrutura do i-node tiver um tamanho fixo, o número de blocos endereçáveis por um i-node é limitado. Quando isto ocorre, um espaço do disco é reservado para um, ou mais, blocos de ponteiros. Implementação de Diretórios • Para abrir um arquivo, o SO precisa de um nome e um caminho. • Este caminho é usado para encontrar: – Endereço de disco de todo arquivo (contígua) – O número do primeiro bloco (listas encadeadas) – Ou o número do i-node. Implementação de Diretórios • A função do sistema de diretórios é traduzir um nome ASCII na informação necessária para encontrar os dados. • Outra questão é onde salvar os atributos dos arquivos. – Todos os SOs mantém informações do arquivo, como o proprietário, data e hora de criação... Armazenamento dos Atributos dos Arquivos (a) Atributos armazenados diretamente na entrada do diretório. (b) Atributos armazenados nos i-nodes. Armazenamento dos Atributos dos Arquivos • Uma alternativa é armazenar diretamente na entrada do diretório (a). – Consiste em uma lista de entradas de tamanho fixo, uma por arquivo. • – • Contém nome do arquivo (tamanho fixo), uma estrutura de atributos e um ou mais endereços de disco. Usado no DOS/Windows Outra alternativa é armazenar nos i-nodes. – A entrada de diretório é menor: • • Um nome de arquivo O número do i-node. Armazenamento do Nome dos Arquivos • O nome dos arquivos podem ter tamanho variado. • Reservar o espaço usando o tamanho máximo ocasiona em desperdício de espaço. – Poucos arquivos possuirão nomes tão longo. Armazenamento do Nome dos Arquivos • Uma alternativa é cada entrada de diretório possuir uma parte fixa seguida de uma parte variável (nome real do arquivo) (a). – É usado um caractere especial para indicar o fim do nome. – Preenche o campo de nome até atingir o tamanho fixado. – Na parte fixa são armazenados as informações do arquivo. Armazenamento do Nome dos Arquivos • Desvantagem: – Fragmentação. • • – Possui a mesma tendência a fragmentar da alocação contígua, caso um arquivo seja removido. Porém a compactação pode ser feita no momento da deleção, pois toda a entrada do diretório está na memória principal. Leitura de um arquivo pode causar uma falta de página. • A entrada de diretório pode ser longa demais. Armazenamento do Nome dos Arquivos • Outra solução é fixar o tamanho de todas as entradas de diretório e os nomes ficam armazenados em uma área temporária (heap) no final do diretório (b). • Possui a vantagem de sempre caber na área da heap quando um arquivo é removido. • Não há mais necessidade de completar os nomes com caracteres especiais. – Porém ainda é necessário o uso do caractere de fim de nome. Armazenamento do Nome dos Arquivos Implementação de Diretórios • Nos projetos abordados até o momento, a busca por um arquivo é realizada sequêncialmente. – • O que é um método lento quando a lista é extensa. Uma solução é utilizar uma tabela de hash para armazenar as entradas de diretório. Arquivos Compartilhados • Compartilhamento é de extrema importância em sistemas multiusuário. • Um arquivo compartilhado pode fazer parte da estrutura de diretório de dois, ou mais, usuários (link). Arquivos Compartilhados • Se o diretório armazenar os endereços dos blocos do arquivo, uma alteração no arquivo pode não ser visível pelo outro usuário. – O diretório não terá a referência dos blocos adicionais. – O conceito de compartilhamento é perdido quando isto acontece. Arquivos Compartilhados Pode ser resolvido de duas formas: 1.O diretório não armazena os endereços dos blocos do arquivo. • É utilizada uma estrutura de dados que armazena todos os endereços. • O diretório possui uma referência à estrutura. 2.O novo arquivo é ligado (link) ao original. • O novo arquivo possuirá apenas o nome do caminho do arquivo original. • Chamado de ligação simbólica. Arquivos Compartilhados Ambas soluções apresentam desvantagens: 1.Se o arquivo original for removido, a referência do i-node é perdida. • O SO é capaz de identificar que o arquivo possui um link, mas não é capaz de encontrar cada um e removê-los. • O i-node não é capaz de armazenar todas os links. • A solução é remover o arquivo da entrada do diretório do usuário, mas manter o i-node intacto. Arquivos Compartilhados (a) Antes da ligação. (b) Após a ligação. (c) Após a remoção do arquivo original. Arquivos Compartilhados 2. Vários acessos a disco são necessários para ler os blocos do arquivo. • O caminho deve ser lido e sintaticamente analisado até chegar ao i-node. • É necessário um i-node extra para armazenar o caminho para cada ligação simbólica. • Tem a vantagem de poder ligar arquivos de locais diferentes. • Basta o endereço da máquina e o caminho. Gerenciamento de Disco • O gerenciamento do espaço do disco é uma das principais preocupações de um projetista de sistemas. • Como foi visto anteriormente, é possível armazenar de duas formas: 1. Blocos consecutivos (alocação contígua). 2. Blocos espalhados no disco (alocação por lista encadeada ou i-node). Tamanho do Bloco • É visível a importância do tamanho do bloco no gerenciamento do disco. • Os blocos podem ter tamanhos diferentes e diferentes reações serão observadas no sistema. • A decisão do tamanho do bloco deve ser bem pensada. Tamanho do Bloco • Bloco muito grande: • Pouca leitura do disco necessária. − Os arquivos usariam poucos blocos. • Alta fragmentação interna. − Poucos arquivos preencherão o bloco inteiro. • Bloco muito pequeno: • Disco é melhor aproveitado. − Baixa fragmentação interna. • Muito leitura do disco. − Muito acesso a disco, pois o arquivo pode estar espalhado pelo disco inteiro. Tamanho do Bloco Monitoramento dos Blocos Livres (a)Através de uma lista encadeada de blocos. (b)Mapa de bits. Lista Encadeada de Blocos • Um bloco de disco é utilizado para armazenar ponteiros para os blocos livres. • Armazena o máximo possível de ponteiros. • Mantém na memória principal apenas um bloco de ponteiros. • Quando um arquivo é criado, os blocos necessários são tirados da lista de blocos livres. • Quando a lista se esgota, outro bloco de ponteiros é lido do disco. Lista Encadeada de Blocos • Quando um arquivo é removido, novos ponteiros são criados e adicionados ao bloco de ponteiros. • Quando o bloco está cheio, este é escrito ao disco e outro é lido ou criado. Lista Encadeada de Blocos • Desvantagem: • Causa muitas operações de E/S. • Quando o bloco possui 2 ponteiros livres (a) e um arquivo de 3 blocos é removido, a lista “transborda” e um novo bloco de ponteiros é criado e carregado na memória (b). • Se o arquivo que acaba de ser criado é temporário, os blocos são desalocados e o bloco anterior é recarregado. Lista Encadeada de Blocos • Solução: • Manter o bloco de ponteiros sempre parcialmente ocupado. • Sempre que o bloco de ponteiros se enche, apenas metade dele é armazenada no disco (c). Lista Encadeada de Blocos Inserir figura!!!!!!!!! Mapa de Bits • Um mapa de bits é utilizado para representar os blocos livres. • Utiliza apenas um bit para representar um bloco livre. − 1: Livre − 0: Alocado • Também utiliza blocos do disco para armazenar o mapa. Mapa de Bits • Só usa o disco quando o mapa está cheio. • O mapa mantém os arquivos próximos. • Pois estão no mesmo mapa. Mapa de Bits Endereço: 0x10cc00290 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 64 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 • Representação de um mapa de bits.