FACENS - Faculdade de Engenharia de Sorocaba Sistemas Operacionais Sistema de Arquivos Introdução Requisitos para armazenamento de informação: • armazenar quantidade grande de informação • manter informação após o fim de um processo • múltiplos processos podem acessar informações concorrentemente Arquivos: • persistente – não é afetada pela criação ou término de processos • gerenciada pelo SO Todas as aplicações precisam armazenar e recuperar informações. O espaço de endereçamento virtual pode ser pequeno demais para aplicações como reservas de passagens aéreas ou bancos. Além disso, as informações mantidas na memória são perdidas com o término do processo e múltiplos processos não acessam a mesma informação ao mesmo tempo. A solução para armazenar a informação em discos é criar arquivos. A informação deve ser persistente, ou seja, um arquivo desaparecerá quando for removida explicitamente. O sistema de arquivos (parte do SO) é responsável pelo modo como arquivos são estruturados, nomeados, acessados, usados, protegidos e implementados. O arquivo pode também ser estruturado como uma árvore de registros, cada um contendo um campo-chave e a árvore é ordenada por esse campo, facilitando a busca eficiente (figura (c)). Esse último tipo de arquivo é utilizado em computadores de grande porte. Extension Meaning file.bak Backup file file.c C source program Compuserve Graphical Interchange Format image file.gif file.hlp Help file file.html World Wide Web HyperText Markup Language document Still picture encoded with the JPEG standard file.jpg file.mp3 Music encoded in MPEG layer 3 audio format file.mpg Movie encoded with the MPEG standard Object file (compiler output, not yet linked) file.o file.pdf Portable Document Format file file.ps PostScript file Input for the TEX formatting program file.tex file.txt General text file file.zip Compressed archive Tipos de arquivos • regulares • diretórios Arquivos • caracter • nome, extensão de arquivos – terminais, impressoras e rede • estrutura de arquivos: 1 Byte • bloco 1 Record Cat Cow Dog Hen (a) Ant Fox Pig Goat Lion Owl Ibis (b) – discos Pony Rat Worm Lamb (c) As regras exatas para nomear um arquivo variam de sistema para sistema. Muitos sistemas permitem nomes com até 255 caracteres permitindo dı́gitos e caracteres especiais. A extensão do arquivo é separada do nome através de um “.” (ponto). O compilador C exige que os arquivos a serem compilados terminem com .c. Algumas extensões tı́picas estão na tabela a seguir. O arquivo pode ser uma seqüencia desestruturada de bytes e o SO não sabe o que o arquivo contém, o que proporciona maior flexibilidade (figura (a)). Unix e Windows utilizam esta estratégia. O arquivo também pode ser estruturado como uma seqüência de registros de tamanho fixo que podem ser lidos ou sobrescritos, mas nenhum sistema atual funciona assim (figura (b)). Profa. Tiemi Christine Sakata Muitos SO suportam vários tipos de arquivos. Os arquivos regulares são aqueles que contem informação do usuário. Os diretórios são arquivos do sistema que mantém a estrutura do sistema de arquivos. Os arquivos especiais de caracteres são relacionados a E/S e para modelar dispositivos de E/S. Os arquivos especiais de blocos são usados para modelar discos. Arquivos regulares são, em geral, ou ASCII ou binários. Os arquivos ASCII são constituı́dos de linhas de texto e podem ser mostrados e impressos da mesma forma que são editados. Os arquivos binários possuem uma estrutura interna conhecidos pelos programas que o usam. 1 FACENS - Faculdade de Engenharia de Sorocaba Sistemas Operacionais Tipos de Arquivos 16 Bits Magic number Atributos de Arquivos Module name Header Text size Header Data size Date BSS size Symbol table size Object module Owner Protection Entry point Size Flags Header Text Object module Data • Tipo – necessárias para sistemas que suportam tipos diferentes de arquivo • Posição – ponteiro para posição do arquivo no dispositivo • Tamanho – tamanho atual do arquivo Header • Proteção – controle de acesso (RWX) Relocation bits Symbol table • Nome – informação mantida de forma legı́vel para o usuário • Hora, data e identificação de usuário – mantidas para proteção, segurança e monitoração de uso. Object module (a) (b) Na figura (a), temos um arquivo binário executável com 5 partes: cabeçalho (número mágico, que identifica o arquivo como executável; tamanho das partes do arquivo, endereço inicial de execução e alguns bits de sinalização), texto, dados, bits de relocação (para ser carregado na memória) e tabela de sı́mbolos (para depuração). Na Figura (b) temos um exemplo de repositório (archive) do Unix. Consiste em uma coleção de procedimentos de bibliotecas compilados, mas não ligados. Cada um possui um cabeçalho com nome, data da criação, proprietário, código de proteção e tamanho. Acesso aos Arquivos • acesso seqüencial – lê todos os bytes a partir do inı́cio (fita magnética) • acesso aleatório (relativo) – bytes lidos em qualquer ordem: – read – indica a posição inicial para leitura do arquivo – seek – atualiza a posição atual. Após um seek a leitura pode ser feita a partir da posição atual O acesso seqüencial foi muito utilizado quando o meio de armazenamento era a fita magnética e atualmente continua sendo usado pela maioria dos editores de texto e compiladores. Um processo poderia ler todos os bytes ou registros de um arq. inclusive poderia voltar ao ponto de partida, mas nunca saltando ou lendo fora de ordem. Quando os discos começaram a ser usados para armazenar arquivos, tornou-se possı́vel ler bytes ou registros em qualquer ordem (acesso aleatório). Duas operações são utilizadas para especificar o ponto inicial da leitura: read (indica a posição inicial para leitura do arquivo) e seek (atualiza a posição atual). São úteis para acesso imediato a grandes quantidades de informações (banco de dados). Profa. Tiemi Christine Sakata Attribute Meaning Protection Who can access the file and in what way Password Password needed to access file the Creator ID of the person who created the file Owner Current owner Read-only flag 0 for read/write; 1 for read only Hidden flag 0for normal; 1for do not display in listings System flag 0 for normal files; 1 for system file flag 0for has been backed up; 1for needs to be backed up Archive ASCII/binary flag 0for ASCII file; 1for binary file Random access flag 0 for sequential access only; 1 for random access flag 0for normal; 1for delete file on process exit Temporary Lock flags 0for unlocked; nonzero for locked Record length Number of bytes in a record position Offset ofthe key within each record Key Key length Number of bytes in the key field Creation time Date and time the file was created oflast access Date and time the file was last accessed Time Time of last change Date and time the file has last changed Current size Number of bytes in the file Maximum size Number of bytes the file may grow to Operações com Arquivos 1. Create 7. Append 2. Delete 8. Seek 3. Open 9. Get attibutes 4. Close 10. Set attributes 5. Read 11. Rename 6. Write 1. Arquivo criado sem dados. 2. Remoção do arquivo e liberação de espaço em disco. 3. Carrega na memória os atributos e a lista de endereços de disco. Chamada sempre antes do uso do arq. 4. Libera espaço na tabela interna. Força a escrita do último bloco do arq. 5. Dados são lidos do arquivo. 6. Dados são escritos no arquivo. 7. Adiciona dados no final do arquivo. 8. Acesso aleatório aos arquivos. 9. Verifica os atributos de um arquivo. 10. Altera atributos de um arquivo. 11. Altera o nome de um arquivo existente. 2 FACENS - Faculdade de Engenharia de Sorocaba Sistemas Operacionais Diretório em Dois Nı́veis Estrutura de Diretórios Root directory Diretórios ou pastas: User directory • em muitos sistemas são também arquivos A • residem no disco • Informações: nome, tipo, endereço, tamanho atual, tamanho máximo, data do último acesso, data da última atualização, id do criador, proteção A B A C C B C C Files • facilidade na localização de arquivos Para controlar os arquivos, os sistemas de arquivos têm em geral, diretórios ou pastas que em muitos sistemas também são arquivos. Tanto os arquivos quanto os diretórios residem no disco. O dispositivo de diretório registra informações como nome, tipo, endereço, tamanho atual, tamanho máximo, data do último acesso, data da última atualização, id do criador e proteção. Organizar os arquivos em diretórios pode melhorar a eficiência, pois os arquivos podem ser localizados rapidamente. Além disso, dois usuários podem ter o mesmo nome para arquivos diferentes ou podemos ter cópias do mesmo arquivo. Oferece a cada usuário, um diretório privado. Assim, os nomes escolhidos por um usuário não interferem nos nomes escolhidos por outro usuário. Essa estrutura pode ser usado em um computador multiusuário ou em uma rede simples (com um servidor comum de arquivos). Neste tipo de estrutura, é necessário um procedimento de identificação, no qual cada usuário especifica um nome ou identificador. Assim, por exemplo, open("x"), abre o arquivo x do usuário. Muitas vezes, um usuário pode precisar ter acesso a outros arquivos além dos seus próprios. Por exemplo, os arquivos executáveis podem ficar em um diretório sem a necessidade de ter cópias desses arquivos para todos os usuários. Para permitir acesso de arquivos entre os diferentes usuários, pode ser feita uma extensão fornecendo alguma indicação sobre o proprietário do arquivo (open("tiemi/x")). Diretório de Um Nı́vel Diretórios Hierárquicos • Um diretório contendo todos os arquivos • Simples Root directory • Usuários diferentes não podem usar o mesmo nome Root directory A B A A 4 arquivos 3 proprietários A User directory C B B B C B B Profa. Tiemi Christine Sakata C C C User subdirectories C A maneira mais simples de sistema de diretório é ter um diretório contendo todos os arquivos. A vantagem desse sistema é a simplicidade na busca (feita em um único local). O problema é que usuários diferentes não podem dar o mesmo nome para arquivos diferentes pois haverá sobrescrita de arquivo. Conseqüentemente, esse esquema não é utilizado em sistemas multiusuário. C C C C User file O sistema de diretório em dois nı́veis elimina o conflito de nomes entre usuários, mas não é satisfatório para usuários com um número muito grande de arquivos. É comum aos usuários querer agrupar seus arquivos assumindo critérios lógicos. A capacidade dos usuários criar um número arbitrário de subdiretórios propicia uma ferramenta poderosa de estruturação para organizar seu trabalho. Quase todos os modernos sistemas de arquivos são organizados assim. 3 FACENS - Faculdade de Engenharia de Sorocaba Caminhos Sistemas Operacionais Operações Realizados no Diretório / bin Root directory etc lib 1. Procurar um arquivo usr tmp bin etc lib usr tmp ast 2. Criar um arquivo 3. Excluir um arquivo jim lib 4. Listar um diretório ast lib jim dict. /usr/jim 5. Renomear um arquivo 6. Percorrer o sistema de arquivos Em sistemas de arquivos organizados em forma de árvore, o nome dos arquivos pode ser especificados de duas formas: caminho absoluto (formado pelo caminho entre o diretório raiz e o arquivo) e caminho relativo (os nomes que não começam com o diretório raiz são assumidos como relativos ao diretório atual). Caminhos • Caminho absoluto: – Windows: \usr\ast\caixapostal – Unix: /usr/ast/caixapostal – MULTICS: >usr>ast>caixapostal • Caminho relativo: – Unix: cp caixaposta caixapostal.bak · – diretório atual ·· – diretório acima (pai) 1. Pesquisar uma estrutura de diretórios para encontrar um arquivo. 2. Criar novos arquivos e adicioná-los em um diretório. 3. Remoção de um arquivo do diretório. 4. Listar os arquivos em um diretório e o conteúdo da entrada no diretório para cada arquivo na lista 5. renomear um arquivo talvez permita que a sua posição dentro da estrutura de diretório seja alterada. 6. percorrer todos os arquivos de todos os diretórios. Operações com Diretórios 1. Create – cria um diretório 2. Delete – remove um diretório 3. Opendir – lê diretórios 4. Closedir – fecha um diretório 5. Readdir – retorna próx. entrada do dir. aberto 6. Rename – renomeia o nome do diretório 7. Link – ligação de arquivos em dirs. diferentes 8. Unlink – remove a ligação A forma relativa é muitas vezes mais conveniente, porém, alguns programas podem necessitar ter acesso a um arquivo sem se preocupar qual o diretório atual de trabalho. Um corretor ortográfico por exemplo, pode precisar ler /usr/lib/dicionario e se o caminho absoluto for utilizado, a leitura funcionará independente do diretório atual. Cada processo tem seu diretório atual de trabalho. Assim, um processo pode alterar seu diretório atual e depois sair sem afetar outros processos. Profa. Tiemi Christine Sakata 1. Cria um diretório vazio. 2. Remove um diretório vazio. 3. O diretório deve ser aberto antes de ser lido (analogamente a leitura de arquivos). 4. Diretório lido deve ser fechado para liberar espaço na tabela interna. 5. Retorna a próxima entrada em um diretório aberto. 6. Os diretórios podem ter seu nome trocado. 7. A ligação de arquivos permite que um arquivo apareça em mais de um diretório. 8. Se o arquivo sendo desligado estiver presente em apenas um diretório, ele será removido do sistema de arquivos. Caso contrário, somente o nome do caminho especificado será removido. 4 FACENS - Faculdade de Engenharia de Sorocaba Sistemas Operacionais Existem outras operações como, por exemplo, para gerenciar a informação de proteção associada ao diretório. Layout Entire disk Disk partition Partition table MBR Links / / bin dev etc lib tmp usr bin dev etc lib tmp usr fred lisa a b c x y z Boot block (a) I-nodes Root dir Files and directories • Tabela de partições lisa Link Free space mgmt • MBR (Master Boot Record) fred a b c x Super block x y z (b) Na figura acima, o arquivo x pode ser encontrado no diretório do usuário fred e do usuário lisa. Quando o link é feito, não existe uma cópia do arquivo x. Existem dois tipos de link: hard link (aponta para o local de armazenamento do disco) e simbolic link (contem apenas o caminho de onde o arquivo está). Ao apagar um hard link, o arquivo será excluı́do, porém se apagar um simbolic link apagará somente o link. • Boot block O sistema de arquivos é armazenado em disco. O setor 0 é chamado de MBR e é usando para iniciar o computador. O fim do MBR contém a tabela de partição (endereços iniciais e finais de cada partição). Uma das partições é marcada como ativa. Quando o computador é ligado, a BIOS executa o MBR que localiza a partição ativa e lê e executa seu primeiro bloco (bloco de boot). O bloco de boot carrega o sistema operacional. O superbloco contém todos os principais parâmetros sobre o sistema de arquivos (tipo de sistema de arquivos, número de blocos no sistema de arquivos, etc.). As informações sobre espaços livres podem ser na forma de mapa de bits ou lista de ponteiros. Os i-nodes contém informações dos arquivos. Alocação contı́nua File A (4 blocks) File E (12 blocks) File C (6 blocks) File G (3 blocks) … Questões de Implementação • Como os arquivos são armazenados File D (5 blocks) File B (3 blocks) File F (6 blocks) (a) (File A) (File E) (File C) (File G) … • Como o espaço livre é gerenciado File B 5 Free blocks 6 Free blocks (b) • Eficiência • Confiabilidade Os usuários se preocupam em como mudar os nomes de arquivos, quais operações são permitidas, como é a árvore de diretórios e questões sobre interface. Os implementadores estão interessados em como os arquivos e diretórios são armazenados, como o espaço em disco é gerenciado e como fazer tudo funcionar eficiente e confiavelmente. Profa. Tiemi Christine Sakata O esquema mais simples de alocação é armazenar cada arquivo em blocos contı́guos de disco. O disco é dividido em blocos de mesmo tamanho. Se um arquivo ocupa um bloco e meio, a outra metade do bloco é desperdiçada. Vantagens: simples de implementar (basta armazenar o endereço do primeiro bloco e o número de blocos do arquivo) e bom desempenho de leitura (arquivo é lido em uma única operação – um seek para o primeiro bloco). Desvantagem: os arquivos não podem crescer e há fragmentação do disco. A compactação do disco é custoso e reaproveitar as lacunas requer saber de antemão o tamanho do arquivo. Na edição de um texto, seria inviável o usuário informar o tamanho do texto (ainda não digitado). Atualmente, os arquivos contı́guos são utilizados em mı́dias somente para escrita (CD-ROMs, DVD). 5 FACENS - Faculdade de Engenharia de Sorocaba Sistemas Operacionais Lista ligada de blocos I-node File A File Attributes 0 File block 0 File block 1 File block 2 File block 3 Address of disk block 0 File block 4 Address of disk block 1 Address of disk block 2 Address of disk block 3 Physical block 4 7 2 10 12 Address of disk block 4 Address of disk block 5 File B Address of disk block 6 0 File block 0 File block 1 File block 2 File block 3 6 3 11 14 Physical block Os arquivos podem ser mantidos como uma lista encadeada de blocos de disco. A primeira palavra de cada bloco é usada como ponteiro para um próximo. O restante do bloco é usado para dados. Neste método não há fragmentação externa e para manter uma entrada de diretório é suficiente armazenar apenas o endereço em disco do primeiro bloco. Por outro lado, o acesso aleatório é extremamente lento, pois para chegar ao bloco n de um arquivo, o SO, a partir do inı́cio, deve ler os n − 1 blocos antes dele. Address of disk block 7 Address of block of pointers Disk block containing additional disk addresses O i-node é uma estrutura de dados associado a cada arquivo que relaciona os atributos e os endereços em disco dos blocos de arquivo. Dado o i-node, é possı́vel encontrar todos os blocos do arquivo. A grande vantagem desse esquema é que o i-node só precisa estar na memória quando o arquivo estiver aberto. Um problema do i-nodes é que é necessário reservar o último endereço de disco para o endereço de um bloco contendo mais endereços de blocos de discos. Assim, mesmo que a estrutura i-node contenha um número fixo de endereços, não haveria problema se um arquivo crescesse além do limite. File Allocation Table (FAT) Physical block 0 1 2 10 3 11 4 7 File A starts here 6 3 File B starts here 7 2 Implementação de diretórios 5 8 9 10 12 11 14 12 -1 13 14 games attributes games mail attributes mail news attributes news work attributes work -1 15 Unused block As desvantagens da alocação por lista encadeada pode ser eliminada colocando-se cada palavra de ponteiro de cada bloco de disco em uma tabela na memória. Usando essa organização todo bloco fica disponı́vel para dados e o acesso aleatório se torna mais fácil. Para encontrar um bloco de um arquivo, é necessário percorrer o encadeamento, porém, como a tabela está na memória, a localização do bloco pode ser feita rapidamente. Como no método anterior, um simples inteiro é suficiente para representar a entrada de diretório. A principal desvantagem deste método é que a tabela deve estar na memória o tempo todo. A tabela pode ser alocada em memória paginada, mas mesmo assim, ocuparia muito espaço de memória virtual e de espaço em disco gerando tráfego extra de paginação. Profa. Tiemi Christine Sakata (a) Windows (b) Data structure containing the attributes Unix Todo sistema de arquivos mantém atributos como proprietário e hora de criação dos arquivos. Esses atributos podem ser armazenados diretamente na entrada do diretório, na forma de lista encadeada (Figura (a)). Para sistemas que usam i-nodes, os atributos podem ser armazenados no próprio i-node (Figura (b)). 6 FACENS - Faculdade de Engenharia de Sorocaba Sistemas Operacionais Cópias de Segurança • não é preciso copiar o sistema de arquivos todo Bitmaps e dumping • cópias incrementais – cópias de arquivos alterados (a) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 • compressão das informações – deve ser feita de forma cuidadosa (b) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 (c) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 • difı́cil fazer uma cópia de segurança enquanto o sistema de arquivos estiver sendo utilizado (d) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 • problemas técnicos – onde guardar a fita? A destruição de um sistema de arquivos é muitas vezes pior do que a destruição do computador, pois se o sistema de arquivos estiver irrecuperável, a restauração das informações será muito difı́cil e em muitos casos impossı́vel. Cópias de segurança permitem que arquivos removidos possam ser restaurados. Porém, fazer uma cópia de segurança leva muito tempo e ocupa muito espaço. O algoritmo de cópia mantém um mapa de bits indexado pelo número do i-node com vários bits por i-node. O algoritmo opera em 4 fases: 1. começa a partir do diretório inicial e verifica todas as entradas. Para cada arquivo modificado, seu i-node é marcado no mapa de bits. Todos os diretórios são também marcados. 2. percorre novamente a árvore desmarcando os diretórios que não tenham arquivos ou diretórios modificados dentro dele. 3. copiar todos os diretórios marcados para cópia. 4. copiar todos os arquivos marcados para cópia. Para restaurar um sistema, basta começar criando um sistema vazio no disco e restaurar inicialmente uma cópia completa. Em seguida, as cópias incrementais são restauradas. Confiabilidade • cópia fı́sica • cópia lógica Consistência do sistema de arquivos 1 2 3 4 Directory that has not changed 5 16 18 6 17 19 7 8 Root directory 10 9 11 12 13 20 14 21 15 File that has changed 27 29 28 31 23 24 25 26 32 File that has not changed Para copiar um disco para uma fita, podem ser adotadas duas estratégias: cópia fı́sica (dump fı́sico) ou cópia lógica (dump lógico). A cópia fı́sica inicia-se no bloco 0, escreve em ordem todos os blocos na fita e termina após copiar o último bloco. Vantagens: simplicidade e rapidez. Desvantagens: incapacidade de saltar diretórios especı́ficos, permitir cópias incrementais e restaurar arquivos individuais. A cópia lógica é feita a partir de um ou mais diretórios especificados e copia recursivamente todos os arquivos modificados desde uma data especificada. Profa. Tiemi Christine Sakata Block number 0 1 2 3 4 5 6 7 8 9 101112131415 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 Blocks in use 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 Blocks in use 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 Free blocks 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 Free blocks (a) 30 22 Block number 0 1 2 3 4 5 6 7 8 9 101112131415 (b) 0 1 2 3 4 5 6 7 8 9 101112131415 0 1 2 3 4 5 6 7 8 9 101112131415 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 Blocks in use 1 1 0 1 0 2 1 1 1 0 0 1 1 1 0 0 Blocks in use 0 0 1 0 2 0 0 0 0 1 1 0 0 0 1 1 Free blocks 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 Free blocks (c) (d) (a) consistente (b) bloco faltando (c) duplicação na (d) duplicação nos lista de livres dados O sistema pode estar inconsistente se o sistema cair antes que todos os blocos alterados sejam escritos (leitura – modificação – escrita). O Unix utiliza o fsck e o Windows o scandisk para verificar a consistência do sistema de arquivos. Para verificar a consistência do bloco, constrói-se 2 tabelas: uma para monitorar quantas vezes o bloco está presente em cada arquivo e outra para registrar os blocos livres. A partir do i-node é possı́vel construir uma lista de todos os blocos usados no arquivo correspondente. Além disso, o sistema de diretórios também é checado, comparando as informações contidas nos i-nodes com a inspeção feita na árvore de diretórios. 7 FACENS - Faculdade de Engenharia de Sorocaba Sistemas Operacionais Distribuição da informação no disco Caching Hash table Front (LRU) Disk is divided into cylinder groups, each with its own i-nodes I-nodes are located near the start of the disk Rear (MRU) Cylinder group (a) Cache de buffer é a técnica mais utilizada para reduzir o acesso a disco. Uma cache é uma coleção de blocos mantidas na memória para fins de desempenho. O modo usual para verificar se um bloco está na cache é mapear o dispositivo e o endereço de disco em uma tabela hash. Além disso, os blocos são ligados por uma lista biderecional, sendo o bloco menos recente no inı́cio da fila e o mais recentemente usada no final da fila. (b) Outra técnica para melhorar o desempenho consiste em reduzir a quantidade de movimentos do braço do disco, colocando os blocos mais sujeitos a mais acessos em seqüência, próximos uns aos outros. O armazenamento do disco pode ser feita em grupos de blocos consecutivos. Em sistemas que usam i-nodes, a leitura de um arquivo pequeno requer 2 acessos ao disco: um para o i-node, outra para o bloco. Ao invés de manter os i-nodes no inı́cio do disco, pode-se colocá-los no meio do disco reduzindo o posicionamento entre o i-node e o primeiro bloco do arquivo. Outra idéia consiste em dividir o cilindro em grupos, cada qual com seus próprios i-nodes, blocos e listas livres. Block Read Ahead • Lê um bloco antes de ele ser solicitado • Acesso seqüencial - bom • Acesso aleatório - piora o desempenho Outra técnica para melhorar o desempenho do sistema de arquivos é tentar transferir os blocos para a cache antes que eles sejam necessários. Quando um bloco k é solicitado, verifica-se se o bloco k + 1 já está lá e se não estiver, a leitura de k + 1 já será escalonada. Esta estratégia funciona apenas para arquivos que estejam sendo lidos seqüencialmente. Para verificar se vale a pena fazer uma leitura antecipada, o sistema de arquivos pode monitorar os padrões de acesso de cada arquivo aberto. Profa. Tiemi Christine Sakata 8