Anda di halaman 1dari 34

Sistemas de Ficheiros

Sistemas Operativos 2011 - 2012

Sistema de Ficheiros
Composto por um conjunto de entidades fundamentais:
um sistema de organizao de nomes para identificao dos ficheiros; uma interface programtica para comunicao entre os processos; sistema de ficheiros

Ficheiro:
coleco de dados persistentes, geralmente relacionados, identificados por um nome.

Sistema de Ficheiros (cont.)


Por razes de simplicidade e facilidade de gesto, a metainformao guardada no mesmo sistema de memria secundria que a informao que descreve. A soluo mais simples, para manter a meta-informao:
tabela mantida na memria secundria, na realidade uma estrutura um pouco mais complexa que se designa por directrio.

A designao directrio apropriada porque estabelece a associao entre o nome e o descritor do ficheiro Um directrio pode conter:
toda a meta-informao relativa a um ficheiro ou apenas uma parte dela, sendo a restante distribuda por outras estruturas auxiliares que sero descritas mais frente.

Sistema de Ficheiros (cont.)


O que ?
conjunto de ficheiros, directrios, descritores e estruturas de dados auxiliares geridos por um mdulo do sistema operativo (Sistema de Gesto de Ficheiros) permitem estruturar o armazenamento e a recuperao de dados persistentes em um ou mais dispositivos de memria secundria (discos ou bandas magnticas)

ficheiro
conjunto de dados persistentes, geralmente relacionados, identificado por um nome composto por:
nome: identifica o ficheiro perante o utilizador descritor de ficheiro: estrutura de dados em memria secundria com informao sobre o ficheiro (dimenso, datas de criao, modificao e acesso, dono, autorizaes de acesso) informao: dados guardados em memria secundria

portanto, para alm do nome, um ficheiro possui ainda outro tipo de informao que facilita a sua localizao e gesto:
dimenso, datas de criao, modificao e acesso, direitos de acesso, e localizao da informao em memria secundria. O conjunto destes dados usualmente designado por meta-informao.

Sistema de Ficheiros (cont.)


Chamaremos sistema de gesto de ficheiros, ou apenas sistema de ficheiros:
ao mdulo do sistema operativo responsvel pelo acesso e organizao dos ficheiros.

O termo sistema de ficheiros pois utilizado com o duplo sentido:


para denominar um conjunto autnomo de ficheiros em disco e para identificar o mdulo do sistema operativo encarregue de gerir os ficheiros.

Na maioria dos SO actuais podem coexistir em simultneo vrios sistemas de ficheiros:


cada dispositivo de memria secundria pode possuir uma organizao de informao e meta-informao diferente E.g. emWindows comum existirem em simultneo trs sistemas de ficheiros: o FAT (File Allocation Table), o NTFS (NT File System), e o CDFS (Compact Disk File System)

Sistema de Ficheiros (cont.)


As operaes mais frequentes sobre ficheiros so a leitura e escrita da sua informao.
Bastam estas funes? Implicaria que de cada vez que estas primitivas fossem executadas o nome do ficheiro tivesse de ser pesquisado no directrio para se obter a sua localizao, o desempenho ficaria seriamente reduzido, para alm de todo um conjunto de validaes de segurana que teriam que ocorrer em cada acesso.

Portanto, mantida uma Tabela de Ficheiros Abertos Existem funes sistema para iniciar a utilizao do ficheiro e para termin-la, sendo o acesso efectuado em trs etapas:
Abertura do ficheiro, dado o nome.
O sistema pesquisa o directrio, copia a meta-informao para memria e devolve ao utilizador um identificador que usado como referncia para essa posio de memria.

Leituras e escritas, dado o identificador de ficheiro aberto.


Permite obter rapidamente o descritor do ficheiro em memria, onde est toda a informao necessria para aceder aos dados.

Fecho do ficheiro.
Esta operao necessria para libertar a memria que continha a meta-informao do ficheiro e actualizar essa informao no sistema de memria secundria.

Organizao dos Nomes dos Ficheiros


de extrema importncia para o utilizador, pois um dos aspectos do sistema de ficheiros visvel do exterior. Existem vrias formas de organizar os nomes dos ficheiros:
Apenas um directrio global ao sistema e atribuir um nome a cada ficheiro. Foi utilizada nos primeiros sistemas dedicados a processamento por lotes. Problema da coliso de nomes, pois no era possvel guardar um ficheiro com um nome idntico a outro j existente. Uma primeira evoluo foi atribuir um directrio separado para cada utilizador.

O Multics foi o primeiro sistema a propor a organizao hierrquica dos nomes dos ficheiros, na forma de uma rvore:
soluo que hoje praticamente todos os sistemas usam

Organizao Hierrquica
/ etc src

users jog avz sh

bin date who

usr bin

unix tty00

dev tty01

pjpf

passwd

Hierarquia de Nomes
Organizao hierrquica (rvore):
soluo proposta no Multics os directrios contm caminhos de acesso para ns descendentes a partir de um directrio raiz ficheiros e directorias vazias so ns terminais (folhas) caminho de acesso (pathname): cadeia de caracteres que localiza um ficheiro ou directoria na rvore nomes absolutos ou relativos:
absoluto: caminho de acesso desde a raiz relativo: caminho de acesso a partir do directrio corrente

directrio corrente mantido para cada processo como parte do seu contexto

Nomes absolutos e nomes relativos:


absoluto: caminho de acesso desde a raiz relativo: caminho de acesso a partir do directrio corrente
directrio corrente mantido para cada processo como parte do seu contexto

Nomes relativos:
ter de fornecer sempre o nome completo do ficheiro fastidioso e pouco flexvel. E.g., a especificao dos ficheiros a serem includos num programa tinha de ser alterada se o programa fosse transportado para outro directrio

Hierarquia de Nomes (cont)


Um ficheiro pode ser conhecido por vrios nomes:
possvel designar o mesmo ficheiro com o nome /a/b/c e com o nome /x/y. comum chamar a cada um destes nomes links.

Problema:
quando se pretende apagar o ficheiro com o nome /a/b/c. apagar o contedo do ficheiro ou apenas o nome?

A semntica utilizada na maioria dos sistemas de ficheiros a ltima:


quando se remove um nome remove-se um link Se esse link for o nico que o ficheiro possui, dever-se- apagar o ficheiro. cada sistema de ficheiros tem a sua forma diferente de implementar os links

Espao de Nomes
Quer o Windows quer o Unix tm um espao de nomes uniforme.
ficheiros, directrios, dispositivos so referenciados usando exactamente a mesma sintaxe.
b c x d y /dev/hd1 z f e /dev/hd0 /

Em ambos os casos existe uma nica raiz de nomes:


i.e. todos os nomes de ficheiros, directrios e dispositivos comeam por uma / or \, em Unix e Windows, respectivamente

Mount:
esta operao consiste em ligar a raiz do novo sistema de ficheiro a um directrio do sistema de ficheiros raiz.

mount t <filesystem> /dev/hd1 /b

Nomes e Extenses
usual, os nomes dos ficheiros terem uma extenso que d alguma informao sobre o seu contedo:

Extenso .c .obj .exe .html .dat .mp3

Descrio Cdigo fonte em C. Cdigo objecto resultante de uma compilao. Cdigo executvel. Hipertexto para ser visualizado por navegador de rede Ficheiro de dados. Representao comprimida de som digital

Nomes e Extenses (cont.)


Alguns sistemas, como o Unix, no atribuem qualquer significado aos nomes e extenses e, consequentemente, no impem qualquer restrio.: as extenses so apenas convenes mantidas pelos utilizadores e pelas ferramentas que trabalham sobre os ficheiros. E.g. o compilador de C espera que o cdigo fonte esteja num ficheiro com a extenso .c e produz um .o. Noutros sistemas, como o MS/DOS, o ponto obrigatrio: o nome do ficheiro composto por nome.extenso, embora ambas as componentes possam ser nulas. Em Windows, as extenses podem ou no ser obrigatrias dependemdo do sistema de ficheiros utilizado: No FAT a extenso obrigatria e tem no mximo trs caracteres como no MS/DOS que o antecedeu. No NTFS a extenso no obrigatria e o carcter . interpretado como outro carcter. Quer se use FAT ou NTFS o Windows utiliza as extenses dos ficheiros para identificar as aplicaes que manipulam esses ficheiros (ex. a extenso .doc est associada aplicao Word), enquanto que em Linux a escolha da aplicao efectuada, tipicamente, pelo contedo do ficheiro.

Tipos de Ficheiros
O tipo de um ficheiro est relacionado com o seu contedo e forma de acesso Genericamente:
um ficheiro composto por um conjunto de registos (de dimenso fixa ou varivel) de um determinado tipo, apesar de em muitos casos ser meramente estruturados como uma sequncia de bytes. o mtodo de acesso pode ser sequencial, directo ou por chave.

Mtodo de acesso aos registos:


acesso sequencial (historicamente ligado s bandas magnticas):
para se ler o registo N necessrio ler os N-1 registos anteriores para alterar um registo preciso ler o ficheiro todo e escrev-lo de novo com o registo alterado

acesso directo (corresponde ao funcionamento dos discos magnticos):


pode-se aceder directamente a um registo sem aceder aos anteriores no se pode inserir um novo registo entre outros dois

acesso por chave (usado em algumas BDs):


os registos so identificados por chaves alfanumricas reconhecidas pelo sistema de ficheiros (Indexed Sequential Access Method) consiste em especificar um identificador do registo, que pode ser um dos seus campos, sendo da responsabilidade da gesto de ficheiros determinar a sua posio dentro do ficheiro a organizao interna mais habitual destes ficheiros em rvore, sendo possvel inserir e retirar registos em qualquer ponto estes sistemas de ficheiros possuem uma estrutura adicional para cada ficheiro com um conjunto de ndices para os registos com os dados

Atributos de um Ficheiro
O tipo de um ficheiro um dos vrios atributos que cada ficheiro possui. Estes atributos podem variar de sistema de ficheiros para sistema de ficheiros Esto tipicamente armazenados na meta-informao do ficheiro. Para alm do tipo, a meta-informao do ficheiro possui usualmente os seguintes atributos:
Proteco quem pode aceder ao ficheiro e quais as operaes que pode realizar. Identificao do dono do ficheiro geralmente quem o criou. Dimenso do ficheiro por vezes automaticamente actualizada quando o ficheiro cresce ou diminui. Data de criao ltima leitura e ltima escrita.

Mtodos do Sistema de Ficheiros


Podemos dividir as funes relacionadas com o sistema de ficheiros em seis grupos:
Abertura, criao e fecho de ficheiros; Operaes sobre ficheiros abertos; Operaes complexas sobre ficheiros; Operaes sobre directrios; Acesso a ficheiros mapeados em memria; Operaes de gesto dos sistemas de ficheiros.

Abertura, criao e fecho de ficheiros


Retorno fd := fd := Nome Abrir Criar Fechar Parmetros (Nome, Modo) (Nome, Proteco) (Fd) Descrio Abre um ficheiro Cria um novo ficheiro Fecha um ficheiro

Operaes sobre ficheiros abertos


Nome Ler Escrever Posicionar Parmetros (Fd, Tampo, bytes) (Fd, Tampo, bytes) (Fd, Posio) Descrio L de um ficheiro para um tampo de memria Escreve um tampo para um ficheiro Posiciona o cursor de leitura ou escrita

Outras Funes (biblioteca)


comum existirem outras operaes sobre ficheiros abertos especficas das linguagens de alto nvel:
Para optimizar o acesso ao sistema de ficheiros comum as linguagens de alto nvel utilizarem estruturas locais geridas no espao de memria do utilizador, usualmente mantido em bibliotecas. Estas estruturas contm tampes especiais para onde so lidos e escritos os ficheiros, em blocos de maior dimenso do que aquela que usualmente pedida pelo utilizador.

FILE *file = fopen("filename", "a"); /* ... */ fwrite(buffer0, sizeof(char), BUFFER_SIZE, file); /* Escreve dados num tampo da libc */ fwrite(buffer0, sizeof(char), BUFFER_SIZE, file); fflush(file); /* ... */ fclose(file);

So escritos vrios buffers para o ficheiro e depois invocada a funo fflush.


todas as escritas foram feitas no buffer interno da libc, a escrita no sistema de ficheiros s efectuada quando utilizada a funo fflush (quando o ficheiro fechado, ou quando o buffer interno da libc j se encontra cheio)

Operaes complexas sobre ficheiros


Algumas operaes sobre ficheiros permitem realizar operaes sobre a totalidade do ficheiro, como copi-lo, apag-lo ou mov-lo
Nome Copiar Mover Apagar LerAtributos EscreverAtributos Parmetros (Origem, Destino) (Origem, Destino) (Nome) (Nome, Tampo) (Nome, Atributos) Descrio Copia um ficheiro Move um ficheiro de um directrio para outro Apaga um ficheiro L atributos de um ficheiro Modifica os atributos

Operaes sobre directrios


Nome ListaDir MudaDir CriaDir Parmetros (Nome, Tampo) (Nome) (Nome, Proteco) Descrio L o contedo de um directrio Muda o directrio por omisso Cria um novo directrio

Acesso a ficheiros mapeados em memria


A primitiva MapearFicheiro permite aceder ao contedo de um ficheiro da mesma forma que se acede a uma qualquer outra estrutura em memria. O contedo do ficheiro referenciado por Fd mapeado a partir da posio indicada pelo parmetro posio, no endereo de memria definido no parmetro seguinte e numa extenso indicada em dimenso. possvel aceder directamente ao ficheiro referenciando directamente com um apontador s posies de memria indicadas.
Nome MapearFicheiro DesmapearFicheiro Parmetros (fd, posio, endereo, dimenso) (endereo, dimenso) Descrio Mapeia um ficheiro em memria Elimina o mapeamento

Operaes de gesto dos sistemas de ficheiros


Nome Montar Desmontar Parmetros (Directrio, Dispositivo) (Directrio) Descrio Monta um dispositivo num directrio Desmonta o dispositivo montado no directrio

10

Sistemas de Ficheiros
Estrutura Interna dos Sistemas de Armazenamento

Dispositivos de Memria Secundria


Os sistemas de ficheiros so armazenados em dispositivos de memria secundria:
na maioria dos casos estes dispositivos so dispositivos de memria de massa persistente, (i.e. grandes quantidades de dados que no se perdem aps desligar a energia), tais como os discos magnticos existem casos em que estes dispositivos no so nem de memria de massa, nem persistentes.

Existem situaes em que til utilizar um sistema de ficheiros para gerir informao em memria voltil:
E.g., o sistema operativo Linux utiliza uma soluo deste tipo (vulgo RAM Disk) durante o seu processo de instalao. neste caso, a utilidade do sistema de ficheiros no resulta da sua capacidade de gerir grandes volumes de dados de forma eficiente, mas sim da interface uniforme e da organizao da informao que estes proporcionam.

11

Caractersticas Fsicas dos Discos Magnticos


Sentido de rotao dos pratos Brao da cabea Cabea de leitura/escrita Prato

Sector a ser acedido

Cada disco possui um ou mais pratos de um material magntico Em cada face de cada prato a informao escrita em pistas concntricas, e cada pista composta por um conjunto de sectores O conjunto das pistas com o mesmo raio forma um cilindro Cada prato est dividido em blocos de dimenso fixa, denominados sectores. Os sectores so a unidade mnima de leitura e escrita em disco.
a sua dimenso habitual de 512 ou 1024 byte. a leitura ou escrita de um sector faz-se quando a cabea do respectivo prato est sobre o sector respectivo.

Caractersticas Fsicas dos Discos Magnticos (cont)


A leitura e escrita de um sector faz-se velocidade de rotao do disco, i.e. os bytes de um sector so lidos ou escritos medida que passam sobre a cabea do disco O tempo de leitura/escrita de um sector composto por:
tempo de posicionamento (seek time): tempo de deslocao das cabeas at ao cilindro desejado tempo de latncia: tempo de espera pelo sector (tmdio = tmeia rotao) tempo de transferncia: tempo que demora a transferir um sector entre o disco e a memria principal (trevoluo / n. de sectores por pista)

Tempo mdio de acesso:


soma dos tempos mdios de posicionamento, latncia e transferncia

Tempos tpicos para um disco de 7200 RPM com 272 a 472 sectores por pista (o nmero de sectores maior nas pistas exteriores):
Nome Tempo transferncia Tempo de posicionamento Tempo latncia mdio Forma de clculo Tempo de revoluo / sectores por pista Tempo de posicionamento da cabea na pista Tempo de revoluo / 2 Valor tpico 17s 4-8ms 4ms

12

Caractersticas Fsicas dos Discos Magnticos (cont)


Se o sector a ler estiver na mesma pista que o sector lido anteriormente: no necessrio tempo de posicionamento Se o sector a ler estiver por baixo da cabea de leitura na altura precisa em que se pretende l-lo: o tempo de latncia tambm no existe. Algoritmos de gesto de memria secundria dos sistemas operativos: reduzir ao menor valor possvel o tempo de posicionamento e latncia, fazendo com que os acessos estejam coordenados da melhor forma. A gesto de um disco feita em blocos de dimenso mltipla dos sectores. A dimenso do bloco depende das estruturas do sistema operativo: a unidade mnima que pode ser indexada pelo sistema operativo. Alm do sector e do bloco (dependem respectivamente da organizao fsica do disco e do sistema operativo) existe ainda o segmento ou extent. o segmento a unidade de reserva de espao em disco composto por um conjunto de blocos

Caractersticas Fsicas dos Discos Magnticos (cont)


O bloco e o segmento so unidades de gesto que tm por objectivo optimizar o acesso ao disco:
quanto maior for o bloco maior a taxa de transferncia bruta (os tempos de posicionamento e latncia de sectores consecutivos so quase nulos, mas a taxa de transferncia efectiva depende do nmero de bytes dentro do bloco com informao til) se um bloco estiver apenas meio cheio a sua transferncia efectiva metade da transferncia bruta (quanto maiores forem os blocos maiores sero as diferenas entre as taxas de transferncia bruta e efectiva) situao semelhante ao problema da fragmentao de memria necessrio encontrar um equilbrio que maximize a taxa de transferncia efectiva actualmente a dimenso de um bloco varia entre 4 Kbytes e 8 Kbytes.

O segmento usualmente composto por vrios blocos:


o objectivo do segmento reduzir a taxa de disperso do disco. diz-se que um disco tem uma taxa de disperso elevada quando as sequncias contguas de blocos que fazem parte de um mesmo ficheiro forem de reduzida dimenso, i.e. os blocos de cada ficheiro esto dispersos pelo disco. na literatura de lngua inglesa por vezes designada fragmentation no sentido de fragmentao dos ficheiros pelo disco e no no conceito de fragmentao que utilizamos nos captulos anteriores

13

Organizao Lgica
Cada dispositivo pode armazenar em simultneo vrios sistemas de ficheiros:
necessrio manter informao sobre o espao ocupado por cada um dos sistemas de ficheiros de forma persistente esta informao est organizada em estruturas guardadas de forma sequencial no disco.

Constituio de um disco, com as vrias componentes que suportam a existncia de vrios sistemas de ficheiros independentes em cada disco:

Organizao Lgica (cont.)


Partio: subdiviso lgica de um dispositivo fsico (disco, CD-ROM, etc.), e est dividida em blocos de tamanho fixo. partio vista pelo sistema operativo como um vector de blocos ordenado a partir do nmero zero. cada partio um contexto independente das outras, no existindo ficheiros repartidos por parties diferentes. Volume: diviso lgica de um sistema de ficheiros mapeada numa partio, i.e. os discos esto divididos em parties e os sistemas de ficheiros em volume. Usualmente: cada volume do sistema de ficheiros correspondente a uma partio no disco, por vezes as designaes partio e volume so usadas como sinnimas, em alguns casos possvel ter um volume mapeado em mais do que uma partio de um disco

14

Master Boot Record e Bloco de Boot


O Master Boot Record (MBR) e o bloco de boot so entidades fundamentais para localizar e executar um SO. O cdigo e os dados de que composto um SO necessitam, obviamente, de estar armazenados persistentemente.
mas, antes do SO se executar no possvel utilizar os mecanismos normais de acesso a ficheiros pois o sistema de ficheiros ainda no foi carregado.

necessrio um outro sistema de armazenamento alternativo que permita a leitura e execuo do SO:
independente do tipo de sistema de ficheiros e do tipo de SO, mas pode variar com o tipo de arquitectura do computador, (frequentemente a soluo utilizada semelhante s arquitecturas do tipo IBM-PC).

Master Boot Record e Bloco de Boot (cont.)


Cdigo que efectua o boot do sistema (parte do que usualmente denominado BIOS):
assume que a informao sobre as parties existentes num disco estejam no incio do disco, no MBR.

O MBR possui cdigo, geralmente independente do sistema operativo:


que localiza a partio que contm o sistema operativo a executar e transfere a execuo para o cdigo existente no primeiro bloco dessa partio o bloco de boot.

O bloco de boot possui um programa especfico de cada SO que:


sabe ler o sistema de ficheiros onde o SO se encontra, carregar o sistema operativo e execut-lo.

Quando s existe uma partio com SO:


o cdigo do MBR escolhe imediatamente essa partio para transferir a execuo durante a fase de boot; quando existem mais parties usualmente o utilizador que escolhe a partio a executar. neste caso o cdigo existente no MBR diz-se que um boot loader porque permite escolher entre vrios sectores de boot, de vrias parties, para executar.

15

Organizao Persistente dos Sistemas de Ficheiros


As estruturas volteis de suporte ao sistema de ficheiros so comuns a todos os sistemas de ficheiros:
o que varia a organizao da informao persistente em cada partio, i.e. um sistema de ficheiros identificado pela organizao interna das estruturas que o compem.

Quer o Windows quer o Linux suportam em simultneo vrios sistemas de ficheiros:


isso no acontecia em sistemas mais antigos tais como o VMS ou o MS-DOS. nestes ltimos todas as parties de um disco eram geridas pelo mesmo sistema de ficheiros (estes confundiam-se com o SO)

Tipos de organizao de sistema de ficheiros:


lista (verso simplificada utilizada nos primeiros CDs); tabela de reserva (verso simplificada do MS-DOS ) com descritores de ficheiros (verso simplificada no Windows e Linux)

Organizao em Lista
Forma mais simples de organizar um sistema de ficheiros: cada ficheiro constitudo por um registo de dimenso varivel com quatro campos

o nome dos ficheiros tm dimenso fixa ( possvel considerar variantes em que a dimenso do nome varivel) No caso dos sistemas de ficheiros em CD que s podem ser escritos uma vez: todos os ficheiros ficam compactados uns a seguir aos outros No caso de sistemas onde possvel apagar ficheiros, para alm da lista antes indicada, necessrio manter uma outra lista: com todos os espaos no ocupados para que seja possvel localizar um espao onde colocar um novo ficheiro.

16

Organizao em Lista - desvantagens


Tempo necessrio para localizar um ficheiro atravs do seu nome: nomes dos ficheiros espalhados pelo disco e a sua localizao depende da dimenso do ficheiro anterior, necessrio percorrer toda a lista comparando os nomes dos ficheiros um a um Fragmentao da memria: resultante do no reaproveitamento dos espaos previamente ocupados por ficheiros grandes (que s podem ser usados por ficheiros de dimenso igual ou inferior) deixando pequenos espaos que dificilmente podem ser reaproveitados. problema idntico ao da fragmentao externa da memria Espao ocupado por cada ficheiro contnuo: limita a capacidade de extenso de um ficheiro ao incio de outro i.e. um ficheiro s pode crescer enquanto existir espao livre contnuo aps o final do ficheiro (ou ento ter de ser copiado para uma nova localizao)

Organizao em Lista desvantagens (cont.)


No caso dos dispositivos em que s possvel escrever uma vez, e de forma sequencial (e.g. CD-ROM):
os dois ltimos problemas no ocorrem como a meta-informao necessria para um sistema de ficheiros deste tipo muito reduzida, a sua utilizao aceitvel. em dispositivos de leitura e escrita mltipla aleatria, como o caso dos discos magnticos, estes problemas tornariam os sistemas muito ineficazes e sem tirar partido do acesso directo.

Soluo para a primeira desvantagem:


criando um directrio nico onde todos os nomes dos ficheiros esto juntos
Dimenso Dimenso Dimenso *dados *dados *dados Dados Dados Nome Nome Nome Dados

Directrio

Dados

os nomes dos ficheiros ficam perto uns dos outros no disco aumenta a eficncia da procura de um ficheiro dado o seu nome.

17

Organizao em Lista desvantagens (cont.)


Soluo para a segunda e terceira desvantagens:
dividir os dados de cada ficheiro em blocos de dimenso fixa blocos guardados em qualquer um dos blocos de igual dimenso em que a partio foi dividida a fragmentao externa reduzida crescimento de cada ficheiro no est limitado pelo nmero de blocos consecutivos existentes (qualquer conjunto de blocos pode ser utilizado para formar um ficheiro)

O sistema de ficheiros do CP/M (um dos primeiros para computadores pessoais, 1977):
utilizava uma estrutura deste tipo cada entrada do directrio composta por 32 bytes

Sistema de Ficheiros do CP/M


Estrutura de uma entrada do directrio do sistema de ficheiros do CP/M:

Mapa de blocos de dados:


contm os nmeros dos blocos de dados que fazem parte do ficheiro.

Neste sistema:
cada bloco possua 1 Kbyte cda um dos 16 bytes do mapa de blocos continha um ndice de bloco logo, a dimenso mxima de um ficheiro era 16 KBytes valores claramente insuficientes o maior problema que para os aumentar necessrio aumentar o mapa de blocos de todas as entradas do directrio (penalizando assim os ficheiros de reduzida dimenso) i.e. os ficheiros mais pequenos continuariam a utilizar um mapa de blocos grande ainda que dele no necessitassem, desperdiando assim memria.

18

Sistema de Ficheiros do MS-DOS


Evoluiu a partir do sistema CP/M Possui uma estrutura de sistema de ficheiros semelhante Em vez de um mapa de blocos por ficheiro, no MS-DOS existe:
uma tabela de blocos global partilhada por todos os ficheiros esta tabela nica to representativa da estrutura do sistema de ficheiros que deu origem ao nome do sistema de ficheiros mais popular que a usa: o sistema de ficheiros FAT (Tabela de Alocao de Ficheiros File Allocation Table).

Sistemas de Ficheiros do Tipo FAT


Nos sistemas de ficheiros do tipo do sistema FAT:
tabela global com uma entrada por cada um dos blocos de dados disponveis na partio.
Estrutura de um sistema de ficheiros do tipo FAT

A partio contm trs seces distintas:


a tabela de alocao (Allocation Table), um directrio com os nomes dos ficheiros presentes no sistema de ficheiros e uma seco com o espao restante dividido em blocos, de igual dimenso, para conter os dados dos ficheiros.

19

Sistemas de Ficheiros do Tipo FAT (cont.)


Cada entrada da tabela de alocao:
corresponde a um bloco na rea de dados e contm o nmero da entrada de dados seguinte. com o valor zero indicam que o respectivo bloco est livre, com valores diferentes de zero indicam que o respectivo bloco faz parte de um ficheiro.

As entradas da tabela de alocao:


Cada ficheiro composto por vrios blocos:


o primeiro bloco indicado por um nmero junto respectiva entrada no directrio. os primeiros blocos dos FichA, FichB e FichC so os blocos 0, 1 e 3, respectivamente os restantes blocos de cada ficheiro so referenciados em sequncia pelas entradas da tabela de alocao. as entradas com o valor max indicam que o respectivo bloco o ltimo pertencente a um ficheiro. e.g. o FichA composto pelos blocos 0 e 2, enquanto que o FichB composto pelos blocos 1 e 5, e o FichC, apenas, pelo bloco 3. O valor max corresponde a todos os bits a 1.

Desvantagens do FAT
Elevada dimenso da tabela de alocao quando os discos tm dimenses muito grandes:
e.g., com disco de 500 GBytes, blocos de 4 KBytes e ponteiros de 32 bit, a tabela de Alocao pode ocupar 500 MBytes (500G/4K 4 bytes).

Tabelas desta dimenso no so possveis de manter em memria principal permanentemente:


necessrio recorrer paginao ainda necessrio percorrer a cadeia de blocos de um ficheiro sempre que se pretende localizar um bloco (degradao de desempenho significativa)

20

Organizao com Descritores Individuais de Ficheiros


Manter a descrio do ficheiro num descriptor prprio de cada ficheiro. Descritores de ficheiros:
estruturas intermdias que esto entre as entradas dos directrios que referenciam ficheiros e os blocos de dados de cada um desses ficheiros.

Ao contrrio dos sistemas do tipo FAT, em que a entrada de um directrio aponta directamente para o primeiro bloco ocupado pelo ficheiro:
nos sistemas de ficheiros com descritores, as entradas dos directrios apontam para os descritores de ficheiros e estes, por sua vez, para os blocos.

Vantagem 1 (deste novo nvel de indireco) :


os blocos no necessitam de estar referenciados por uma lista em que cada bloco aponta para o seguinte. o espao utilizado para indicar os blocos de dados tem menores constrangimento; logo possvel utilizar estruturas em rvore ou em tabela de disperso (hash) que so muito mais rpidas, permitindo assim localizar de forma eficiente qualquer bloco de um ficheiro;

Vantagem 2:
podem existir vrias entradas de directrio a apontar para o mesmo ficheiro a coerncia dos seus atributos (por exemplo, dimenso, datas, controlo de acesso, etc.) est sempre garantida, pois o descritor apenas um.

Organizao com Descritores Individuais de Ficheiros (cont.)


Os descritores dos ficheiros so guardados:
numa estrutura especial de tamanho fixo antes dos blocos de dados
Volume

Bloco de boot

Descritor do volume

Tabela de alocao

Descritores de ficheiros

Blocos

No Linux tem o nome:


de tabela de inodes

Ficheiro

Directrio

No Windows tem o nome:


MFT (Master File Table).

O nmero mximo de ficheiros numa partio dado pelo nmero mximo de descritores nessa tabela.

21

Organizao com Descritores Individuais de Ficheiros (cont.)


Um ficheiro univocamente identificado:
dentro de cada partio, pelo nmero do seu descritor, dada a relao biunvoca entre um descritor de ficheiro e o ficheiro que descreve.

Os directrios s tm que:
efectuar a ligao entre um nome do ficheiro e o nmero do seu descritor

Quer no EXT3, quer no NTFS:


os directrios no so mais do que ficheiros em que cada registo um tuplo de tamanho varivel contendo o nome do ficheiro e o nmero do seu descritor
Nmero do Inode Dimenso do Registo Dimens o do nome Tipo Nome

0 12 24 40

54 79

1 1 1 1

2 2 6 6

1 2 6 7

2 2 1 1

. . c m

\0 . a a

\0 \0 r r

\0 \0 l q o u s e \0 s \0 \0

23 256

Organizao com Descritores Individuais de Ficheiros (cont.)


Descritor do Volume:
possui a informao geral de descrio do sistema de ficheiros e.g. por exemplo, a localizao da tabela de descritores e a estrutura da tabela de blocos livres geralmente replicado noutros blocos (a informao nele guardada de importncia fundamental) se se corromper pode ser impossvel recuperar a informao do sistema de ficheiros

Implementao do descritor de volume:


Unix - bloco especial denominado superbloco NTFS - ficheiro especial FAT a informao em causa descrita directamente no sector de boot

Existem ainda duas outras estruturas:


superbloco tabela de blocos livres (ou tabela de alocao)

22

Tabela de Blocos Livres


Mantm um conjunto de estruturas necessrias localizao de blocos livres:
i.e. blocos da partio que no esto ocupados por nenhum bloco de nenhum ficheiro.

Pode ser um simples bitmap:


um bit por cada bloco na partio, indica se o respectivo bloco est livre ou ocupado

Tabela de blocos livres desacoplada dos descritores de ficheiros tem vantagens:


possvel ter estruturas muito mais densas (a tabela de blocos livres possui, usualmente, apenas um bit por cada bloco) pode-se organizar a tabela de blocos livres em vrias tabelas de menor dimenso para blocos adjacentes

Estruturas de Suporte Utilizao dos Ficheiros


Todos os sistemas de ficheiros definem um conjunto de estruturas de memria para os ajudar a gerir a informao persistente mantida em disco. Objectivos:
Criar e gerir os canais virtuais entre as aplicaes e a informao em disco; Aumentar o desempenho do sistema mantendo a informao em caches; Tolerar eventuais faltas; Isolar as aplicaes da organizao do sistema de ficheiros e, nalguns casos, possibilitar a gesto de vrias organizaes de estruturas de ficheiros em simultneo.

23

Estruturas de Suporte Utilizao dos Ficheiros

Quando existe uma operao sobre um ficheiro j aberto, o identificador do ficheiro permite identificar na estrutura de descritores de ficheiros abertos do processo o ponteiro para o objecto que descreve o ficheiro na estrutura de ficheiros abertos global (passo ). De seguida perguntado ao gestor de cache se o pedido pode ser satisfeito pela cache (passo Se no puder ento invocada a funo correspondente operao desejada do sistema de ficheiros, dando-lhe como parmetro o descritor de ficheiro correspondente (passo ). Finalmente, os blocos de dados do ficheiro so lidos ou escritos a partir da informao de localizao dos blocos residente no descritor de ficheiro (passo ). ).

Estruturas de Suporte Utilizao dos Ficheiros (cont)


Tabela de ficheiros abertos por processo:
contm um descritor para cada um dos ficheiros abertos mantida no espao de memria protegida pelo que s pode ser acedida pelo ncleo

Tabela de ficheiros abertos global:


contm informao relativa a um ficheiro aberto mantida no espao de memria protegida pelo que s pode ser acedida pelo ncleo

A existncia de duas tabelas fundamental para:


garantir o isolamento entre processos permitindo a partilha de ficheiros sempre que necessrio (e.g. os cursores de escrita e leitura de um ficheiro entre dois ou mais ficheiros)

Note-se que:
os identificadores para a tabela global esto na tabela privada que est em memria protegida, pelo que no podem ser alterados

24

Sistema de Ficheiros
Linux

Sistema de Ficheiros do Linux


Genricas Fd := Abrir (Nome, Modo) Fd := Criar (Nome, Proteco) Fechar (Fd) Ler (Fd, Tampo, Bytes) Ficheiros Abertos Escrever (Fd, Tampo, Bytes) Posicionar (Fd, Posio) Simples Copiar (Origem, Destino) Mover (Origem, Destino) Apagar (Nome) Complexas LerAtributos (Nome, Tampo) EscreverAtributos (Nome,Atributos) Operaes Linux int open( const char *path, int flags, mode_tmode) int close(int fd) int read(int fd, void *buffer, size_t count) int write(int fd, void *buffer, size_t count) int lseek(int fd, off_t offset, int origin) int symlink( const char *oldpath, const char *newpath) int link( const char *oldpath, const char *newpath) int rename( const char *oldpath, const char *newpath) int unlink(const char *path) int dup(int fd), int dup2(int oldfd,int newfd) int stat( const char *path, struct stat *buffer) int fcntl(int fd,int cmd,struct flock *buffer) int chown(constchar *path, uid_t uid, gid_t gid) int chmod(constchar *path, mode_tmode) void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset) int munmap(void*addr, size_t len) int readdir(int fd, struct dirent *buffer, unsigned int count) int chdir(const char *path) int mkdir(const char *path, mode_tmode) int rmdir(const char *path) int mount(constchar *device, const char *path, const char *fstype, unsigned long flags, const void *data) int umount(constchar *path)

Ficheiros em memria

MapearFicheiro(Fd,pos,endereo,dim) DesMapearFicheiro(endereo,dim) ListaDir (Nome, Tampo) MudaDir (Nome) CriaDir (Nome, Proteco) RemoveDir(Nome) Montar (Directrio, Dispositivo) Desmontar (Directrio)

Directrios

Sistemas de Ficheiros

25

Sistema de Ficheiros do Linux


Origens na verso 7 do Unix File System (UFS v7); continuou inalterada at ao Unix System V. A primeira verso do sistema de ficheiros do Linux derivou directamente do Minix: tinha um conjunto de limitaes e ineficincias comuns a todos os sistemas de ficheiros compatveis com o UFS v7: os directrios eram sequncias no ordenadas de entradas de 16 byte, com os nomes de um ficheiro limitados a 14 caracteres. a organizao utilizada era pouco eficiente para discos de grande dimenso O Berkeley Fast File System resolveu estas limitaes: alterou o formato dos directrios de modo a permitir ficheiros com nomes at 255 caracteres, props uma nova organizao da informao em disco que o torna mais eficiente. A primeira evoluo do sistema de ficheiros do Linux deu-se com a introduo do sistema de ficheiros extend (EXT): incorporava as propostas do Berkeley Fast File System relativas dimenso mxima do nome dos ficheiros. A segunda evoluo, mais significativa: introduziu o sistema de ficheiros extend 2 (EXT2) e o Virtual File System (VFS). EXT3: o sistema de ficheiros EXT2 com um conjunto de estruturas auxiliares para assegurar a consistncia do sistema de ficheiros em caso de faltas, designadas por estruturas de journaling

Estruturas Persistentes EXT2


Essencialmente de dois tipos:
estruturas de suporte definio de ficheiro - contm os meta-dados relativos a cada ficheiro estruturas de suporte ao sistema de ficheiros - contm os meta-dados do sistema de ficheiros global.

Inode:
descritor de cada ficheiro designa-se por index-node ou inode h inodes que no esto associados a ficheiros (ver I/O)
Campo i_mode i_uid i_size i_atime i_ctime i_mtime i_dtime i_gid i_links_count i_blocks i_flags i_block[15] Descrio Tipo de ficheiro e direitos de acesso Identificador do utilizador Dimenso do ficheiro Tempo do ltimo acesso Tempo da ltima alterao do inode Tempo da ltima alterao do ficheiro Tempo da remoo do ficheiro Identificador do grupo do utilizador Contador de hard links Nmero de blocos ocupado pelo ficheiro Flags vrias do ficheiro Vector de 15 unidades para blocos de dados Outros campos ainda no utilizados

26

Inode
ndice dos blocos constituintes do ficheiro mantido:
num vector denominado i_block com 15 posies 12 dessas 15 posies identificam os primeiros blocos do ficheiro (um bloco varia entre 1 Kbyte e 4 Kbyte). caso um ficheiro tenha uma dimenso superior 12 blocos, ento as 3 ltimas posies do vector contm uma referncia para um bloco com ndices para outros blocos

3 ltimas posies do vector:


a primeira (13) aponta para um bloco normal de disco, mas que em vez de informao relativa ao contedo de um ficheiro, contm referncias para um conjunto de blocos de dados. para permitir que os ficheiros tenham dimenses muito superiores, a segunda e terceira entradas (14 e a 15 do vector) referenciam uma rvore de blocos de ndices com respectivamente dois e trs nveis de indireco

Dimenso mxima de um ficheiro no EXT2:


nmero de blocos indexados directamente pelo inode, mais o nmero de blocos indexados pelos blocos de ndices com 1,2 e 3 nveis de indireco

Inodes
Proteco Datas Etc. Blocos de dados

inode

Blocos ndices de 1 nvel Trs nveis de indireco

B bytes

Blocos ndices de 2 nvel B bytes

dimenso mxima de um ficheiro = B x (12 + B/R + (B/R)2 + (B/R)3)


B a dimenso em bytes de um bloco de dados R a dimenso em bytes de uma referncia para um bloco Com blocos de 1 Kbyte e referncias de 4 byte, a dimenso mxima de um ficheiro ~16 Gbyte

27

Aceder a um Ficheiro
necessrio:
copiar o bloco para memria, modific-lo e voltar a escrever no ficheiro.

Para tal preciso traduzir um tuplo <inode, cursor> para um endereo de memria (3 passos):
Localizar o bloco de disco onde est a informao a aceder Mapear o referido bloco numa posio de memria Calcular o endereo de memria do referido bloco mapeado em memria que possui a informao a aceder

Optimizaes das operaes:


dimenses dos blocos e das referncias so potncias de 2 as operaes de multiplicao e diviso so substitudas por operaes de deslocamento de bits (instrues shift do processador), efectuadas de forma muito eficiente.

Directrios
So a entidade responsvel por efectuar a traduo entre o nome de um ficheiro e o inode que o representa. Tm uma estrutura especfica para que o sistema de ficheiros os possa ler e interpretar, e assim localizar os ficheiros a partir do seu nome. Para localizar o inode de um ficheiro o sistema de ficheiros tem, no caso geral, que resolver o caminho de acesso, lendo e interpretando todos os directrios que compem o nome do ficheiro. Este processo designa-se usualmente por path walk. Directrio:
est dividido em registos de dimenso varivel. cada um desses registos contm a informao necessria traduo de um nome para um inode. um nome de ficheiro continua a possuir uma dimenso mxima, definida pela dimenso do campo Dimenso do registo que s possui um byte. por razes de eficincia cada registo comea num nmero mltiplo de bytes. o campo tipo indica qual o tipo de ficheiro (ex. 1 um ficheiro, 2 um directrio).
Nmero do Inode Dimenso do Registo Dimens o do nome Tipo Nome

0 12 24 40

54 79

1 1 1 1

2 2 6 6

1 2 6 7

2 2 1 1

. . c m

\0 . a a

\0 \0 r r

\0 \0 l q o u s e \0 s \0 \0

23 256

28

Grupos e Blocos
A arquitectura x86 impe que:
um disco possua um MBR no incio do disco, e um bloco de boot no incio de cada partio.

Para alm do bloco de boot, uma partio EXT2 constituda por :


vrios grupos de blocos de dados cada grupo de blocos de dados contm os meta-dados que descrevem a informao neles contida
ex. quais os blocos ocupados, quais os blocos livres, que blocos pertencem a um dado ficheiro, etc.), (ex. quantos grupos de blocos tem cada partio, quantos blocos tem cada grupo, qual a dimenso dos blocos, etc.).

mais os meta-dados que descrevem a estrutura global da partio

Deste modo, os meta-dados que descrevem a estrutura da partio encontram-se replicados pelos vrios grupos de blocos e os meta-dados de cada grupo de blocos so guardados perto da informao a que se referem.
Disco MBR Partio 0 Partio 1 Partio n x86

Bloco de boot Grupo de Blocos 0

Grupo de blocos N

Ext2

Bitmap Tabela de Superbloco Descritores Bitmap dos grupos dos blocos dos inodes inodes Metadata

Blocos de dados

Ext2

Grupos e Blocos (cont.)


A diviso das parties em grupos de blocos de dados foi introduzida pela primeira vez no Berkley Fast File System (BFS):
objectivo duplo de melhorar o seu desempenho em discos muito grandes e tornar os sistemas de ficheiros mais tolerantes a faltas tpicas dos discos.

O agrupamento dos meta-dados e dos dados em posies do disco no muito distantes optimiza a pesquisa de informao no disco:
comum aceder-se alternadamente aos meta-dados de um ficheiro e ao seu contedo se esta informao estiver muito longe uma da outra, o tempo de latncia no acesso informao no disco muito maior

Uma das faltas tpicas dos discos a falha de alguns dos seus sectores, sem que o disco deixe de funcionar completamente:
frequente os sectores inutilizados serem consecutivos, i.e. quando falha um sector a probabilidade do seu vizinho tambm falhar maior que as dos restantes sectores com o BFS, a falha de um sector que contm os meta-dados de um grupo de blocos s afecta aquele grupo de blocos numa situao sem diviso em grupos uma falha nos meta-dados inutilizaria a partio.

29

Superbloco
A informao global sobre todos os grupos de blocos de uma partio est guardada no que designado por super bloco. O super bloco :
um bloco que contm informao fundamental para a interpretao do contedo da partio
ex. nmero de sectores, dimenso dos sectores, nmero de inodes, etc.

est replicado em todos os grupos de blocos garantido assim que a falha de um s bloco no impede o disco de funcionar.

Tabelas de Inodes e Bitmaps


Cada partio tem um nmero mximo de inodes:
que servem para armazenar os inodes de todos os ficheiros da partio. logo, existe um nmero mximo de ficheiros, correspondente dimenso mxima da tabela de inodes

Dentro de uma partio:


um inode univocamente identificado pelo ndice dentro da tabela de inodes.

Para alm da tabela de inodes existem em cada partio ainda duas outras tabelas:
o bitmap de inodes - quais as posies livres o bitmap de blocos, - quais as posies ocupadas

30

Viso Global (sem/ VFS)


Processo

O programa contm um ponteiro para uma estrutura do tipo FILE.

programa
stdio
FILE* iobuf flush open/read/write/close Tabela de descritores do processo

A FILE mantida pela biblioteca stdio e contm um buffer e o file descriptor do ficheiro aberto. O buffer serve para optimizar as escritas e leituras. O fd identifica o ficheiro na tabela de descritores. possvel utilizar o fd directamente. A tabela de descritores contm uma entrada por cada ficheiro ou dispositivo aberto. A entrada 0 representa o dispositivo de entrada, a entrada 1 o dispositivo de sada e a 2 o dispositivo de sada para erros. Cada uma das entradas aponta para uma tabela global no ncleo

Ncleo
Tabela de Ficheiros abertos

Tabela de i-nodes

A tabela de ficheiros abertos com os apontadores os apontadores de escrita e leitura nos ficheiros, a indicao do tipo de acesso (leitura/escrita) e o nmero do primeiro bloco de ndice do ficheiro A tabela de i-nodes uma cache para os blocos de ndices dos ficheiros acedidos. Cada bloco de ndices referencia os blocos do disco que compem um ficheiro.

CACHE DISCO

Tabela de ficheiros abertos


A tabela de ficheiros abertos contm uma entrada para cada ficheiro aberto
podem existir mais do que uma entrada para o mesmo ficheiro. Basta para tal este ser aberto por processos diferentes.

No fork os ficheiros abertos pelo pai so partilhados pelo filho.


As entradas na tabela de ficheiros abertos tambm so partilhadas. Deste modo os cursores de leitura e escrita so partilhados o que permite direccionar a sada de pai e filho para o mesmo ficheiro sem que o ltimo apague a sada o primeiro.

31

Tabelas de Ficheiros
user file descriptor table file table inode table 2 | file A read write 1 | file B fd1 = open (fileA, O_RDONLY); fd2 = open (fileB, O_WRONLY); fd3 = open (fileA, O_RDWR);

r/w

file table contem: Cursor que indica a posio actual de leitura/escrita modo como o ficheiro foi aberto processos pai e filho: partilham file table

uma por cada processo

partilhadas por todos os processos

Estruturas em Memria - VFS


A maioria das estruturas em memria primria de suporte ao sistema de ficheiros esto agrupadas no conceito do VFS. O objectivo do VFS :
a criao do conceito de sistema de ficheiros comum, virtual, que suporta vrios sistemas de ficheiros nativos, em simultneo.

Neste modelo:
cada ficheiro manipulado por um conjunto de operaes (leitura, escrita, abertura, etc.) diferente, dependendo do sistema de ficheiros nativo em que esto armazenados

32

Um nico Sistema de Ficheiros


Processo

programa
stdio
FILE*

iobuf flush

open/read/write/close

Tabela de descritores do processo

Tabela de Ficheiros abertos

Cdigo de manipulao das estruturas

Tabela de i-nodes

CACHE

Leitura cache. Leitura a tabela Leitura

de blocos do disco para a de i-nodes do disco para de i-nodes de directrios

Mais do que um Sistema de ficheiros


Cada entrada: Processo - designada por VFS programa superblock. FILE* iobuf - contm informaes sobre stdio flush cada sistema de ficheiros - contm um vector de ponteiros open/read/write/close para funes que sabem ler de o descritores do processo Tabela sistema de ficheiros.

Tabela de Ficheiros abertos

Tabela de Cdigo de descritores manipulao de sistemas das estruturas de ficheiros

Tabela de i-nodes

CACHE

Cdigo de manipulao das estruturas

Cdigo de manipulao das estruturas

Cada entrada da Tabela de ficheiros abertos e cada entrada da tabela de inodes contm um apontador para o vector de funes que sabe manipular o sistema de ficheiros onde este se encontra.

33

Sistemas de Ficheiros virtuais


Processo

programa
stdio
FILE*

iobuf flush

open/read/write/close

Tabela de descritores do processo

Alguns sistemas de ficheiros no tm suporte fsico. A informao mantida Tabela de Cdigo de noutros locais e.g. descritores manipulao de sistemas Ncleo, rede das estruturas
de ficheiros

Tabela de Ficheiros abertos

Tabela de i-nodes

CACHE

Cdigo de manipulao das estruturas

Cdigo de manipulao das estruturas

Ncleo Rede

34

Anda mungkin juga menyukai