Sei sulla pagina 1di 48

Sistemas Operacionais VI - Gerncia de Arquivos

Prof. Carlos Alberto Maziero PPGIa CCET PUCPR http://www.ppgia.pucpr.br/maziero 31 de maro de 2011

Resumo Um sistema operacional tem por nalidade permitir que o usurios do computador executem aplicaes, como editores de texto, jogos, reprodutores de udio e vdeo, etc. Essas aplicaes processam informaes como textos, msicas e lmes, armazenados sob a forma de arquivos em um disco rgido ou outro meio. Este mdulo apresenta a noo de arquivo, suas principais caractersticas e formas de acesso, a organizao de arquivos em diretrios e as tcnicas usadas para criar e gerenciar arquivos nos dispositivos de armazenamento.

Copyright (c) 2008 Carlos Alberto Maziero. garantida a permisso para copiar, distribuir e/ou modicar este documento sob os termos da Licena de Documentao Livre GNU (GNU Free Documentation License), Verso 1.2 ou qualquer verso posterior publicada pela Free Software Foundation. A licena est disponvel em http://www.gnu.org/licenses/gfdl.txt. Este texto foi produzido usando exclusivamente software livre: Sistema Operacional Linux (distriA buies Fedora e Ubuntu), compilador de texto L TEX 2 , gerenciador de referncias BibTeX, editor grco Inkscape, criadores de grcos GNUPlot e GraphViz e processador PS/PDF GhostScript, entre outros.

c Prof. Carlos Maziero

SUMRIO 2

Sumrio
1 Arquivos 1.1 O conceito de arquivo . . . . . . 1.2 Atributos . . . . . . . . . . . . . . 1.3 Operaes . . . . . . . . . . . . . 1.4 Formatos . . . . . . . . . . . . . . 1.4.1 Arquivos de registros . . 1.4.2 Arquivos de texto . . . . . 1.4.3 Arquivos executveis . . 1.4.4 Identicao de contedo 1.5 Arquivos especiais . . . . . . . . Uso de arquivos 2.1 Abertura de um arquivo . . . . 2.2 Formas de acesso . . . . . . . . 2.3 Controle de acesso . . . . . . . 2.4 Compartilhamento de arquivos 2.4.1 Travas em arquivos . . . 2.4.2 Semntica de acesso . . 2.5 Exemplo de interface . . . . . . Organizao de volumes 3.1 Diretrios . . . . . . . . 3.2 Caminhos de acesso . . 3.3 Atalhos . . . . . . . . . 3.4 Montagem de volumes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 5 5 6 6 7 8 9 11 11 12 14 15 15 16 17 19 20 22 25 26 27 28 29 30 31 32 34 36 41 41 43 44

Sistemas de arquivos 4.1 Arquitetura geral . . . . . . . . 4.2 Blocos fsicos e lgicos . . . . . 4.3 Caching de entrada/sada . . . . 4.4 Alocao fsica de arquivos . . 4.4.1 Alocao contgua . . . 4.4.2 Alocao encadeada . . 4.4.3 Alocao indexada . . . 4.4.4 Anlise comparativa . . 4.4.5 Gerncia de espao livre 4.5 O sistema de arquivos virtual . Tpicos avanados

c Prof. Carlos Maziero

Arquivos 3

Arquivos

Desde os primrdios da computao, percebeu-se a necessidade de armazenar informaes para uso posterior, como programas e dados. Hoje, parte importante do uso de um computador consiste em recuperar e apresentar informaes previamente armazenadas, como documentos, fotograas, msicas e vdeos. O prprio sistema operacional tambm precisa manter informaes armazenadas para uso posterior, como programas, bibliotecas e conguraes. Geralmente essas informaes devem ser armazenadas em um dispositivo no-voltil, que preserve seu contedo mesmo quando o computador estiver desligado. Para simplicar o armazenamento e busca de informaes, surgiu o conceito de arquivo, que ser discutido a seguir.

1.1

O conceito de arquivo

Um arquivo basicamente um conjunto de dados armazenados em um dispositivo fsico no-voltil, com um nome ou outra referncia que permita sua localizao posterior. Do ponto de vista do usurio e das aplicaes, o arquivo a unidade bsica de armazenamento de informao em um dispositivo no-voltil, pois para eles no h forma mais simples de armazenamento persistente de dados. Arquivos so extremamente versteis em contedo e capacidade: podem conter desde um texto ASCII com alguns bytes at sequncias de vdeo com dezenas de gigabytes, ou mesmo mais. Como um dispositivo de armazenamento pode conter milhes de arquivos, estes so organizados em estruturas hierrquicas denominadas diretrios (conforme ilustrado na gura 1 e discutido mais detalhadamente na seo 3.1). A organizao fsica e lgica dos arquivos e diretrios dentro de um dispositivo denominada sistema de arquivos. Um sistema de arquivos pode ser visto como uma imensa estrutura de dados armazenada de forma persistente em um dispositivo fsico. Existe um grande nmero de sistemas de arquivos, dentre os quais podem ser citados o NTFS (nos sistemas Windows), Ext2/Ext3/Ext4 (Linux), HPFS (MacOS), FFS (Solaris) e FAT (usado em pendrives USB, mquinas fotogrcas digitais e leitores MP3). A organizao dos sistemas de arquivos ser discutida na seo 4.

1.2

Atributos

Conforme apresentado, um arquivo uma unidade de armazenamento de informaes que podem ser dados, cdigo executvel, etc. Cada arquivo caracterizado por um conjunto de atributos, que podem variar de acordo com o sistema de arquivos utilizado. Os atributos mais usuais so: Nome: string de caracteres que identica o arquivo para o usurio, como foto1.jpg, relatrio.pdf, hello.c, etc; Tipo: indicao do formato dos dados contidos no arquivo, como udio, vdeo, imagem, texto, etc. Muitos sistemas operacionais usam parte do nome do arquivo para identicar o tipo de seu contedo, na forma de uma extenso: .doc, .jpg, .mp3, etc.;

c Prof. Carlos Maziero

Atributos 4

bin

home

usr bin

ls cp

daniel arq1.txt

henrique gcc relat.pdf firefox foto.jpg perl ooffice

mv play.mp3

diretrios

arquivos

Figura 1: Arquivos organizados em diretrios dentro de um dispositivo. Tamanho: indicao do tamanho do contedo do arquivo, em bytes ou registros; Datas: para ns de gerncia, importante manter as datas mais importantes relacionadas ao arquivo, como suas datas de criao, de ltimo acesso e de ltima modicao do contedo; Proprietrio: em sistemas multi-usurios, cada arquivo tem um proprietrio, que deve estar corretamente identicado; Permisses de acesso: indicam que usurios tm acesso quele arquivo e que formas de acesso so permitidas (leitura, escrita, remoo, etc.); Localizao: indicao do dispositivo fsico onde o arquivo se encontra e da posio do arquivo dentro do mesmo; Outros atributos: vrios outros atributos podem ser associados a um arquivo, por exemplo para indicar se um arquivo de sistema, se est visvel aos usurios, se tem contedo binrio ou textual, etc. Cada sistema de arquivos normalmente dene seus prprios atributos especcos, alm dos atributos usuais. Nem sempre os atributos oferecidos por um sistema de arquivos so sucientes para exprimir todas as informaes a respeito de um arquivo. Nesse caso, a soluo encontrada pelos usurios usar o nome do arquivo para exprimir a informao desejada. Por exemplo, em muitos sistemas a parte nal do nome do arquivo (sua extenso) usada para identicar o formato de seu contedo. Outra situao frequente usar parte do nome do arquivo para identicar diferentes verses do mesmo contedo1 : relat-v1.txt, relat-v2.txt, etc.
Alguns sistemas operacionais, como o TOPS-20 e o OpenVMS, possuem sistemas de arquivos com suporte automtico a mltiplas verses do mesmo arquivo.
1

c Prof. Carlos Maziero

Operaes 5

1.3

Operaes

As aplicaes e o sistema operacional usam arquivos para armazenar e recuperar dados. O uso dos arquivos feito atravs de um conjunto de operaes, geralmente implementadas sob a forma de chamadas de sistema e funes de bibliotecas. As operaes bsicas envolvendo arquivos so: Criar: a criao de um novo arquivo implica em alocar espao para ele no dispositivo de armazenamento e denir seus atributos (nome, localizao, proprietrio, permisses de acesso, etc.); Abrir: antes que uma aplicao possa ler ou escrever dados em um arquivo, ela deve solicitar ao sistema operacional a abertura desse arquivo. O sistema ir ento vericar se o arquivo existe, vericar se as permisses associadas ao arquivo permitem aquele acesso, localizar seu contedo no dispositivo de armazenamento e criar uma referncia para ele na memria da aplicao; Ler: permite transferir dados presentes no arquivo para uma rea de memria da aplicao; Escrever: permite transferir dados na memria da aplicao para o arquivo no dispositivo fsico; os novos dados podem ser adicionados no nal do arquivo ou sobrescrever dados j existentes; Mudar atributos: para modicar outras caractersticas do arquivo, como nome, localizao, proprietrio, permisses, etc. Fechar: ao concluir o uso do arquivo, a aplicao deve informar ao sistema operacional que o mesmo no mais necessrio, a m de liberar as estruturas de gerncia do arquivo na memria do ncleo; Remover: para eliminar o arquivo do dispositivo, descartando seus dados e liberando o espao ocupado por ele. Alm dessas operaes bsicas, outras operaes podem ser denidas, como truncar, copiar, mover ou renomear arquivos. Todavia, essas operaes geralmente podem ser construdas usando as operaes bsicas.

1.4

Formatos

Em sua forma mais simples, um arquivo contm basicamente uma sequncia de bytes, que pode estar estruturada de diversas formas para representar diferentes tipos de informao. O formato ou estrutura interna de um arquivo pode ser denido e reconhecido pelo ncleo do sistema operacional ou somente pelas aplicaes. O ncleo do sistema geralmente reconhece apenas alguns poucos formatos de arquivos, como binrios executveis e bibliotecas. Os demais formatos de arquivos so vistos pelo ncleo apenas como sequncias de bytes sem um signicado especco, cabendo s aplicaes interpret-los.

c Prof. Carlos Maziero

Formatos 6

Os arquivos de dados convencionais so estruturados pelas aplicaes para armazenar os mais diversos tipos de informaes, como imagens, sons e documentos. Uma aplicao pode denir um formato prprio de armazenamento ou seguir formatos padronizados. Por exemplo, h um grande nmero de formatos pblicos padronizados para o armazenamento de imagens, como JPEG, GIF, PNG e TIFF, mas tambm existem formatos de arquivos proprietrios, denidos por algumas aplicaes especcas, como o formato PSD (do editor Adobe Photoshop) e o formato XCF (do editor grco GIMP). A adoo de um formato proprietrio ou exclusivo diculta a ampla utilizao das informaes armazenadas, pois somente aplicaes que reconheam aquele formato conseguem ler corretamente as informaes contidas no arquivo. 1.4.1 Arquivos de registros

Alguns ncleos de sistemas operacionais oferecem arquivos com estruturas internas que vo alm da simples sequncia de bytes. Por exemplo, o sistema OpenVMS [Rice, 2000] proporciona arquivos baseados em registros, cujo contedo visto pelas aplicaes como uma sequncia linear de registros de tamanho xo ou varivel, e tambm arquivos indexados, nos quais podem ser armazenados pares {chave/valor}, de forma similar a um banco de dados relacional. A gura 2 ilustra a estrutura interna desses dois tipos de arquivos.
nome (chave) telefone (valor)

reg1 reg2 reg3 reg4 reg5 reg6 reg7

struct char char int int int }

{ nome[40]; CPF[10]; idade; peso; altura;

daniel marina henrique gabriel renata andressa guilherme

9977-1173 9876-5432 8781-9750 8858-8286 9663-9293 8779-5538 9979-4166

Figura 2: Arquivos estruturados: registros em sequncia e registros indexados. Nos sistemas operacionais cujo ncleo no suporta arquivos estruturados como registros, essa funcionalidade pode ser facilmente obtida atravs de bibliotecas especcas ou do suporte de execuo de algumas linguagens de programao. Por exemplo, a biblioteca Berkeley DB disponvel em plataformas UNIX oferece suporte indexao de registros sobre arquivos UNIX convencionais. 1.4.2 Arquivos de texto

Um tipo de arquivo de uso muito frequente o arquivo de texto puro (ou plain text). Esse tipo de arquivo muito usado para armazenar informaes textuais simples, como cdigos-fonte de programas, arquivos de congurao, pginas HTML, dados em XML, etc. Um arquivo de texto formado por linhas de caracteres ASCII de tamanho varivel, separadas por caracteres de controle. Nos sistemas UNIX, as linhas so separadas por um caractere New Line (ASCII 10 ou \n). J nos sistemas DOS/Windows, as linhas de um arquivo de texto so separadas por dois caracteres: o caractere Carriage Return

c Prof. Carlos Maziero

Formatos 7

(ASCII 13 ou \r) seguido do caractere New Line. Por exemplo, considere o seguinte programa em C armazenado em um arquivo hello.c (os caracteres indicam espaos em branco):
1 2 3 4 5

int main() { printf("Hello, world\n"); exit(0); }

O arquivo de texto hello.c seria armazenado da seguinte forma2 em um ambiente UNIX:


1 2 3 4 5 6 7 8

0000 0010 0020 0030

69 i 72 r 72 r 30 0

6e n 69 i 6c l 29 )

74 t 6e n 64 d 3b ;

20 6d m 74 66 t f 5c 6e \ n 0a 7d \n }

61 69 6e 28 29 0a 7b 0a 20 20 70 a i n ( ) \n { \n p 28 22 48 65 6c 6c 6f 2c 20 77 6f ( " H e l l o , w o 22 29 3b 0a 20 20 65 78 69 74 28 " ) ; \n e x i t ( 0a \n

Por outro lado, o mesmo arquivo hello.c seria armazenado da seguinte forma em um sistema DOS/Windows:
1 2 3 4 5 6 7 8

0000 0010 0020 0030

69 6e 74 i n t 20 70 72 p r 77 6f 72 w o r 69 74 28 i t (

20 6d m 69 6e i n 6c 64 l d 30 29 0 )

61 a 74 t 5c \ 3b ;

69 i 66 f 6e n 0d \r

6e n 28 ( 22 " 0a \n

28 ( 22 " 29 ) 7d }

29 ) 48 H 3b ; 0d \r

0d \r 65 e 0d \r 0a \n

0a 7b 0d 0a 20 \n { \r \n 6c 6c 6f 2c 20 l l o , 0a 20 20 65 78 \n e x

Essa diferena na forma de representao da separao entre linhas pode provocar problemas em arquivos de texto transferidos entre sistemas Windows e UNIX, caso no seja feita a devida converso. 1.4.3 Arquivos executveis

Um arquivo executvel dividido internamente em vrias sees, para conter cdigo, tabelas de smbolos (variveis e funes), listas de dependncias (bibliotecas necessrias) e outras informaes de congurao. A organizao interna de um arquivo executvel ou biblioteca depende do sistema operacional para o qual foi denido. Os formatos de executveis mais populares atualmente so [Levine, 2000]:
Listagem obtida atravs do comando hd do Linux, que apresenta o contedo de um arquivo em hexadecimal e seus caracteres ASCII correspondentes, byte por byte.
2

c Prof. Carlos Maziero

Formatos 8

ELF (Executable and Linking Format): formato de de arquivo usado para programas executveis e bibliotecas na maior parte das plataformas UNIX modernas. composto por um cabealho e vrias sees de dados, contendo cdigo executvel, tabelas de smbolos e informaes de relocao de cdigo. PE (Portable Executable): o formato usado para executveis e bibliotecas na plataforma Windows. Consiste basicamente em uma adaptao do antigo formato COFF usado em plataformas UNIX. A gura 3 ilustra a estrutura interna de um arquivo executvel no formato ELF, usado tipicamente em sistemas UNIX (Linux, Solaris, etc). Esse arquivo dividido em sees, que representam trechos de cdigo e dados sujeitos a ligao dinmica e relocao; as sees so agrupadas em segmentos, de forma a facilitar a carga em memria do cdigo e o lanamento do processo.
ELF header Program header table Segments

Sections

Section header table

Figura 3: Estrutura interna de um arquivo executvel em formato ELF [Levine, 2000]. Alm de executveis e bibliotecas, o ncleo de um sistema operacional costuma reconhecer alguns tipos de arquivos no convencionais, como diretrios, atalhos (links), dispositivos fsicos e estruturas de comunicao do ncleo, como sockets, pipes e las de mensagens (vide seo 1.5). 1.4.4 Identicao de contedo

Um problema importante relacionado aos formatos de arquivos a correta identicao de seu contedo pelos usurios e aplicaes. J que um arquivo de dados pode ser visto como uma simples sequncia de bytes, como possvel saber que tipo de informao essa sequncia representa? Uma soluo simples para esse problema consiste em indicar o tipo do contedo como parte do nome do arquivo: um arquivo praia.jpg provavelmente contm uma imagem em formato JPEG, enquanto um arquivo entrevista.mp3 contm udio em formato MP3. Essa estratgia, amplamente utilizada em muitos sistemas operacionais, foi introduzida nos anos 1980 pelo sistema operacional DOS. Naquele sistema, os arquivos eram nomeados segundo uma

c Prof. Carlos Maziero

Arquivos especiais 9

abordagem denominada 8.3, ou seja, 8 caracteres seguidos de um ponto (.) e mais 3 caracteres de extenso, para denir o tipo do arquivo. Outra abordagem, frequentemente usada em sistemas UNIX, o uso de alguns bytes no incio de cada arquivo para a denio de seu tipo. Esses bytes iniciais so denominados nmeros mgicos (magic numbers), e so usados em muitos tipos de arquivos, como exemplicado na tabela 1: Tabela 1: Nmeros mgicos de alguns tipos de arquivos
Tipo de arquivo Documento PostScript Imagem GIF Msica MIDI bytes iniciais %! GIF89a MThd Tipo de arquivo Documento PDF Imagem JPEG Classes Java (JAR) bytes iniciais %PDF 0xFFD8 0xCAFEBABE

Nos sistema UNIX, o utilitrio file permite identicar o tipo de arquivo atravs da anlise de seus bytes iniciais e do restante de sua estrutura interna, sem levar em conta o nome do arquivo. Por isso, constitui uma ferramenta importante para identicar arquivos desconhecidos ou com extenso errada. Alm do uso de extenses no nome do arquivo e de nmeros mgicos, alguns sistemas operacionais denem atributos adicionais no sistema de arquivos para indicar o contedo de cada arquivo. Por exemplo, o sistema operacional MacOS 9 denia um atributo com 4 bytes para identicar o tipo de cada arquivo (le type), e outro atributo com 4 bytes para indicar a aplicao que o criou (creator application). Os tipos de arquivos e aplicaes so denidos em uma tabela mantida pelo fabricante do sistema. Assim, quando o usurio solicitar a abertura de um determinado arquivo, o sistema ir escolher a aplicao que o criou, se ela estiver presente. Caso contrrio, pode indicar ao usurio uma relao de aplicaes aptas a abrir aquele tipo de arquivo. Recentemente, a necessidade de transferir arquivos atravs de e-mail e de pginas Web levou denio de um padro de tipagem de arquivos conhecido como Tipos MIME (da sigla Multipurpose Internet Mail Extensions) [Freed and Borenstein, 1996]. O padro MIME dene tipos de arquivos atravs de uma notao uniformizada na forma tipo/subtipo. Alguns exemplos de tipos de arquivos denidos segundo o padro MIME so apresentados na tabela 2. O padro MIME usado para identicar arquivos transferidos como anexos de e-mail e contedos recuperados de pginas Web. Alguns sistemas operacionais, como o BeOS e o MacOS X, denem atributos de acordo com esse padro para identicar o contedo de cada arquivo dentro do sistema de arquivos.

1.5

Arquivos especiais

O conceito de arquivo ao mesmo tempo simples e poderoso, o que motivou sua utilizao de forma quase universal. Alm do armazenamento de cdigo e dados, arquivos tambm podem ser usados como: Abstrao de dispositivos de baixo nvel: os sistemas UNIX costumam mapear as interfaces de acesso de vrios dispositivos fsicos em arquivos dentro do diretrio /dev (de devices), como por exemplo:

c Prof. Carlos Maziero

Arquivos especiais 10

Tabela 2: Tipos MIME correspondentes a alguns formatos de arquivos


Tipo MIME application/java-archive application/msword application/vnd.oasis.opendocument.text audio/midi audio/mpeg image/jpeg image/png text/csv text/html text/plain text/rtf text/x-csrc video/quicktime Signicado Arquivo de classes Java (JAR) Documento do Microsoft Word Documento do OpenOce udio em formato MIDI udio em formato MP3 Imagem em formato JPEG Imagem em formato PNG Texto em formato CSV (Comma-separated Values) Texto HTML Texto puro Texto em formato RTF (Rich Text Format) Cdigo-fonte em C Vdeo no formato Quicktime

/dev/ttyS0: porta de comunicao serial COM1; /dev/audio: placa de som; /dev/sda1: primeira partio do primeiro disco SCSI (ou SATA). Abstrao de interfaces do ncleo: em sistemas UNIX, os diretrios /proc e /sys permitem consultar e/ou modicar informaes internas do ncleo do sistema operacional, dos processos em execuo e dos drivers de dispositivos. Por exemplo, alguns arquivos oferecidos pelo Linux: /proc/cpuinfo: informaes sobre os processadores disponveis no sistema; /proc/3754/maps: disposio das reas de memria alocadas para o processo cujo identicador (PID) 3754; /sys/block/sda/queue/scheduler: denio da poltica de escalonamento de disco (vide seo ??) a ser usada no acesso ao disco /dev/sda. Canais de comunicao: na famlia de protocolos de rede TCP/IP, a metfora de arquivo usada como interface para os canais de comunicao: uma conexo TCP apresentada aos dois processos envolvidos como um arquivo, sobre o qual eles podem escrever (enviar) e ler (receber) dados entre si. Vrios mecanismos de comunicao local entre processos de um sistema tambm usam a metfora do arquivo, como o caso dos pipes em UNIX. Em alguns sistemas operacionais experimentais, como o Plan 9 [Pike et al., 1993, Pike et al., 1995] e o Inferno [Dorward et al., 1997], todos os recursos e entidades fsicas e lgicas do sistema so mapeadas sob a forma de arquivos: processos, threads, conexes de rede, usurios, sesses de usurios, janelas grcas, reas de memria alocadas, etc. Assim, para nalizar um determinado processo, encerrar uma conexo de rede ou desconectar um usurio, basta remover o arquivo correspondente. Embora o foco deste texto esteja concentrado em arquivos convencionais, que visam o armazenamento de informaes (bytes ou registros), muitos dos conceitos aqui expostos so igualmente aplicveis aos arquivos no-convencionais descritos nesta seo.

c Prof. Carlos Maziero

Uso de arquivos 11

Uso de arquivos

Arquivos so usados por processos para ler e escrever dados de forma no-voltil. Para usar arquivos, um processo tem sua disposio uma interface de acesso, que depende da linguagem utilizada e do sistema operacional subjacente. Essa interface normalmente composta por uma representao lgica de cada arquivo usado pelo processo (uma referncia ao arquivo) e por um conjunto de funes (ou mtodos) para realizar operaes sobre esses arquivos. Atravs dessa interface, os processos podem localizar arquivos no disco, ler e modicar seu contedo, entre outras operaes. Na sequncia desta seo sero discutidos aspectos relativos ao uso de arquivos, como a abertura do arquivo, as formas de acesso aos seus dados, o controle de acesso e problemas associados ao compartilhamento de arquivos entre vrios processos.

2.1

Abertura de um arquivo

Para poder ler ou escrever dados em um arquivo, cada aplicao precisa antes abr-lo. A abertura de um arquivo consiste basicamente em preparar as estruturas de memria necessrias para acessar os dados do arquivo em questo. Assim, para abrir um arquivo, o ncleo do sistema operacional deve realizar as seguintes operaes: 1. Localizar o arquivo no dispositivo fsico, usando seu nome e caminho de acesso (vide seo 3.2); 2. Vericar se a aplicao tem permisso para usar aquele arquivo da forma desejada (leitura e/ou escrita); 3. Criar uma estrutura na memria do ncleo para representar o arquivo aberto; 4. Inserir uma referncia a essa estrutura na lista de arquivos abertos mantida pelo sistema, para ns de gerncia; 5. Devolver aplicao uma referncia a essa estrutura, para ser usada nos acessos subsequentes ao arquivo recm-aberto. Concluda a abertura do arquivo, o processo solicitante recebe do ncleo uma referncia para o arquivo recm-aberto, que deve ser informada pelo processo em suas operaes subsequentes envolvendo aquele arquivo. Assim que o processo tiver terminado de usar um arquivo, ele deve solicitar ao ncleo o fechamento do arquivo, que implica em concluir as operaes de escrita eventualmente pendentes e remover da memria do ncleo as estruturas de gerncia criadas durante sua abertura. Normalmente, os arquivos abertos so automaticamente fechados quando do encerramento do processo, mas pode ser necessrio fech-los antes disso, caso seja um processo com vida longa, como um daemon servidor de pginas Web, ou que abra muitos arquivos, como um compilador. As referncias a arquivos abertos usadas pelas aplicaes dependem da linguagem de programao utilizada para constru-las. Por exemplo, em um programa escrito na linguagem C, cada arquivo aberto representado por uma varivel dinmica do tipo FILE*, que denominada um ponteiro de arquivo (le pointer). Essa varivel dinmica

c Prof. Carlos Maziero

Formas de acesso 12

alocada no momento da abertura do arquivo e serve como uma referncia ao mesmo nas operaes de acesso subsequentes. J em Java, as referncias a arquivos abertos so objetos instanciados a partir da classe File. Na linguagem Python existem os le objects, criados a partir da chamada open. Por outro lado, cada sistema operacional tem sua prpria conveno para a representao de arquivos abertos. Por exemplo, em sistemas Windows os arquivos abertos por um processo so representados pelo ncleo por referncias de arquivos (le handles), que so estruturas de dados criadas pelo ncleo para representar cada arquivo aberto. Por outro lado, em sistemas UNIX os arquivos abertos por um processo so representados por descritores de arquivos (le descriptors). Um descritor de arquivo aberto um nmero inteiro no-negativo, usado como ndice em uma tabela que relaciona os arquivos abertos por aquele processo, mantida pelo ncleo. Dessa forma, cabe s bibliotecas e ao suporte de execuo de cada linguagem de programao mapear a representao de arquivo aberto fornecida pelo ncleo do sistema operacional subjacente na referncia de arquivo aberto usada por aquela linguagem. Esse mapeamento necessrio para garantir que as aplicaes que usam arquivos (ou seja, quase todas elas) sejam portveis entre sistemas operacionais distintos.

2.2

Formas de acesso

Uma vez aberto um arquivo, a aplicao pode ler os dados contidos nele, modic-los ou escrever novos dados. H vrias formas de se ler ou escrever dados em um arquivo, que dependem da estrutura interna do mesmo. Considerando apenas arquivos simples, vistos como uma sequncia de bytes, duas formas de acesso so usuais: o acesso sequencial e o acesso direto (ou acesso aleatrio). No acesso sequencial, os dados so sempre lidos e/ou escritos em sequncia, do incio ao nal do arquivo. Para cada arquivo aberto por uma aplicao denido um ponteiro de acesso, que inicialmente aponta para a primeira posio do arquivo. A cada leitura ou escrita, esse ponteiro incrementado e passa a indicar a posio da prxima leitura ou escrita. Quando esse ponteiro atinge o nal do arquivo, as leituras no so mais permitidas, mas as escritas ainda o so, permitindo acrescentar dados ao nal do mesmo. A chegada do ponteiro ao nal do arquivo normalmente sinalizada ao processo atravs de um ag de m de arquivo (EoF - End-of-File). A gura 4 traz um exemplo de acesso sequencial em leitura a um arquivo, mostrando a evoluo do ponteiro do arquivo durante uma sequncia de leituras. A primeira leitura no arquivo traz a string Qui scribit bis, a segunda leitura traz legit. , e assim sucessivamente. O acesso sequencial implementado em praticamente todos os sistemas operacionais de mercado e constitui a forma mais usual de acesso a arquivos, usada pela maioria das aplicaes.
0 15 23 35 45 60

leituras
Qui scribit bis legit. Non nova, sed nove. Felix qui potuit rerum...

Figura 4: Leituras sequenciais em um arquivo de texto.

c Prof. Carlos Maziero

Formas de acesso 13

Por outro lado, no mtodo de acesso direto (ou aleatrio), pode-se indicar a posio no arquivo onde cada leitura ou escrita deve ocorrer, sem a necessidade de um ponteiro. Assim, caso se conhea previamente a posio de um determinado dado no arquivo, no h necessidade de percorr-lo sequencialmente at encontrar o dado desejado. Essa forma de acesso muito importante em gerenciadores de bancos de dados e aplicaes congneres, que precisam acessar rapidamente as posies do arquivo correspondentes ao registros desejados em uma operao. Na prtica, a maioria dos sistemas operacionais usa o acesso sequencial como modo bsico de operao, mas oferece operaes para mudar a posio do ponteiro do arquivo caso necessrio, o que permite ento o acesso direto a qualquer registro do arquivo. Nos sistemas POSIX, o reposicionamento do ponteiro do arquivo efetuado atravs das chamadas lseek e fseek. Uma forma particular de acesso direto ao contedo de um arquivo o mapeamento em memria do mesmo, que faz uso dos mecanismos de memria virtual (paginao). Nessa modalidade de acesso, um arquivo associado a um vetor de bytes (ou de registros) de mesmo tamanho na memria principal, de forma que cada posio do vetor corresponda sua posio equivalente no arquivo. Quando uma posio especca do vetor ainda no acessada lida, gerada uma falta de pgina. Nesse momento, o mecanismo de paginao da memria virtual intercepta o acesso memria, l o contedo correspondente no arquivo e o deposita no vetor, de forma transparente aplicao. Escritas no vetor so transferidas para o arquivo por um procedimento similar. Caso o arquivo seja muito grande, pode-se mapear em memria apenas partes dele. A gura 5 ilustra essa forma de acesso.
processo acessos

vetor de bytes

pginas lidas pginas escritas

arquivo em disco

Figura 5: Arquivo mapeado em memria. Finalmente, alguns sistemas operacionais oferecem tambm a possibilidade de acesso indexado aos dados de um arquivo, como o caso do OpenVMS [Rice, 2000]. Esse

c Prof. Carlos Maziero

Controle de acesso 14

sistema implementa arquivos cuja estrutura interna pode ser vista como um conjunto de pares chave/valor. Os dados do arquivo so armazenados e recuperados de acordo com suas chaves correspondentes, como em um banco de dados relacional. Como o prprio ncleo do sistema implementa os mecanismos de acesso e indexao do arquivo, o armazenamento e busca de dados nesse tipo de arquivo costuma ser muito rpido, dispensando bancos de dados para a construo de aplicaes mais simples.

2.3

Controle de acesso

Como arquivos so entidades que sobrevivem existncia do processo que as criou, importante denir claramente o proprietrio de cada arquivo e que operaes ele e outros usurios do sistema podem efetuar sobre o mesmo. A forma mais usual de controle de acesso a arquivos consiste em associar os seguintes atributos a cada arquivo e diretrio do sistema de arquivos: Proprietrio: identica o usurio dono do arquivo, geralmente aquele que o criou; muitos sistemas permitem denir tambm um grupo proprietrio do arquivo, ou seja, um grupo de usurios com acesso diferenciado sobre o mesmo; Permisses de acesso: dene que operaes cada usurio do sistema pode efetuar sobre o arquivo. Existem muitas formas de se denir permisses de acesso a recursos em um sistema computacional; no caso de arquivos, a mais difundida emprega listas de controle de acesso (ACL - Access Control Lists) associadas a cada arquivo. Uma lista de controle de acesso basicamente uma lista indicando que usurios esto autorizados a acessar o arquivo, e como cada um pode acess-lo. Um exemplo conceitual de listas de controle de acesso a arquivos seria:
1 2 3

arq1.txt : (Joo: ler), (Jos: ler, escrever), (Maria: ler, remover) video.avi : (Jos: ler), (Maria: ler) musica.mp3: (Daniel: ler, escrever, apagar)

No entanto, essa abordagem se mostra pouco prtica caso o sistema tenha muitos usurios e/ou arquivos, pois as listas podem car muito extensas e difceis de gerenciar. O UNIX usa uma abordagem bem mais simplicada para controle de acesso, que considera basicamente trs tipos de usurios e trs tipos de permisses: Usurios: o proprietrio do arquivo (User), um grupo de usurios associado ao arquivo (Group) e os demais usurios (Others). Permisses: ler (Read), escrever (Write) e executar (eXecute). Dessa forma, no UNIX so necessrios apenas 9 bits para denir as permisses de acesso a cada arquivo ou diretrio. Por exemplo, considerando a seguinte listagem de diretrio em um sistema UNIX (editada para facilitar sua leitura):

c Prof. Carlos Maziero

Compartilhamento de arquivos 15

1 2 3 4 5 6 7

host:~> ls -l d rwx --- --- rwx r-x --- rw- r-- r-- rw- --- --- rw- r-- r-- rw- --- ---

2 1 1 1 1 1

maziero maziero maziero maziero maziero maziero

prof prof prof prof prof prof

4096 7248 54 59 195780 40494

2008-09-27 2008-08-23 2008-08-23 2008-08-23 2008-09-26 2008-09-27

08:43 09:54 09:54 09:49 22:08 08:44

figuras hello-unix hello-unix.c hello-windows.c main.pdf main.tex

Nessa listagem, o arquivo hello-unix.c (linha 4) pode ser acessado em leitura e escrita por seu proprietrio (o usurio maziero, com permisses rw-), em leitura pelos usurios do grupo prof (permisses r--) e em leitura pelos demais usurios do sistema (permisses r--). J o arquivo hello-unix (linha 3) pode ser acessado em leitura, escrita e execuo por seu proprietrio (permisses rwx), em leitura e execuo pelos usurios do grupo prof (permisses r-x) e no pode ser acessado pelos demais usurios (permisses ---). No caso de diretrios, a permisso de leitura autoriza a listagem do diretrio, a permisso de escrita autoriza sua modicao (criao, remoo ou renomeao de arquivos ou sub-diretrios) e a permisso de execuo autoriza usar aquele diretrio como diretrio de trabalho ou parte de um caminho. No mundo Windows, o sistema de arquivos NTFS implementa um controle de acesso bem mais exvel que o do UNIX, que dene permisses aos proprietrios de forma similar, mas no qual permisses complementares a usurios individuais podem ser associadas a qualquer arquivo. Mais detalhes sobre os modelos de controle de acesso usados nos sistemas UNIX e Windows podem ser encontrados no captulo ??. importante destacar que o controle de acesso normalmente realizado somente durante a abertura do arquivo, para a criao de sua referncia em memria. Isso signica que, uma vez aberto um arquivo por um processo, este ter acesso ao arquivo enquanto o mantiver aberto, mesmo que as permisses do arquivo sejam alteradas para impedir esse acesso. O controle contnuo de acesso aos arquivos pouco frequentemente implementado em sistemas operacionais, porque vericar as permisses de acesso a cada operao de leitura ou escrita em um arquivo teria um impacto negativo signicativo sobre o desempenho do sistema.

2.4

Compartilhamento de arquivos

Em um sistema multi-tarefas, frequente ter arquivos acessados por mais de um processo, ou mesmo mais de um usurio, caso as permisses de acesso ao mesmo o permitam. Conforme estudado no captulo ??, o acesso simultneo a recursos compartilhados pode gerar condies de disputa (race conditions), que levam inconsistncia de dados e outros problemas. O acesso concorrente em leitura a um arquivo no acarreta problemas, mas a possibilidade de escritas e leituras simultneas tem de ser prevista e tratada de forma adequada. 2.4.1 Travas em arquivos

A soluo mais simples e mais frequentemente utilizada para gerenciar o acesso compartilhado a arquivos o uso de travas de excluso mtua (mutex locks), estudadas

c Prof. Carlos Maziero

Compartilhamento de arquivos 16

no captulo ??. A maioria dos sistemas operacionais oferece algum mecanismo de sincronizao para o acesso a arquivos, na forma de uma ou mais travas (locks) associadas a cada arquivo aberto. A sincronizao pode ser feita sobre o arquivo inteiro ou sobre algum trecho especco dele, permitindo que dois ou mais processos possam trabalhar em partes distintas de um arquivo sem necessidade de sincronizao entre eles. As travas oferecidas pelo sistema operacional podem ser obrigatrias (mandatory locks) ou recomendadas (advisory locks). As travas obrigatrias so impostas pelo ncleo de forma incontornvel: se um processo obtiver a trava do arquivo para si, outros processos que solicitarem acesso ao arquivo sero suspensos at que a respectiva trava seja liberada. Por outro lado, as travas recomendadas no so impostas pelo ncleo do sistema operacional. Neste caso, um processo pode acessar um arquivo mesmo sem ter sua trava. Caso sejam usadas travas recomendadas, cabe ao programador implementar os controles de trava necessrios em suas aplicaes, para impedir acessos conitantes aos arquivos. As travas sobre arquivos tambm podem ser exclusivas ou compartilhadas. Uma trava exclusiva, tambm chamada trava de escrita, garante acesso exclusivo ao arquivo: enquanto uma trava exclusiva estiver ativa, nenhum outro processo poder obter uma trava sobre aquele arquivo. J uma trava compartilhada (ou trava de leitura) impede outros processos de criar travas exclusivas sobre aquele arquivo, mas permite a existncia de outras travas compartilhadas. Em conjunto, as travas exclusivas e compartilhadas implementam um modelo de sincronizao leitores/escritores (descrito na seo ??), no qual os leitores acessam o arquivo usando travas compartilhadas e os escritores o fazem usando travas exclusivas. importante observar que normalmente as travas de arquivos so atribudas a processos, portanto um processo s pode ter um tipo de trava sobre um mesmo arquivo. Alm disso, todas as suas travas so liberadas quando o processo fecha o arquivo ou encerra sua execuo. No UNIX, a manipulao de travas em arquivos feita atravs das chamadas de sistema flock e fcntl. Esse sistema oferece por default travas recomendadas exclusivas ou compartilhadas sobre arquivos ou trechos de arquivos. Sistemas Windows oferecem por default travas obrigatrias sobre arquivos, que podem ser exclusivas ou compartilhadas, ou travas recomendadas sobre trechos de arquivos. 2.4.2 Semntica de acesso

Quando um arquivo aberto e usado por um nico processo, o funcionamento das operaes de leitura e escrita simples e inequvoco: quando um dado escrito no arquivo, ele est prontamente disponvel para leitura se o processo desejar l-lo novamente. No entanto, arquivos podem ser abertos por vrios processos simultaneamente, e os dados escritos por um processo podem no estar prontamente disponveis aos demais processos que lem aquele arquivo. Isso ocorre porque os discos rgidos so normalmente lentos, o que leva os sistemas operacionais a usar buers intermedirios para acumular os dados a escrever e assim otimizar o acesso aos discos. A forma como os dados escritos por um processo so percebidos pelos demais processos que abriram aquele arquivo chamada de semntica de compartilhamento. Existem vrias semnticas possveis, mas as mais usuais so [Silberschatz et al., 2001]:

c Prof. Carlos Maziero

Exemplo de interface 17

Semntica UNIX: toda modicao em um arquivo imediatamente visvel a todos os processos que mantm aquele arquivo aberto; existe tambm a possibilidade de vrios processos compartilharem o mesmo ponteiro de posicionamento do arquivo. Essa semntica a mais comum em sistemas de arquivos locais, ou seja, para acesso a arquivos nos dispositivos locais; Semntica de sesso: considera que cada processo usa um arquivo em uma sesso, que inicia com a abertura do arquivo e que termina com seu fechamento. Modicaes em um arquivo feitas em uma sesso somente so visveis na mesma seo e pelas sesses que iniciarem depois do encerramento da mesma, ou seja, depois que o processo fechar o arquivo; assim, sesses concorrentes de acesso a um arquivo compartilhado podem ver contedos distintos para o mesmo arquivo. Esta semntica normalmente aplicada a sistemas de arquivos de rede, usados para acesso a arquivos em outros computadores; Semntica imutvel: de acordo com esta semntica, se um arquivo pode ser compartilhado por vrios processos, ele marcado como imutvel, ou seja, seu contedo no pode ser modicado. a forma mais simples de garantir a consistncia do contedo do arquivo entre os processos que compartilham seu acesso, sendo por isso usada em alguns sistemas de arquivos distribudos. A gura 6 traz um exemplo de funcionamento da semntica de sesso: os processos p1 a p4 compartilham o acesso ao mesmo arquivo, que contm apenas um nmero inteiro, com valor inicial 23. Pode-se perceber que o valor 39 escrito por p1 visto por ele na mesma sesso, mas no visto por p2 , que abriu o arquivo antes do m da sesso de p1 . O processo p3 v o valor 39, pois abriu o arquivo depois que p1 o fechou, mas no v o valor escrito por p2 . Da mesma forma, o valor 71 escrito por p2 no percebido por p3 , mas somente por p4 .

2.5

Exemplo de interface

Como visto na seo 2.1, cada linguagem de programao dene sua prpria forma de representar arquivos abertos e as funes ou mtodos usados para manipul-los. A ttulo de exemplo, ser apresentada uma viso geral da interface para arquivos oferecida pela linguagem C no padro ANSI [Kernighan and Ritchie, 1989]. Em C, cada arquivo aberto representado por uma varivel dinmica do tipo FILE*, criada pela funo fopen. As funes de acesso a arquivos so denidas na Biblioteca Padro de Entrada/Sada (Standard I/O Library, denida no arquivo de cabealho stdio.h). As funes mais usuais dessa biblioteca so apresentadas a seguir: Abertura e fechamento de arquivos: FILE * fopen (const char *filename, const char *opentype): abre o arquivo cujo nome indicado por filename; a forma de abertura (leitura, escrita, etc) indicada pelo parmetro opentype; em caso de sucesso, devolve uma referncia ao arquivo; int close (FILE *f): fecha o arquivo referenciado por f;

c Prof. Carlos Maziero

Exemplo de interface 18

71
p4
open read

12
close write

39
p3
open read

6
close write

23
p2
open read

23
read

71
close write

23
p1
open read

39
write

39
close read

t
Figura 6: Compartilhamento de arquivo usando a semntica de sesso. Leitura e escrita de caracteres e strings: int fputc (int c, FILE *f): escreve um caractere no arquivo; int fgetc (FILE *f): l um caractere do arquivo ; Reposicionamento do ponteiro do arquivo: long int ftell (FILE *f): indica a posio corrente do ponteiro do arquivo referenciado por f; int fseek (FILE *f, long int offset, int whence): move o ponteiro do arquivo para a posio indicada por offset; void rewind (FILE *f): retorna o ponteiro do arquivo sua posio inicial; int feof (FILE *f): indica se o ponteiro chegou ao nal do arquivo; Tratamento de travas: void flockfile (FILE *f): solicita acesso exclusivo ao arquivo, podendo bloquear o processo solicitante caso o arquivo j tenha sido reservado por outro processo; void funlockfile (FILE *f): libera o acesso ao arquivo. O exemplo a seguir ilustra o uso de algumas dessas funes. Esse programa abre um arquivo chamado numeros.dat para operaes de leitura (linha 9), verica se a abertura do arquivo foi realizada corretamente (linhas 11 a 15), l seus caracteres e os imprime na tela at encontrar o m do arquivo (linhas 17 a 23) e nalmente o fecha (linha 25).

c Prof. Carlos Maziero

Organizao de volumes 19

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

#include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[], char* envp[]) { FILE *arq ; char c ; arq = fopen ("infos.dat", "r") ; /* abertura do arquivo em leitura */ if (! arq) /* referencia de arquivo invalida */ { perror ("Erro ao abrir arquivo") ; exit (1) ; } while (1) { c = getc (arq) ; /* le um caractere do arquivo */ if (feof (arq)) /* chegou ao final do arquivo? */ break ; putchar(c) ; /* imprime o caractere na tela */ } fclose (arq) ; exit (0) ; } /* fecha o arquivo */

Organizao de volumes

Um computador normalmente possui um ou mais dispositivos para armazenar arquivos, que podem ser discos rgidos, discos ticos (CD-ROM, DVD-ROM), discos de estado slido (baseados em memria ash, como pendrives USB), etc. A estrutura fsica dos discos rgidos e demais dispositivos ser discutida em detalhes na seo ??; por enquanto, um disco rgido pode ser visto basicamente como um grande vetor de blocos de bytes. Esses blocos de dados, tambm denominados setores, tm tamanho xo geralmente entre 512 e 4.096 bytes e so numerados sequencialmente. As operaes de leitura e escrita de dados nesses dispositivos so feitas bloco a bloco, por essa razo esses dispositivos so chamados dispositivos de blocos (block devices). Em um computador no padro PC, o espao de armazenamento de cada dispositivo dividido em uma pequena rea inicial de congurao e uma ou mais parties, que podem ser vistas como espaos independentes. A rea de congurao denominada MBR - Master Boot Record, e contm uma tabela de parties com informaes sobre o particionamento do dispositivo. Alm disso, contm tambm um pequeno cdigo executvel, usado no processo de inicializao do sistema operacional. No incio de cada partio geralmente h um bloco reservado, utilizado para a descrio do contedo daquela partio e para armazenar o cdigo de lanamento do sistema operacional, se for uma partio inicializvel (bootable partition). Esse bloco reservado denominado bloco de inicializao ou VBR - Volume Boot Record. O restante dos blocos da partio est

c Prof. Carlos Maziero

Diretrios 20

disponvel para o armazenamento de arquivos. A gura 7 ilustra a organizao bsica do espao de armazenamento em um dispositivo de blocos tpico: um disco rgido.
reas de armazenamento de dados partio 1 partio 2 partio 3

Master Boot Record

Volume Boot Records

Figura 7: Organizao em parties de um disco rgido tpico. Cada partio deve ser formatada, ou seja, estruturada para conter um sistema de arquivos, que pode conter arquivos, diretrio, atalhos e outras entradas. Cada dispositivo ou partio devidamente preparado e formatado para receber um sistema de arquivos designado como um volume.

3.1

Diretrios

A quantidade de arquivos em um sistema atual pode ser muito grande, chegando facilmente a milhes deles em um computador desktop tpico, e muito mais em servidores. Embora o sistema operacional possa tratar facilmente essa imensa quantidade de arquivos, essa tarefa no to simples para os usurios: identicar e localizar de forma inequvoca um arquivo especco em meio a milhes de outros arquivos pode ser impraticvel. Para permitir a organizao de arquivos dentro de uma partio, so usados diretrios. Um diretrio, tambm chamado de pasta (folder), representa um continer de informaes, que pode conter arquivos ou mesmo outros diretrios. Da mesma forma que os arquivos, diretrios tm nome e atributos, que so usados na localizao e acesso aos arquivos neles contidos. Cada espao de armazenamento possui ao menos um diretrio principal, denominado diretrio raiz (root directory). Em sistemas de arquivos mais antigos e simples, o diretrio raiz de um volume estava denido em seus blocos de inicializao, normalmente reservados para informaes de gerncia. Todavia, como o nmero de blocos reservados era pequeno e xo, o nmero de entradas no diretrio raiz era limitado. Nos sistemas mais recentes, um registro especco dentro dos blocos de inicializao aponta para a posio do diretrio raiz dentro do sistema de arquivos, permitindo que este tenha um nmero muito maior de entradas. O uso de diretrios permite construir uma estrutura hierrquica (em rvore) de armazenamento dentro de um volume, sobre a qual os arquivos so distribudos. A gura 8 representa uma pequena parte da rvore de diretrios tpica de um sistema Linux, cuja estrutura denida nas normas Filesystem Hierarchy Standard [Russell et al., 2004].

c Prof. Carlos Maziero

Diretrios 21

bin etc home lib proc root tmp usr var

opt sgml skel X11

bin lib include X11 X11 asm linux g++ X11 gcc-lib groff uucp bin doc etc include lib man share at cron lpd mail news smail doc games info locale man zoneinfo

X11R6 bin include lib local man share src tmp

adm cache cron lib local log mail run spool

Figura 8: Estrutura de diretrios tpica de um sistema Linux. Os primeiros sistemas de arquivos implementavam apenas o diretrio raiz, que continha todos os arquivos do volume. Posteriormente, ofereceram sub-diretrios, ou seja, um nvel de diretrios abaixo do diretrio raiz. Os sistemas atuais oferecem uma estrutura muito mais exvel, com um nmero de nveis de diretrios muito mais elevado, ou mesmo ilimitado (como no NTFS e no Ext3). A implementao de diretrios relativamente simples: um diretrio implementado como um arquivo estruturado, cujo contedo uma relao de entradas. Os tipos de entradas normalmente considerados nessa relao so arquivos normais, diretrios, atalhos (vide seo 3.3) e entradas associadas a arquivos especiais, como os discutidos na seo 1.1. Cada entrada contm ao menos o nome do arquivo (ou do diretrio), seu tipo e a localizao fsica do mesmo no volume. Deve car claro que um diretrio no contm sicamente os arquivos e sub-diretrios, ele apenas os relaciona. Duas entradas padronizadas so usualmente denidas em cada diretrio: a entrada . (ponto), que representa o prprio diretrio, e a entrada .. (ponto-ponto), que representa seu diretrio pai (o diretrio imediatamente acima dele na hierarquia de diretrios). No caso do diretrio raiz, ambas as entradas apontam para ele prprio. A gura 9 apresenta uma possibilidade de implementao de parte da estrutura de diretrios apresentada na gura 8. Os tipos das entradas em cada diretrio so: A para arquivos normais e D para diretrios.

c Prof. Carlos Maziero

Caminhos de acesso 22

VBR

/ . .. bin etc home lib usr var

Volume (disco ou partio) D D D D D D D D

bin . .. cp ls mv home . .. daniel ike

D D A A A

0101011 110000110 001101011 101110100 110000010 100011111 010110100

1111010 101010101 011010101 111110100 000100111 010101010 111100000

1100110 110011001 100110011 111110011 111110011 111111111 000000000

D D D D

daniel . .. arq1 arq2

D D A A

0000000 000000000 111100000 111111111 111111111 111000011 000010101 1100110 110011001 100110011 111110011 111110011 111111111 000000000

0101011 110000110 001101011 101110100 110000010 100011111 010110100

0101011 110000110 001101011 101110100 110000010 100011111 010110100

lib . .. X11 lib.a lib.so

D D D A A

X11 . D .. D libX.a A

0101011 110000110 001101011 101110100 110000010 100011111 010110100

Figura 9: Implementao de uma estrutura de diretrios. A relao de entradas em um diretrio, tambm chamada de ndice do diretrio, pode ser implementada como uma lista linear, como no caso do MS-DOS e do Ext2 (Linux) ou como algum tipo de tabela hash ou rvore, o que feito no NTFS e no Ext3, entre outros. A implementao em lista linear mais simples, mas tem baixo desempenho. A implementao em tabela hash ou rvore prov um melhor desempenho quando necessrio percorrer a estrutura de diretrios em busca de arquivos, o que ocorre frequentemente.

3.2

Caminhos de acesso

Em um sistema de arquivos, os arquivos esto dispersos ao longo da hierarquia de diretrios. Para poder abrir e acessar um arquivo, torna-se ento necessrio conhecer sua localizao completa, ao invs de somente seu nome. A posio de um arquivo dentro do sistema de arquivos chamada de caminho de acesso ao arquivo. Normalmente, o caminho de acesso a um arquivo composto pela sequncia de nomes de diretrios que levam at ele, separadas por um caractere especco. Por exemplo, o sistema Windows usa como separador o caractere \, enquanto sistemas UNIX usam o caractere /;

c Prof. Carlos Maziero

Caminhos de acesso 23

outros sistemas podem usar caracteres como : e !. Exemplos de caminhos de acesso a arquivos seriam \Windows\system32\ole32.dll (no Windows) e /usr/bin/bash (em sistemas UNIX). A maioria dos sistemas implementa o conceito de diretrio de trabalho ou diretrio corrente de um processo (working directory). Ao ser criado, cada novo processo recebe um diretrio de trabalho, que ser usado por ele como local default para criar novos arquivos ou abrir arquivos existentes, quando no informar os respectivos caminhos de acesso. Cada processo geralmente herda o diretrio de trabalho de seu pai, mas pode mudar de diretrio atravs de chamadas de sistema (como chdir nos sistemas UNIX). Existem basicamente trs formas de se referenciar arquivos em um sistema de arquivos: Referncia direta: somente o nome do arquivo informado; neste caso, considera-se que o arquivo est (ou ser criado) no diretrio de trabalho do processo. Exemplos:
1 2 3

prova1.doc materiais.pdf uma-bela-foto.jpg

Referncia absoluta: o caminho de acesso ao arquivo indicado a partir do diretrio raiz do sistema de arquivos, e no depende do diretrio de trabalho do processo; uma referncia absoluta a um arquivo sempre inicia com o caractere separador, indicando que o nome do arquivo est referenciado a partir do diretrio raiz do sistema de arquivos. O caminho de acesso mais curto a um arquivo a partir do diretrio raiz denominado caminho cannico do arquivo. Nos exemplos de referncias absolutas a seguir, os dois primeiros so caminhos cannicos, enquanto os dois ltimos no o so:
1 2 3 4

\Windows\system32\drivers\etc\hosts.lm /usr/local/share/fortunes/brasil.dat \Documents and Settings\Carlos Maziero\..\All Users\notas.xls /home/maziero/bin/scripts/../../docs/proj1.pdf

Referncia relativa: o caminho de acesso ao arquivo tem como incio o diretrio de trabalho do processo, e indica sub-diretrios ou diretrios anteriores, atravs de referncias ..; eis alguns exemplos:
1 2 3 4

imagens\satelite\brasil\geral.jpg ..\users\maziero\documentos\prova-2.doc public_html/static/fotografias/rennes.jpg ../../../share/icons/128x128/calculator.svg

Durante a abertura de um arquivo, o sistema operacional deve encontrar a localizao do mesmo no dispositivo de armazenamento, a partir do nome e caminho informados pelo processo. Para isso, necessrio percorrer as estruturas denidas pelo caminho do arquivo at encontrar sua localizao, em um procedimento denominado localizao de

c Prof. Carlos Maziero

Caminhos de acesso 24

arquivo (le lookup). Por exemplo, para abrir o arquivo /usr/lib/X11/libX.a da gura 9 seria necessrio executar os seguintes passos3 : 1. Acessar o disco para ler o VBR (Volume Boot Record) do volume; 2. Nos dados lidos, descobrir onde se encontra o diretrio raiz (/) daquele sistema de arquivos; 3. Acessar o disco para ler o diretrio raiz; 4. Nos dados lidos, descobrir onde se encontra o diretrio usr; 5. Acessar o disco para ler o diretrio usr; 6. Nos dados lidos, descobrir onde se encontra o diretrio lib; 7. Acessar o disco para ler o diretrio lib; 8. Nos dados lidos, descobrir onde se encontra o diretrio X11; 9. Acessar o disco para ler o diretrio X11; 10. Nos dados lidos, descobrir onde se encontra o arquivo libX11.a; 11. Acessar o disco para ler o bloco de controle do arquivo libX11.a, que contm seus atributos; 12. Criar as estruturas em memria que representam o arquivo aberto; 13. Retornar uma referncia ao arquivo para o processo solicitante. Pode-se perceber que a localizao de arquivo um procedimento trabalhoso. Neste exemplo, foram necessrias 5 leituras no disco (passos 1, 3, 5, 7 e 9) apenas para localizar a posio do bloco de controle do arquivo desejado no disco. Assim, o tempo necessrio para localizar um arquivo pode ser muito elevado, pois discos rgidos so dispositivos lentos. Para evitar esse custo e melhorar o desempenho do mecanismo de localizao de arquivos, mantido em memria um cache de entradas de diretrio localizadas recentemente, gerenciado de acordo com uma poltica LRU (Least Recently Used). Cada entrada desse cache contm um nome de arquivo ou diretrio e sua localizao no dispositivo fsico. Esse cache geralmente organizado na forma de uma tabela hash, o que permite localizar rapidamente os arquivos ou diretrios recentemente utilizados.
Para simplicar, foram omitidas as vericaes de existncia de entradas, de permisses de acesso e os tratamentos de erro.
3

c Prof. Carlos Maziero

Atalhos 25

3.3

Atalhos

Em algumas ocasies, pode ser necessrio ter um mesmo arquivo ou diretrio replicado em vrias posies dentro do sistema de arquivos. Isso ocorre frequentemente com arquivos de congurao de programas e arquivos de bibliotecas, por exemplo. Nestes casos, seria mais econmico armazenar apenas uma instncia dos dados do arquivo no sistema de arquivos e criar referncias indiretas (ponteiros) para essa instncia, para representar as demais cpias do arquivo. O mesmo raciocnio pode ser aplicado a diretrios duplicados. Essas referncias indiretas a arquivos ou diretrios so denominadas atalhos (links). Existem basicamente duas abordagens para a construo de atalhos: Atalhos simblicos (soft links): cada cpia do arquivo original na verdade um pequeno arquivo de texto contendo uma string com o caminho at o arquivo original (pode ser usado um caminho simples, absoluto ou relativo posio do atalho). Como o caminho ao arquivo original indicado de forma simblica, este pode estar localizado em outro dispositivo fsico (outro disco ou uma unidade de rede). O arquivo original e seus atalhos simblicos so totalmente independentes: caso o arquivo original seja movido, renomeado ou removido, os atalhos simblicos apontaro para um arquivo inexistente; neste caso, diz-se que aqueles atalhos esto quebrados (broken links). Atalhos fsicos (hard links): vrias referncias do arquivo no sistema de arquivos apontam para a mesma localizao do dispositivo fsico onde o contedo do arquivo est de fato armazenado. Normalmente mantido um contador de referncias a esse contedo, indicando quantos atalhos fsicos apontam para o mesmo: somente quando o nmero de referncias ao arquivo for zero, aquele contedo poder ser removido do dispositivo. Como so usadas referncias posio do arquivo no dispositivo, atalhos fsicos s podem ser feitos para arquivos dentro do mesmo sistema de arquivos (o mesmo volume). A gura 10 traz exemplos de implementao de atalhos simblicos e fsicos a arquivos em um sistema de arquivos UNIX. As entradas de diretrios indicadas como L correspondem a atalhos simblicos (de links). Nessa gura, pode-se constatar que as entradas /bin/ls e /usr/bin/dir so atalhos fsicos para o mesmo contedo no disco, enquanto a entrada /bin/shell um atalho simblico para o arquivo /usr/bin/sh e /lib um atalho simblico para o diretrio /usr/lib. Sistemas UNIX suportam atalhos fsicos e simblicos, com algumas limitaes: atalhos fsicos geralmente s podem ser feitos para arquivos dentro do mesmo sistema de arquivos (mesmo volume) e no so permitidos atalhos fsicos para diretrios4 . Em ambientes Windows, o sistema de arquivos NTFS suporta ambos os tipos de atalhos (embora atalhos simblicos s tenham sido introduzidos no Windows Vista), com limitaes similares.
4 Atalhos fsicos para diretrios geralmente so proibidos porque permitiriam diretrios recursivos, tornando muito complexa a implementao de rotinas de vericao e gerncia do sistema de arquivos.

c Prof. Carlos Maziero

Montagem de volumes 26

VBR

/ . .. bin etc home lib usr

D D D D D L D

bin . .. cp ls rm shell

D D A A A L

0101011 110000110 001101011 101110100 110000010 100011111 010110100

link to: /usr/bin/sh

0101011 110000110 001101011 101110100 110000010 100011111 010110100

link to: /usr/lib

usr . .. bin lib

D D D D

bin . .. copy cut dir sh lib . .. X11 lib.a lib.so

D D L A A A

link to: /bin/cp

Volume (disco ou partio)

D D D A A

0101011 110000110 001101011 101110100 110000010 100011111 010110100

Figura 10: Atalhos simblicos e fsicos a arquivos em UNIX.

3.4

Montagem de volumes

Para que o sistema operacional possa acessar o sistema de arquivos presente em um determinado volume, ele deve ler os dados presentes em seu bloco de inicializao, que descrevem o tipo de sistema de arquivos presente, e criar as estruturas em memria que representam esse volume dentro do ncleo. Alm disso, ele deve denir um identicador para o volume, de forma que os processos possam acessar seus arquivos. Esse procedimento denominado montagem do volume, e seu nome vem do tempo em que era necessrio montar sicamente os discos rgidos ou tas magnticas nos leitores, antes de poder acessar seus dados. O procedimento oposto, a desmontagem, consiste em fechar todos os arquivos abertos no volume e remover as estruturas de memria usadas para gerenci-lo. A montagem um procedimento frequente no caso de mdias mveis, como CDROMs, DVD-ROMs e pendrives USB. Neste caso, a desmontagem do volume inclui tambm ejetar a mdia (CD, DVD) ou avisar o usurio que ela pode ser removida (discos USB). Ao montar um volume, deve-se fornecer aos processos e usurios uma referncia para seu acesso, denominada ponto de montagem (mounting point). Sistemas UNIX normalmente denem os pontos de montagem de volumes como posies dentro da rvore principal do sistema de arquivos. Dessa forma, h um volume principal, montado durante a inicializao do sistema operacional, onde normalmente reside o prprio

c Prof. Carlos Maziero

Sistemas de arquivos 27

sistema operacional e que dene a estrutura bsica da rvore de diretrios. Os volumes secundrios so montados como sub-diretrios na rvore do volume principal, atravs do comando mount. A gura 11 apresenta um exemplo de montagem de volumes em plataformas UNIX. Nessa gura, o disco rgido 1 contm o sistema operacional e foi montado como raiz da rvore de diretrios durante a inicializao do sistema. O disco rgido 2 contm os diretrios de usurios e seu ponto de montagem o diretrio /home. J o diretrio /media/cdrom o ponto de montagem de uma mdia removvel (CD-ROM), com sua rvore de diretrios prpria.
bin etc dout espec grad mest home / lib backup media usr
Pendrive USB Disco rgido 2

alcides maziero santin apagar fotos livro bin html pdf txt

prof

cdrom

docs extras install

Disco rgido 1

var

CD-ROM

Figura 11: Montagem de volumes em UNIX. Em sistemas de arquivos de outras plataformas, como DOS e Windows, comum denir cada volume montado como um disco lgico distinto, chamado simplesmente de disco ou drive e identicado por uma letra (A:, C:, D:, etc.). Todavia, o sistema de arquivos NTFS do Windows tambm permite a montagem de volumes como sub-diretrios, da mesma forma que o UNIX.

Sistemas de arquivos

Vrios problemas importantes devem ser resolvidos na construo de um sistema de arquivos, que vo do acesso de baixo nvel aos dispositivos fsicos de armazenamento implementao da interface de acesso a arquivos para os programadores. Na implementao de um sistema de arquivos, considera-se que cada arquivo possui dados e meta-dados. Os dados de um arquivo so o seu contedo em si (uma msica, uma fotograa, um documento ou uma planilha); por outro lado, os meta-dados do arquivo so seus atributos (nome, datas, permisses de acesso, etc) e todas as informaes de controle necessrias para localizar e manter seu contedo no disco.

c Prof. Carlos Maziero

Arquitetura geral 28

Nesta seo sero discutidos os principais elementos que compem a gerncia de arquivos em um sistema operacional tpico.

4.1

Arquitetura geral

Os principais elementos que constituem a gerncia de arquivos esto organizados em camadas, conforme apresentado na gura 12. No nvel mais baixo dessa arquitetura esto os dispositivos de armazenamento, como discos rgidos ou bancos de memria ash, responsveis pelo armazenamento dos dados e meta-dados dos arquivos. Esses dispositivos so acessados atravs de controladores, que so circuitos eletrnicos dedicados ao controle e interface dos dispositivos. A interface entre controladores e dispositivos de armazenamento segue padres como SATA, ATAPI, SCSI, USB e outros.
processo

biblioteca de E/S espao de usurio ncleo sistema de arquivos virtual chamadas de sistema

alocao de arquivos

alocao de arquivos

gerncia de blocos

driver de dispositivo software hardware controlador

driver de dispositivo

controlador

dispositivo

dispositivo

Figura 12: Camadas da implementao da gerncia de arquivos.

c Prof. Carlos Maziero

Blocos fsicos e lgicos 29

Os controladores de dispositivos so congurados e acessados pelo ncleo do sistema operacional atravs de drivers de dispositivos, que so componentes de software capazes de interagir com os controladores. Os drivers usam portas de entrada/sada, interrupes e canais de acesso direto memria (DMA) para interagir com os controladores e realizar as operaes de controle e de entrada/sada de dados. Como cada controlador dene sua prpria interface, tambm possui um driver especco. Os drivers ocultam essas interfaces e fornecem s camadas superiores do ncleo uma interface padronizada para acesso aos dispositivos de armazenamento. Desta forma, os detalhes tecnolgicos e particularidades de cada dispositivo so isolados, tornando o restante do sistema operacional independente da tecnologia subjacente. Acima dos drivers est a camada de gerncia de blocos, que gerencia o uxo de blocos de dados entre a memria e os dispositivos de armazenamento. importante lembrar que os discos so dispositivos orientados a blocos, ou seja, as operaes de leitura e escrita de dados so sempre feitas com blocos de dados, e nunca com bytes individuais. As funes mais importantes desta camada so efetuar o mapeamento de blocos lgicos nos blocos fsicos do dispositivo, oferecer s camadas superiores a abstrao de cada dispositivo fsico como sendo um imenso vetor de blocos lgicos, independente de sua congurao real, e tambm efetuar o caching/buering de blocos (seo 4.3). A seguir est a camada de alocao de arquivos, que tem como funo principal alocar os arquivos sobre os blocos lgicos oferecidos pela gerncia de blocos. Cada arquivo visto como uma sequncia de blocos lgicos que deve ser armazenada nos blocos dos dispositivos de forma eciente, robusta e exvel. As principais tcnicas de alocao de arquivos so discutidas na seo 4.4. Acima da alocao de arquivos est o sistema de arquivos virtual (VFS - Virtual File System), que prov uma interface de acesso a arquivos independente dos dispositivos fsicos e das estratgias de alocao de arquivos empregadas pelas camadas inferiores. O sistema de arquivos virtual normalmente gerencia as permisses associadas aos arquivos e as travas de acesso compartilhado, alm de construir as abstraes de diretrios e atalhos. Outra responsabilidade importante desta camada manter informaes sobre cada arquivo aberto pelos processos, como a posio da ltima operao no arquivo, o modo de abertura usado e o nmero de processos que esto usando o arquivo. A interface de acesso ao sistema de arquivos virtual oferecida aos processos atravs de um conjunto de chamadas de sistema. Finalmente, as bibliotecas de entrada/sada usam as chamadas de sistema oferecidas pelo sistema operacional para construir funes padronizadas de acesso a arquivos para cada linguagem de programao, como aquelas apresentadas na seo 2.5 para a linguagem C ANSI.

4.2

Blocos fsicos e lgicos

Um dos aspectos mais importantes dos sistemas de arquivos a forma como o contedo dos arquivos disposto dentro do disco rgido ou outro dispositivo de armazenamento secundrio. Conforme visto na seo 3, um disco rgido pode ser visto como um conjunto de blocos de tamanho xo (geralmente de 512 bytes). Os blocos do disco rgido so normalmente denominados blocos fsicos. Como esses blocos so

c Prof. Carlos Maziero

Caching de entrada/sada 30

pequenos, o nmero de blocos fsicos em um disco rgido recente pode ser imenso: um disco rgido de 250 GBytes contm mais de 500 milhes de blocos fsicos! Para simplicar a gerncia dessa quantidade de blocos fsicos e melhorar o desempenho das operaes de leitura/escrita, os sistemas operacionais costumam trabalhar com blocos lgicos ou clusters, que so grupos de 2n blocos fsicos consecutivos. Blocos lgicos com 4K, 8K, 16K e 32K bytes so frequentemente usados. A maior parte das operaes e estruturas de dados denidas nos discos pelos sistemas operacionais so baseadas em blocos lgicos, que tambm denem a unidade mnima de alocao de arquivos e diretrios: cada arquivo ou diretrio ocupa um ou mais blocos lgicos para seu armazenamento. O nmero de blocos fsicos em cada bloco lgico de uma partio denido pelo sistema operacional ao formatar a partio, em funo de vrios parmetros, como o tamanho da partio, o sistema de arquivos usado e o tamanho das pginas de memria RAM. Blocos lgicos muito pequenos implicam em ter mais blocos a gerenciar e menos bytes transferidos em cada operao de leitura/escrita, o que tem impacto negativo sobre o desempenho do sistema. Por outro lado, blocos lgicos muito grandes podem levar fragmentao interna: um arquivo com 200 bytes armazenado em um sistema de arquivos com blocos lgicos de 32.768 bytes (32K) ocupar um bloco lgico, do qual 32.568 bytes sero desperdiados, pois caro alocados ao arquivo sem serem usados. A fragmentao interna diminui o espao til do disco rgido, por isso deve ser evitada. Uma forma de evit-la escolher um tamanho de bloco lgico adequado ao tamanho mdio dos arquivos a armazenar no disco, ao format-lo. Alm disso, alguns sistemas de arquivos (como o UFS do Solaris e o ReiserFS do Linux) permitem a alocao de partes de blocos lgicos, atravs de tcnicas denominadas fragmentos de blocos ou sub-alocao de blocos [Vahalia, 1996].

4.3

Caching de entrada/sada

A funcionalidade de caching muito importante para o desempenho das operaes de leitura e escrita no sistema de arquivos. possvel fazer caching de leitura e de escrita. No caching de leitura (read caching), blocos de dados so mantidos em memria de acordo com uma poltica LRU (Least Recently Used), para acelerar leituras posteriores dos mesmos. No caching de escrita (write caching, tambm chamado buering), dados a escrever no disco so mantidos em memria para leituras posteriores, ou para concentrar vrias escritas pequenas em poucas escritas maiores (e mais ecientes). Quatro estratgias de caching so usuais: Read-behind: esta a poltica mais simples, na qual somente os dados j lidos em requisies anteriores so mantidos em cache; outros acessos aos mesmos dados sero beneciados pelo cache; Read-ahead: nesta poltica, ao atender uma requisio de leitura, so trazidos para o cache mais dados que os solicitados pela requisio; alm disso, leituras de dados ainda no solicitados podem ser agendadas em momentos de ociosidade dos discos. Dessa forma, futuras requisies podem ser beneciadas pela leitura antecipada dos dados. Essa poltica pode melhorar muito o desempenho de acesso sequencial a arquivos;

c Prof. Carlos Maziero

Alocao fsica de arquivos 31

Write-through: nesta poltica, ao atender uma requisio de escrita, uma cpia dos dados a escrever no disco mantida em cache, para beneciar possveis leituras futuras desses dados; Write-back: nesta poltica, alm de copiar os dados em cache, sua escrita efetiva no disco adiada; esta estratgia melhora o desempenho de escrita de duas formas: por liberar mais cedo os processos que solicitam escritas (eles no precisam esperar pela escrita real no disco) e por concentrar as operaes de escrita, gerando menos acessos a disco. Todavia, pode ocasionar perda de dados, caso ocorram erros de hardware ou falta de energia antes que os dados sejam efetivamente escritos no disco.
read-behind
t1 t2

read-ahead
t2

cache

cache

cache
t1

cache

dispositivo

dispositivo

write-through
t1 t2

write-back
t1

cache

cache

cache

cache
t2

dispositivo

dispositivo

Figura 13: Estratgias de caching de blocos (t1 e t2 indicam dois instantes de tempo).

4.4

Alocao fsica de arquivos

Um dispositivo de armazenamento visto pelas camadas superiores como um grande vetor de blocos lgicos de tamanho xo. O problema da alocao de arquivos consiste em dispor (alocar) o contedo e os meta-dados dos arquivos dentro desses blocos lgicos. Como os blocos lgicos so pequenos, cada arquivo poder precisar de muitos blocos lgicos para ser armazenado no disco (gura 14). Os dados e meta-dados de um arquivo devem estar dispostos nesses blocos de forma a permitir um acesso

c Prof. Carlos Maziero

Alocao fsica de arquivos 32

rpido e convel. Como um arquivo pode ocupar milhares ou mesmo milhes de blocos, a forma de alocao dos arquivos nos blocos do disco tem um impacto importante sobre o desempenho e a robustez do sistema de arquivos.
foto1.jpg
0 1 2 3 4 0

relat.pdf
1 2 3 4 5 6

instruc.txt
0 1

sinfonia.mp3
0 1 2

blocos do dispositivo

?
3 4

7 ...

Figura 14: O problema da alocao de arquivos. A alocao de um arquivo no disco tem como ponto de partida a denio de um bloco de controle de arquivo (FCB - File Control Block), que nada mais que uma estrutura contendo os meta-dados do arquivo e a localizao de seu contedo no disco. Em alguns sistemas de arquivos mais simples, como o sistema FAT (File Alocation Table) usado em plataformas MS-DOS, o FCB bastante pequeno e cabe na entrada correspondente ao arquivo, na tabela de diretrio onde ele se encontra denido. Em sistemas de arquivos mais complexos, os blocos de controle de arquivos so denidos em estruturas separadas, como a Master File Table do sistema NTFS e os i-nodes dos sistemas UNIX. H trs estratgias usuais de alocao de arquivos nos blocos lgicos do disco, que sero apresentadas a seguir: as alocaes contgua, encadeada e indexada. Como diretrios so usualmente implementados na forma de arquivos, as estratgias de alocao discutidas aqui so vlidas tambm para a alocao de diretrios. Essas estratgias sero descritas e analisadas luz de trs critrios: a rapidez oferecida por cada estratgia no acesso aos dados do arquivo, tanto para acessos sequenciais quanto para acessos diretos; a robustez de cada estratgia frente a erros, como blocos de disco defeituosos (bad blocks) e dados corrompidos; e a exibilidade oferecida por cada estratgia para a criao, modicao e excluso de arquivos e diretrios. 4.4.1 Alocao contgua

Na alocao contgua, os dados do arquivo so dispostos de forma ordenada sobre um conjunto de blocos consecutivos no disco, sem buracos entre os blocos. Assim, a localizao do contedo do arquivo no disco denida pelo endereo de seu primeiro bloco. A gura 15 apresenta um exemplo dessa estratgia de alocao (para simplicar o

c Prof. Carlos Maziero

Alocao fsica de arquivos 33

exemplo, considera-se que a tabela de diretrios contm os meta-dados de cada arquivo, como nome, tamanho em bytes e nmero do bloco inicial).
Tabela de diretrio nome foto1.jpg relat.pdf instruc.txt sinfonia.mp3 bytes blocos incio 10417 28211 6214 19116 3 7 2 5 7 13 20 24
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

blocos lgicos com 4096 bytes

bloco em uso bloco livre

Figura 15: Estratgia de alocao contgua. Como os blocos de cada arquivo se encontram em sequncia no disco, o acesso sequencial aos dados do arquivo rpido, por exigir pouca movimentao da cabea de leitura do disco. O acesso direto a posies especcas do arquivo tambm rpido, pois a posio de cada byte do arquivo pode ser facilmente calculada a partir da posio do bloco inicial, conforme indica o algoritmo 1. De acordo com esse algoritmo, o byte de nmero 14.372 do arquivo relat.pdf da gura 15 estar na posio 2.084 do bloco 16 do disco rgido. Esta estratgia apresenta uma boa robustez a falhas de disco: caso um bloco do disco apresente defeito e no permita a leitura de seus dados, apenas o contedo daquele bloco perdido: o contedo do arquivo nos blocos anteriores e posteriores ao bloco defeituoso ainda podero ser acessados sem diculdades. Por outro lado, o ponto fraco desta estratgia sua baixa exibilidade, pois o tamanho nal de cada arquivo precisa ser conhecido no momento de sua criao. Alm disso, esta estratgia est sujeita fragmentao externa, de forma similar tcnica de alocao contgua estudada

c Prof. Carlos Maziero

Alocao fsica de arquivos 34

Algoritmo 1 Localizar a posio do i-simo byte do arquivo no disco i: nmero do byte a localizar B: tamanho dos blocos lgicos, em bytes b0 : nmero do bloco do disco onde o arquivo inicia bi : nmero do bloco do disco onde se encontra o byte i oi : posio do byte i dentro do bloco bi (oset) : diviso inteira mod: mdulo (resto da diviso inteira) bi = b0 + i B oi = i mod B return (bi , oi ) nos mecanismos de alocao de memria (vide seo ??): medida em que arquivos so criados e destrudos, as reas livres do disco vo sendo fracionadas em pequenas reas isoladas (os fragmentos) que diminuem a capacidade de alocao de arquivos maiores. Por exemplo, na situao da gura 15 h 13 blocos livres no disco, mas somente podem ser criados arquivos com at 7 blocos de tamanho. As tcnicas de alocao rst/best/worst-t utilizadas em gerncia de memria tambm podem ser aplicadas para atenuar este problema. Contudo, a desfragmentao de um disco problemtica, pois pode ser uma operao muito lenta e os arquivos no devem ser usados durante sua realizao. A baixa exibilidade desta estratgia e a possibilidade de fragmentao externa limitam muito seu uso em sistemas operacionais de propsito geral, nos quais os arquivos so constantemente criados, modicados e destrudos. Todavia, ela pode encontrar uso em situaes especcas, nas quais os arquivos no sejam modicados constantemente e seja necessrio rapidez nos acessos sequenciais e diretos aos dados. Um exemplo dessa situao so sistemas dedicados para reproduo de dados multimdia, como udio e vdeo. 4.4.2 Alocao encadeada

Esta forma de alocao foi proposta para contornar a pouca exibilidade da alocao contgua e eliminar a fragmentao externa. Nela, cada bloco do arquivo no disco contm dados do arquivo e tambm um ponteiro para o prximo bloco, ou seja, um campo indicando o nmero do prximo bloco do arquivo no disco. Desta forma construda uma lista encadeada de blocos para cada arquivo, no sendo mais necessrio manter os blocos do arquivo lado a lado no disco. Esta estratgia elimina a fragmentao externa, pois todos os blocos livres do disco so utilizveis sem restries, e permite que arquivos sejam criados sem a necessidade de denir seu tamanho nal. A gura 16 ilustra um exemplo dessa abordagem. Nesta abordagem, o acesso sequencial aos dados do arquivo simples e rpido, pois cada bloco contm o ponteiro do prximo bloco do arquivo. Todavia, caso os blocos estejam muito espalhados no disco, a cabea de leitura ter de fazer muitos deslocamentos, diminuindo o desempenho de acesso ao disco. J o acesso direto a posies especcas do arquivo ca muito prejudicado com esta abordagem: caso se

c Prof. Carlos Maziero

Alocao fsica de arquivos 35

Tabela de diretrio nome foto1.jpg relat.pdf instruc.txt sinfonia.mp3 bytes blocos incio 10417 28211 6214 19116 3 7 2 5 7 13 20 24

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

blocos lgicos com 4096 bytes

bloco em uso bloco livre

Figura 16: Estratgia de alocao encadeada. deseje acessar um bloco no meio do arquivo, todos os blocos anteriores tero de ser lidos em sequncia, para poder seguir os ponteiros que levam ao bloco desejado. O algoritmo 2 mostra claramente esse problema, indicado atravs do lao while. Essa dependncia dos blocos anteriores tambm acarreta problemas de robustez: caso um bloco do arquivo seja corrompido ou se torne defeituoso, todos os blocos posteriores a este tambm caro inacessveis. Por outro lado, esta abordagem muito exvel, pois no h necessidade de se denir o tamanho mximo do arquivo durante sua criao, e arquivos podem ser expandidos ou reduzidos sem maiores diculdades. Alm disso, qualquer bloco livre do disco pode ser usados por qualquer arquivo, eliminando a fragmentao externa. Os principais problemas da alocao encadeada so o baixo desempenho nos acessos diretos e a relativa fragilidade em relao a erros nos blocos do disco. Ambos os problemas provm do fato de que os ponteiros dos blocos so armazenados nos prprios blocos, junto dos dados do arquivo. Para resolver esse problema, os ponteiros podem ser retirados dos blocos de dados e armazenados em uma tabela separada. Essa tabela denominada Tabela de Alocao de Arquivos (FAT - File Allocation Table), sendo a base dos sistemas de arquivos FAT12, FAT16 e FAT32 usados nos sistemas operacionais MSDOS, Windows e em muitos dispositivos de armazenamento portteis, como pen-drives, reprodutores MP3 e cmeras fotogrcas digitais.

c Prof. Carlos Maziero

Alocao fsica de arquivos 36

Algoritmo 2 Localizar a posio do i-simo byte do arquivo no disco i: nmero do byte a localizar B: tamanho dos blocos lgicos, em bytes P: tamanho dos ponteiros de blocos, em bytes b0 : nmero do primeiro bloco do arquivo no disco bi : nmero do bloco do disco onde se encontra o byte i oi : posio do byte i dentro do bloco bi (oset) // dene bloco inicial do percurso baux = b0 // calcula nmero de blocos a percorrer b = i (B P) while b > 0 do block = read_block (baux ) baux = ponteiro extrado de block b=b1 end while bi = baux oi = i mod (B P) return (bi , oi ) Na abordagem da FAT, os ponteiros dos blocos de cada arquivo so mantidos em uma tabela nica, armazenada em blocos reservados no incio da partio. Cada entrada dessa tabela corresponde a um bloco lgico do disco e contm um ponteiro indicando o prximo bloco do mesmo arquivo. As entradas da tabela tambm podem conter valores especiais para indicar o ltimo bloco de cada arquivo, blocos livres, blocos defeituosos e blocos reservados. Uma cpia dessa tabela mantida em cache na memria durante o uso do sistema, para melhorar o desempenho na localizao dos blocos dos arquivos. A gura 17 apresenta o contedo da tabela de alocao de arquivos para o exemplo apresentado anteriormente na gura 16. 4.4.3 Alocao indexada

Nesta abordagem, a estrutura em lista encadeada da estratgia anterior substituda por um vetor contendo um ndice de blocos do arquivo. Cada entrada desse ndice corresponde a um bloco do arquivo e aponta para a posio desse bloco no disco. O ndice de blocos de cada arquivo mantido no disco em uma estrutura denominada n de ndice (index node) ou simplesmente n-i (i-node). O i-node de cada arquivo contm, alm de seu ndice de blocos, os principais atributos do mesmo, como tamanho, permisses, datas de acesso, etc. Os i-nodes de todos os arquivos so agrupados em uma tabela de i-nodes, mantida em uma rea reservada do disco, separada dos blocos de dados dos arquivos. A gura 18 apresenta um exemplo de alocao indexada. Como os i-nodes tambm tm tamanho xo, o nmero de entradas no ndice de blocos de um arquivo limitado. Por isso, esta estratgia de alocao impe um tamanho mximo para os arquivos. Por exemplo, se o sistema usar blocos de 4 Kbytes e o ndice de blocos suportar 64 entradas, s podero ser armazenados arquivos com at 256 Kbytes.

c Prof. Carlos Maziero

Alocao fsica de arquivos 37


Tabela de alocao de arquivos 3 7 2 5 7 13 20 24

Tabela de diretrio nome foto1.jpg relat.pdf instruc.txt sinfonia.mp3 bytes blocos incio 10417 28211 6214 19116

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

R R L F 02 F F 04 L F 12 F L 16 F F 17 19 F 22 21 L 10 F 26 F 27 28 8 F

blocos lgicos com 4096 bytes

bloco em uso bloco livre

Entradas da tabela de alocao

17 : nmero do prximo bloco L : ltimo bloco do arquivo (Last) F : bloco livre (Free) R : bloco reservado (Reserved) B : bloco defeituoso (Bad)

Figura 17: Uma tabela de alocao de arquivos. Alm disso, a tabela de i-nodes tambm tem um tamanho xo, determinado durante a formatao do sistema de arquivos, o que limita o nmero mximo de arquivos ou diretrios que podem ser criados na partio. Para aumentar o tamanho mximo dos arquivos armazenados, algumas das entradas do ndice de blocos podem ser transformadas em ponteiros indiretos. Essas entradas apontam para blocos do disco que contm outros ponteiros, criando assim uma estrutura em rvore. Considerando um sistema com blocos lgicos de 4K bytes e ponteiros de 32 bits (4 bytes), cada bloco lgico pode conter 1024 ponteiros, o que aumenta muito a capacidade do ndice de blocos. Alm de ponteiros indiretos, podem ser usados ponteiros dupla e triplamente indiretos. Por exemplo, os sistemas de arquivos Ext2/Ext3 do Linux (apresentado na gura 19) usam i-nodes com 12 ponteiros diretos (que apontam para blocos de dados), um ponteiro indireto, um ponteiro duplamente indireto e um ponteiro triplamente indireto. Considerando blocos lgicos de 4K bytes e ponteiros de 4 bytes, cada bloco de ponteiros contm 1024 ponteiros. Dessa forma, o clculo do tamanho mximo de um arquivo nesse sistema simples:

c Prof. Carlos Maziero

Alocao fsica de arquivos 38

Tabela de diretrio nome foto1.jpg relat.pdf instruc.txt sinfonia.mp3 i-node 4 5 10 31


10417 ...

Tabela de i-nodes

blocos lgicos com 4096 bytes


meta-dados 13 16 17 19 ponteiros de dados 22 10 12 null null null

i-node 5

bloco em uso bloco livre

Figura 18: Estratgia de alocao indexada simples.

max = + + + = max

4096 12 4096 1024 4096 1024 1024 4096 1024 1024 1024 4.402.345.721.856 bytes 4T bytes

(ponteiros diretos) (ponteiro indireto) (ponteiro indireto duplo) (ponteiro indireto triplo)

c Prof. Carlos Maziero


i-node
meta-dados do arquivo 0 1 2 12 ponteiros diretos 3

Alocao fsica de arquivos 39

12 13 1035 1036 1037 10 11 2059 blocos de dados

ponteiro 1-indireto ponteiro 2-indireto ponteiro 3-indireto

blocos com 1024 ponteiros de 4 bytes

Figura 19: Estratgia de alocao indexada multi-nvel. Apesar dessa estrutura aparentemente complexa, a localizao e acesso de um bloco do arquivo no disco permanece relativamente simples, pois a estrutura homognea de ponteiros permite calcular a localizao dos blocos com exatido. A localizao do bloco lgico de disco correspondente ao i-simo bloco lgico de um arquivo segue o algoritmo 3. Em relao ao desempenho, pode-se armar que esta estratgia bastante rpida, tanto para acessos sequenciais quanto para acessos diretos a blocos, devido aos ndices de ponteiros dos blocos presentes nos i-nodes. Contudo, no caso de blocos no nal de arquivos muito grandes, podem ser necessrios trs ou quatro acessos a disco adicionais para localizar o bloco desejado, devido aos ponteiros indiretos. Defeitos em blocos de dados no afetam os demais blocos de dados, o que torna esta estratgia robusta. Todavia, defeitos nos meta-dados (o i-node ou os blocos de ponteiros) podem danicar grandes

c Prof. Carlos Maziero

Alocao fsica de arquivos 40

Algoritmo 3 Localizar a posio do i-simo byte do arquivo no disco 1. B: tamanho dos blocos lgicos, em bytes 2. bi : nmero do bloco do disco onde se encontra o byte i 3. oi : posio do byte i dentro do bloco bi (oset) 4. ptr[0...14]: vetor de ponteiros do i-node 5. block[0...1023]: bloco de ponteiros para outros blocos
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. 33. 34. 35. 36. 37. 38. 39. 40. 41.

oi = i mod B baux = i B if baux < 12 then // ponteiros diretos // o endereo do bloco bi o prprio valor do ponteiro bi = ptr[baux ] else baux = baux 12 if baux < 1024 then // ponteiro indireto simples // ler bloco de ponteiros de nvel 1 block1 = read_block (ptr[12]) // encontrar o endereo do bloco bi bi = block1 [baux ] else baux = baux 1024 if baux < 1024 1024 then // ponteiro indireto duplo // ler bloco de ponteiros de nvel 1 block1 = read_block (ptr[13]) // ler bloco de ponteiros de nvel 2 block2 = read_block (block1 [baux 1024]) // encontrar o endereo do bloco bi bi = block2 [baux mod 1024] else // ponteiro indireto triplo baux = baux (1024 1024) // ler bloco de ponteiros de nvel 1 block1 = read_block (ptr[14]) // ler bloco de ponteiros de nvel 2 block2 = read_block (block1 [baux (1024 1024)]) // ler bloco de ponteiros de nvel 3 block3 = read_block (block2 [(baux 1024) mod 1024]) // encontrar o endereo do bloco bi bi = block3 [baux mod 1024] end if end if end if return (bi , oi )

c Prof. Carlos Maziero

Alocao fsica de arquivos 41

extenses do arquivo; por isso, muitos sistemas que usam esta estratgia implementam tcnicas de redundncia de i-nodes e meta-dados para melhorar a robustez. Em relao exibilidade, pode-se armar que esta forma de alocao to exvel quanto a alocao encadeada, no apresentando fragmentao externa e permitindo o uso de todas as reas do disco para armazenar dados. Todavia, o tamanho mximo dos arquivos criados limitado, bem como o nmero mximo de arquivos na partio. Uma caracterstica interessante da alocao indexada a possibilidade de criar arquivos esparsos. Um arquivo esparso contm reas mapeadas no disco (contendo dados) e reas no-mapeadas (sem dados). Somente as reas mapeadas esto sicamente alocadas no disco rgido, pois os ponteiros correspondentes a essas reas no i-node apontam para blocos do disco contendo dados do arquivo. Os ponteiros relativos s reas no-mapeadas tm valor nulo, servindo apenas para indicar que aquela rea do arquivo ainda no est mapeada no disco (conforme indicado na gura 20). Caso um processo leia uma rea no-mapeada, receber somente zeros. As reas no-mapeadas sero alocadas em disco somente quando algum processo escrever nelas. Arquivos esparsos so muito usados por gerenciadores de bancos de dados e outras aplicaes que precisem manter arquivos com ndices ou tabelas hash que possam conter grandes intervalos sem uso.
meta-dados viso lgica do arquivo

i-node

disco

blocos de disco efetivamente alocados

Figura 20: Alocao de um arquivo esparso.

4.4.4

Anlise comparativa

A tabela 3 traz um comparativo entre as principais formas de alocao estudadas aqui, sob a tica de suas caractersticas de rapidez, robustez e exibilidade de uso. 4.4.5 Gerncia de espao livre

Alm de manter informaes sobre que blocos so usados por cada arquivo no disco, a camada de alocao de arquivos deve manter um registro atualizado de quais blocos esto livres, ou seja no esto ocupados por nenhum arquivo ou meta-dado. Duas tcnicas de gerncia de blocos livres so frequentemente utilizadas: o mapa de bits e a lista de blocos livres [Silberschatz et al., 2001, Tanenbaum, 2003].

c Prof. Carlos Maziero

Alocao fsica de arquivos 42

Estratgia Contgua

Rapidez Robustez Alta, pois acessos sequen- Alta, pois blocos defeituocial e direto rpidos, pois sos no impedem o acesso os blocos do arquivo esto aos demais blocos do arprximos no disco. quivo.

Encadeada

FAT

Indexada

Acesso sequencial rpido, se os blocos estiverem prximos; o acesso direto lento, pois necessrio ler todos os blocos a partir do incio do arquivo at encontrar o bloco desejado. Alta, pois acessos sequen- Mais robusta que a alocao Alta, pois arquivos podem cial e direto so rpidos, se encadeada, desde que no ser criados em qualquer loos blocos do arquivo estive- ocorram erros na tabela de cal do disco, sem risco de rem prximos no disco. alocao. fragmentao externa. Alta, pois os acessos sequen- Alta, desde que no ocor- Alta, pois arquivos podem cial e direto so rpidos, se ram erros no i-node nem nos ser criados em qualquer loos blocos do arquivo estive- blocos de ponteiros. cal do disco, sem risco de rem prximos no disco. fragmentao externa. No entanto, o tamanho mximo dos arquivos limitado pelo nmero de ponteiros denidos nos i-nodes.

Flexibilidade Baixa, pois o tamanho mximo dos arquivos deve ser conhecido a priori; nem sempre possvel aumentar o tamanho de um arquivo existente. Baixa, pois um bloco defei- Alta, pois arquivos podem tuoso leva perda dos da- ser criados em qualquer lodos daquele bloco e de to- cal do disco, sem risco de dos os blocos subsequentes, fragmentao externa. at o m do arquivo.

Tabela 3: Quadro comparativo das estratgias de alocao de arquivos Na abordagem de mapa de bits, um pequeno conjunto de blocos no incio da partio reservado para manter um mapa de bits. Cada bit nesse mapa de bits representa um bloco lgico da partio, que pode estar livre (o bit vale 1) ou ocupado (o bit vale 0). Essa abordagem como vantagem ser bastante compacta e simples de implementar: em um disco de 80 GBytes com blocos lgicos de 4.096 bytes, seriam necessrios 20.971.520 bits no mapa de bits, o que representa 2.621.440 bytes ou 640 blocos (ou seja, 0,003% do total de blocos lgicos do disco). A abordagem de lista de blocos livres pode ser implementada de vrias formas. Na forma mais simples, cada bloco livre contm um ponteiro para o prximo bloco livre do disco, de forma similar alocao encadeada de arquivos vista na seo 4.4.2. Apesar de simples, essa abordagem pouco eciente, por exigir um acesso a disco para cada bloco livre requisitado. A abordagem FAT (seo 4.4.2) uma melhoria desta tcnica, na qual os blocos livres so indicados por ags especcos na tabela de alocao de arquivos. Outra melhoria simples consiste em armazenar em cada bloco livre um vetor de ponteiros para outros blocos livres; o ltimo ponteiro desse vetor apontaria para um novo bloco livre contendo mais um vetor de ponteiros, e assim sucessivamente. Essa abordagem permite obter um grande nmero de blocos livre a cada acesso a disco. Outra melhoria similar consiste em armazenar uma tabela de extenses de blocos livres, ou seja, a localizao e o tamanho de um conjunto de blocos livres consecutivos no disco, de forma similar alocao contgua (seo 4.4.1).

c Prof. Carlos Maziero

O sistema de arquivos virtual 43

4.5

O sistema de arquivos virtual

O sistema de arquivos virtual gerencia os aspectos do sistema de arquivos mais prximos do usurio, como a vericao de permisses de acesso, o controle de concorrncia (atribuio e liberao travas) e a manuteno de informaes sobre os arquivos abertos pelos processos. Conforme apresentado na seo 2.1, quando um processo abre um arquivo, ele recebe do ncleo uma referncia ao arquivo aberto, a ser usada nas operaes subsequentes envolvendo aquele arquivo. Em sistemas UNIX, as referncias a arquivos abertos so denominadas descritores de arquivos, e correspondem a ndices de entradas em uma tabela de arquivos abertos pelo processo (process le table), mantida pelo ncleo. Cada entrada dessa tabela contm informaes relativas ao uso do arquivo por aquele processo, como o ponteiro de posio corrente e o modo de acesso ao arquivo solicitado pelo processo (leitura, escrita, etc). Adicionalmente, cada entrada da tabela de arquivos do processo contm uma referncia para uma entrada correspondente na tabela global de arquivos abertos (system le table) do sistema. Nessa tabela global, cada entrada contm um contador de processos que mantm aquele arquivo aberto, uma trava para controle de compartilhamento e uma referncia s estruturas de dados que representam o arquivo no sistema de arquivos onde ele se encontra, alm de outras informaes [Bach, 1986, Vahalia, 1996, Love, 2004]. A gura 21 apresenta a organizao geral das estruturas de controle de arquivos abertos presentes no sistema de arquivos virtual de um ncleo UNIX tpico. Essa estrutura similar em outros sistemas, mas pode ser simplicada em sistemas mais antigos e simples, como no caso do DOS. Deve-se observar que toda essa estrutura independente do dispositivo fsico onde os dados esto armazenados e da estratgia de alocao de arquivos utilizada; por essa razo, esta camada denominada sistema de arquivos virtual. Essa transparncia permite que os processos acessem de maneira uniforme, usando a mesma interface, arquivos em qualquer meio de armazenamento e armazenados sob qualquer estratgia de alocao.

c Prof. Carlos Maziero


referncias de arquivos abertos

Tpicos avanados 44

P1
nvel usurio ncleo

P2

P3

tabelas locais de arquivos abertos

tabela global de arquivos abertos

Sistema de Arquivos Virtual

alocao de arquivos sistemas de arquivos especcos

alocao de arquivos

driver

driver

dispositivo

dispositivo

Figura 21: Estruturas de controle de arquivos abertos em um ncleo UNIX.

Tpicos avanados
Journaling FS Extents Log-structured Fyle Systems

Questes
1. Enumere os principais atributos de um arquivo. 2. Enumere as principais operaes sobre arquivos. 3. O que um ponteiro de arquivo? Para que ele serve? 4. Comente as principais formas de acesso a arquivos. Qual o uso mais apropriado para cada uma delas?

c Prof. Carlos Maziero

Tpicos avanados 45

5. Apresente e comente as principais formas de atribuio de tipos aos arquivos. Quais so as vantagens e desvantagens de cada uma? 6. Quais as principais estruturas de diretrios empregadas em sistemas operacionais? 7. Do ponto de vista lgico, quais as principais diferenas entre a estrutura de diretrios Unix e Windows? 8. Explique os tipos de referncias possveis a arquivos em uma estrutura de diretrios. 9. Explique as formas de referncia a arquivos direta, absoluta e relativa. 10. Enumere principais problemas a resolver na implementao de um sistema de arquivos. 11. Apresente a arquitetura de gerncia de arquivos presente em um sistema operacional tpico, explicando seus principais elementos constituintes. 12. Explique o que alocao contgua de arquivos, apresentando suas vantagens e desvantagens. 13. No contexto de alocao de arquivos, o que signica o termo best-t? 14. Explique a alocao de arquivos em listas encadeadas, apresentando suas principais vantagens e desvantagens. 15. Explique a estrutura do sistema de arquivos conhecido como FAT, comentando sobre suas qualidades e decincias. 16. Por que a alocao de arquivos em listas encadeadas considerada pouco robusta? O que pode ser feito para melhorar essa caracterstica? 17. Explique o esquema de alocao indexada de arquivos usando ndices multi-nveis. 18. O que fragmentao interna e fragmentao externa? Por que elas ocorrem? 19. Analise o impacto das fragmentaes interna e externa nos sistemas de alocao contgua, indexada e por lista encadeadas. 20. Considere um sistema operacional hipottico que suporte simultaneamente as estratgias de alocao contgua, encadeada e indexada para armazenamento de arquivos em disco. Que critrios devem ser considerados para decidir a estratgia a usar para cada arquivo em particular? 21. Explique como efetuada a gerncia de espao livre atravs de bitmaps.

c Prof. Carlos Maziero

Tpicos avanados 46

Exerccios
1. Considerando um arquivo com 500 blocos em disco, calcule quantas leituras e quantas escritas em disco so necessrias para (a) inserir um novo bloco no incio do arquivo ou (b) inserir um novo bloco no nal do arquivo, usando as formas de alocao de blocos contgua, encadeada e indexada. Observaes: (a) Considere somente as operaes de leitura e escrita nos blocos do prprio arquivo (a tabela de diretrio sempre est em memria). (b) Para a alocao contgua, assuma que no h espao livre depois do arquivo, somente antes dele. (c) Para a alocao encadeada, assuma que a tabela de diretrio contm apenas um ponteiro para o incio do arquivo no disco. Os ponteiros dos blocos esto contidos nos prprios blocos. (d) Para a alocao indexada, considere i-nodes com somente um nvel, contendo somente os ponteiros para os blocos de dados. O i-node est no disco. 2. Considere um disco rgido com capacidade total de 1 Mbyte, dividido em blocos de 1.024 bytes. Os dez primeiros blocos do disco so reservados para a tabela de parties, o cdigo de inicializao (boot) e o diretrio raiz do sistema de arquivos. Para cada uma das formas de alocao a seguir, calcule o tamanho mximo de arquivo que pode ser criado nesse disco, explicando seu raciocnio. Considere as seguintes formas de alocao: (a) Alocao contgua. (b) Alocao encadeada, com ponteiros de 64 bits contidos nos prprios blocos. (c) Alocao indexada, com i-nodes contendo somente ponteiros diretos de 64 bits. 3. Considerando a tabela FAT (File Allocation Table) a seguir, indique: (a) o nmero de blocos ocupados pelo arquivo relat.pdf; (b) o tamanho (em blocos) do maior arquivo que ainda pode ser criado nesse disco; (c) quais arquivos esto ntegros e quais esto corrompidos por blocos defeituosos (bad blocks); (d) quantos blocos do disco esto perdidos, ou seja, no so usados por arquivos nem esto marcados como livres ou defeituosos. Na tabela, a letra R indica bloco reservado (Reserved), F indica bloco livre (Free), L indica o ltimo bloco de um arquivo (Last) e B indica bloco defeituoso (Bad).

c Prof. Carlos Maziero


0 1 2 3 4 5 6 7 8 9 10 11 12 13

REFERNCIAS 47
14 15 16 17 18 19

arquivo readme.txt icone.gif retrato.jpg relat.pdf format.exe carta.doc programa.c

incio 76 14 29 6 31 67 73

R
20

R
21

R
22

R
23

R
24

F 17 F 15 68 13 53 F
25 26 27 28 29 30 31 32

L 63 L
33 34 35

F 26 F
36 37 38

F
39

33 L
40 41

F 38 L
42 43 44

F 11 55 F 36 F 35 43 B
45 46 47 48 49 50 51 52 53

F
54

B 20 F
55 56 57

8
58

F
59

21 32 F 50 B
60 61 62 63 64

L
65

F
66

F 40 F
67 68 69

L 45 F 58 F
70 71 72 73 74

B
75

F
76

F 72 F
77 78 79

44 F

F 51 F

F 60 24 F

F 10 27 F

F 41 F

4. O sistema de arquivos indexado do sistema Minix possui os seguintes campos em cada i-node: meta-dados (tipo, dono, grupo, permisses, datas e tamanho) 7 ponteiros diretos 1 ponteiro indireto 1 ponteiro duplamente indireto A implementao bsica desse sistema de arquivos considera blocos de 1.024 bytes e ponteiros de 32 bits. Desenhe o diagrama do sistema de arquivos e calcule o tamanho mximo de arquivo que ele suporta, indicando seu raciocnio. 5. O sistema de arquivos indexado ext2fs, usado no Linux, possui os seguintes campos em cada i-node: meta-dados (tipo, dono, grupo, permisses, datas e tamanho) 12 ponteiros diretos 1 ponteiro indireto 1 ponteiro duplamente indireto 1 ponteiro triplamente indireto A implementao bsica do ext2fs considera blocos de 1.024 bytes e ponteiros de 64 bits. Desenhe o diagrama do sistema de arquivos e determine o tamanho mximo de arquivo que ele suporta, indicando seu raciocnio.

Projetos Referncias
[Bach, 1986] Bach, M. J. (1986). The design of the UNIX operating System. Prentice-Hall. [Dorward et al., 1997] Dorward, S., Pike, R., Presotto, D., Ritchie, D., Trickey, H., and Winterbottom, P. (1997). The Inferno operating system. Bell Labs Technical Journal, 2(1):518.

c Prof. Carlos Maziero

REFERNCIAS 48

[Freed and Borenstein, 1996] Freed, N. and Borenstein, N. (1996). RFC 2046: Multipurpose Internet Mail Extensions (MIME) part two: Media types. [Kernighan and Ritchie, 1989] Kernighan, B. and Ritchie, D. (1989). C: a Linguagem de Programao - Padro ANSI. Campus/Elsevier. [Levine, 2000] Levine, J. (2000). Linkers and Loaders. Morgan Kaufmann. [Love, 2004] Love, R. (2004). Linux Kernel Development. Sams Publishing Developers Library. [Pike et al., 1995] Pike, R., Presotto, D., Dorward, S., Flandrena, B., Thompson, K., Trickey, H., and Winterbottom, P. (1995). Plan 9 from Bell Labs. Journal of Computing Systems, 8(3):221254. [Pike et al., 1993] Pike, R., Presotto, D., Thompson, K., Trickey, H., and Winterbottom, P. (1993). The use of name spaces in Plan 9. Operating Systems Review, 27(2):7276. [Rice, 2000] Rice, L. (2000). Introduction to OpenVMS. Elsevier Science & Technology Books. [Russell et al., 2004] Russell, R., Quinlan, D., and Yeoh, C. (2004). Filesystem Hierarchy Standard. [Silberschatz et al., 2001] Silberschatz, A., Galvin, P., and Gane, G. (2001). Sistemas Operacionais Conceitos e Aplicaes. Campus. [Tanenbaum, 2003] Tanenbaum, A. (2003). Sistemas Operacionais Modernos, 2a edio. Pearson Prentice-Hall. [Vahalia, 1996] Vahalia, U. (1996). UNIX Internals The New Frontiers. Prentice-Hall.

Potrebbero piacerti anche