Click here to load reader

Sistemas de Ficheiros - groups.ist.utl.ptgroups.ist.utl.pt/~leic-so.daemon/2011-2012/teoricas_alameda/06... · Sistemas de Ficheiros Sistemas Operativos 2011 -2012 Sistema de Ficheiros

  • View
    213

  • Download
    0

Embed Size (px)

Text of Sistemas de Ficheiros -...

  • 1

    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.

  • 2

    Sistema de Ficheiros (cont.)

    Por razes de simplicidade e facilidade de gesto, a meta-informao 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.

  • 3

    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.

  • 4

    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

    pjpf

    /

    users binetc usr unix dev

    sh date who passwd src bintty00 tty01

    jog avz

  • 5

    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

  • 6

    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.

    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.

    /

    ba

    c

    d

    e

    x

    yz

    /dev/hd0

    /dev/hd1

    mount t /dev/hd1 /b

    f

    Nomes e Extenses

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

    Extenso Descrio

    .c Cdigo fonte em C.

    .obj Cdigo objecto resultante de uma compilao.

    .exe Cdigo executvel.

    .htmlHipertexto para ser visualizado por navegador de

    rede

    .dat Ficheiro de dados.

    .mp3 Representao comprimida de som digital

  • 7

    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

  • 8

    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.

  • 9

    Abertura, criao e fecho de ficheiros

    Retorno Nome Parmetros Descrio

    fd := Abrir (Nome, Modo) Abre um ficheiro

    fd := Criar (Nome, Proteco) Cria um novo ficheiro

    Fechar (Fd) Fecha um ficheiro

    Operaes sobre ficheiros abertosNome Parmetros Descrio

    Ler (Fd, Tampo, bytes) L de um ficheiro para um tampo de memria

    Escrever (Fd, Tampo, bytes) Escreve um tampo para um ficheiro

    Posicionar (Fd, Posio) 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)

  • 10

    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 Parmetros Descrio

    Copiar (Origem, Destino) Copia um ficheiro

    Mover (Origem, Destino)Move um ficheiro de um directrio

    para outro

    Apagar (Nome) Apaga um ficheiro

    LerAtributos (Nome, Tampo) L atributos de um ficheiro

    EscreverAtributos (Nome, Atributos) Modifica os atributos

    Operaes sobre directriosNome Parmetros Descrio

    ListaDir (Nome, Tampo) L o contedo de um directrio

    MudaDir (Nome) Muda o directrio por omisso

    CriaDir (Nome, Proteco) 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 Parmetros Descrio

    MapearFicheiro (fd, posio, endereo, dimenso) Mapeia um ficheiro em memria

    DesmapearFicheiro (endereo, dimenso) Elimina o mapeamento

    Operaes de gesto dos sistemas de ficheiros

    Nome Parmetros Descrio

    Montar (Directrio, Dispositivo) Monta um dispositivo num directrio

    Desmontar (Directrio) Desmonta o dispositivo montado no directrio

  • 11

    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.

  • 12

    Caractersticas Fsicas dos Discos Magnticos

    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.

    Brao da cabea

    Cabea de leitura/escrita

    Prato

    Sector a ser acedido

    Sentido de rotao dos pratos

    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 Forma de clculo Valor tpico

    Tempo transferncia Tempo de revoluo / sectores por pista 17s

    Tempo de posicionamento Tempo de posicionamento da cabea na pista 4-8ms

    Tempo latncia mdio Tempo de revoluo / 2 4ms

  • 13

    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

  • 14

    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

  • 15

    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.

  • 16

    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.

  • 17

    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

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

    Dim

    enso

    *dad

    os

    Nom

    e

    Dim

    enso

    *dad

    os

    Nom

    e

    Dim

    enso

    D

    ad

    os

    D

    ado

    s

    *dad

    os

    D

    ad

    os

    Nom

    e

    Directrio Dados

  • 18

    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.

  • 19

    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.

    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.

    Estrutura de um sistema de ficheiros do tipo FAT

  • 20

    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.

    As entradas da tabela de alocao: 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.

    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)

  • 21

    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

    No Linux tem o nome: de tabela de inodes

    No Windows tem o nome: MFT (Master File Table).

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

    Directrio Ficheiro

    Blocos Descritores de ficheiros

    Tabela de alocao

    Descritor do volume

    Bloco de

    boot

    Volume

  • 22

    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 Nmero Nmero Nmero

    do do do do IIIInodenodenodenode

    DimensoDimensoDimensoDimenso

    do do do do

    RRRRegistoegistoegistoegisto

    DimensDimensDimensDimens

    oooo

    do nomedo nomedo nomedo nome

    TipoTipoTipoTipo NomeNomeNomeNome

    0 1 2 1 2 . \0 \0 \0

    12 1 2 2 2 . . \0 \0

    24 1 6 6 1 c a r l o s \0 \0

    40 1 6 7 1 m a r q u e s \0

    54

    79

    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)

  • 23

    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.

  • 24

    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

  • 25

    Sistema de Ficheiros

    Linux

    Sistema de Ficheiros do LinuxOperaes Genricas Linux

    SimplesFd := Abrir (Nome, Modo)Fd := Criar (Nome, Proteco)

    int open( const char *path, int flags,mode_tmode)

    Fechar (Fd) int close(int fd)

    Ficheiros Abertos

    Ler (Fd,Tampo, Bytes) int read(int fd, void *buffer, size_t count)

    Escrever (Fd,Tampo, Bytes) int write(int fd, void *buffer, size_t count)

    Posicionar (Fd,Posio) int lseek(int fd, off_toffset, int origin)

    Complexas

    Copiar (Origem, Destino)

    int symlink( const char *oldpath,const char *newpath)

    int link( const char *oldpath,const char *newpath)

    Mover (Origem, Destino) int rename( const char *oldpath,const char *newpath)Apagar (Nome) int unlink(const char *path)

    int dup(int fd), int dup2(int oldfd,int newfd)

    LerAtributos (Nome,Tampo) int stat( const char *path,struct stat *buffer)

    EscreverAtributos (Nome,Atributos)

    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)

    Ficheiros em

    memriaMapearFicheiro(Fd,pos,endereo,dim) void *mmap(void*addr, size_t len, int prot,int flags, int fd, off_t offset)

    DesMapearFicheiro(endereo,dim) int munmap(void*addr, size_t len)

    Directrios

    ListaDir (Nome, Tampo) int readdir(int fd, structdirent *buffer,unsigned int count)MudaDir (Nome) int chdir(const char *path)CriaDir (Nome, Proteco) int mkdir(const char *path,mode_tmode)

    RemoveDir(Nome) int rmdir(const char *path)

    Sistemas de

    FicheirosMontar (Directrio, Dispositivo)

    int mount(constchar *device,const char *path,const char *fstype,unsigned long flags,constvoid *data)

    Desmontar (Directrio) int umount(constchar*path)

  • 26

    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 Descrio

    i_mode Tipo de ficheiro e direitos de acesso

    i_uid Identificador do utilizador

    i_size Dimenso do ficheiro

    i_atime Tempo do ltimo acesso

    i_ctime Tempo da ltima alterao do inode

    i_mtime Tempo da ltima alterao do ficheiro

    i_dtime Tempo da remoo do ficheiro

    i_gid Identificador do grupo do utilizador

    i_links_count Contador de hard links

    i_blocks Nmero de blocos ocupado pelo ficheiro

    i_flags Flags vrias do ficheiro

    i_block[15] Vector de 15 unidades para blocos de dados

    Outros campos ainda no utilizados

  • 27

    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

    Blo

    cos d

    e dad

    os

    Blocos ndices

    de 1 nvel

    Blocos ndices

    de 2 nvel

    Trs nveis

    de indireco

    Proteco

    Datas

    Etc.

    ino

    de

    B bytes

    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 dadosR 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

  • 28

    Aceder a um Ficheiro

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

    Para tal preciso traduzir um tuplo 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 Nmero Nmero Nmero

    do do do do IIIInodenodenodenode

    DimensoDimensoDimensoDimenso

    do do do do

    RRRRegistoegistoegistoegisto

    DimensDimensDimensDimens

    oooo

    do nomedo nomedo nomedo nome

    TipoTipoTipoTipo NomeNomeNomeNome

    0 1 2 1 2 . \0 \0 \0

    12 1 2 2 2 . . \0 \0

    24 1 6 6 1 c a r l o s \0 \0

    40 1 6 7 1 m a r q u e s \0

    54

    79

    23

    256

  • 29

    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.),

    mais os meta-dados que descrevem a estrutura global da partio (ex. quantos grupos de blocos tem cada partio, quantos blocos tem cada grupo, qual a dimenso dos blocos, etc.).

    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.

    Superbloco Descritores

    dos grupos

    Bitmap

    dos blocos

    Bitmap

    dos inodes

    Tabela de

    inodes

    Blocos de

    dados

    Disco

    Bloco de boot Grupo de Blocos 0 Grupo de blocos N Ext2

    Ext2

    x86

    Metadata

    MBR Partio 0 Partio 1 Partio n

    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.

  • 30

    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

  • 31

    Viso Global (sem/ VFS)

    Ncleo

    open/read/write/close

    programa

    stdio FILE* iobuf

    flush

    Processo

    Tabela de descritores do processo

    Tabela de Ficheiros abertos

    Tabela de i-nodes

    CACHE

    DISCO

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

    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

    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.

    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.

  • 32

    Tabelas de Ficheiros

    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

    fd1 = open (fileA, O_RDONLY);

    fd2 = open (fileB, O_WRONLY);

    fd3 = open (fileA, O_RDWR);

    user file

    descriptor

    tablefile

    table

    inode

    table

    uma por

    cada processopartilhadas por todos os processos

    read

    write

    r/w

    2 | file A

    1 | file B

    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

  • 33

    Um nico Sistema de Ficheiros

    open/read/write/close

    programa

    stdio FILE* iobuf

    flush

    Processo

    Tabela de descritores do processo

    Tabela de Ficheiros abertos

    Tabela de i-nodes

    CACHE

    Cdigo de manipulao das estruturas

    Leitura de blocos do disco para a cache.Leitura de i-nodes do disco para a tabela de i-nodesLeitura de directrios

    Mais do que um Sistema de ficheiros

    open/read/write/close

    programa

    stdio FILE* iobuf

    flush

    Processo

    Tabela de descritores do processo

    Tabela de Ficheiros abertos

    Tabela de i-nodes

    CACHE

    Cdigo de manipulao das estruturas

    Cdigo de manipulao das estruturas

    Cdigo de manipulao das estruturas

    Tabela de descritoresde sistemas de ficheiros

    Cada entrada:- designada por VFS

    superblock.- contm informaes sobre

    cada sistema de ficheiros- contm um vector de ponteiros

    para funes que sabem ler o sistema de ficheiros.

    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.

  • 34

    Sistemas de Ficheiros virtuais

    open/read/write/close

    programa

    stdio FILE* iobuf

    flush

    Processo

    Tabela de descritores do processo

    Tabela de Ficheiros abertos

    Tabela de i-nodes

    CACHE

    Cdigo de manipulao das estruturas

    Cdigo de manipulao das estruturas

    Cdigo de manipulao das estruturas

    Tabela de descritoresde sistemas de ficheiros

    NcleoRede

    Alguns sistemas de ficheiros no tm suporte fsico. A informao mantida noutros locais e.g. Ncleo, rede