Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistema de Ficheiros
Descrio genrica
introduo organizao de nomes tipos de ficheiros proteco no acesso relao com E/S
8/28/2003
Sistemas Operativos
Sistema de Ficheiros
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
8/28/2003
Sistemas Operativos
Salrios
8/28/2003
8/28/2003
Sistemas Operativos
Modelo Computacional
Criao, abertura, fecho e eliminao de ficheiros:
Criar ( Nome, Proteco ) Fd = Abrir ( Nome, Modo ) Fechar ( Fd ) Eliminar ( Nome ) Operaes complexas sobre ficheiros:
LerAtributos ( Nome, Tampo ) AlterarAtributos ( Nome, Tampo ) Mover (NomeOriginal, NovoNome )
Sistemas Operativos
directrio corrente mantido para cada processo como parte do seu contexto
8/28/2003
Sistemas Operativos
Organizao Hierrquica
/
etc src
usr bin
unix tty00
dev tty01
passwd
8/28/2003
Sistemas Operativos
MS-DOS
espao de nomes uniforme para ficheiros e directrios, tendo os dispositivos que ser referenciados de modo diferente (explcita ou implicitamente); existe o conceito de dispositivo corrente e de directrio corrente por dispositivo
exemplo: A:\b\c\d
VMS
no possui uniformidade de nomes exemplo: a:[b.c]d
8/28/2003
Sistemas Operativos
b c x d y /dev/hd1 z f e
8/28/2003
Sistemas Operativos
11
Tipos de Ficheiros
O tipo de um ficheiro depende do seu contedo e forma de acesso: contedo: conjunto de registos (de dimenso fixa ou varivel) Forma de acesso aos registos:
acesso sequencial:
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:
pode-se aceder directamente a um registo sem aceder aos anteriores no se pode inserir um novo registo entre outros dois
8/28/2003
Sistemas Operativos
12
Proteco
Estabelecimento da proteco quando o ficheiro criado:
A informao de proteco guardada no descritor do ficheiro e est normalmente relacionada com o utilizador responsvel pela sua criao, o qual reconhecido como o seu dono o dono de um ficheiro pode ser alterado durante o tempo de vida de um ficheiro
Verificao dos direitos de acesso de um processo a um ficheiro pelas funes sistema do sistema de ficheiros Especificao dos direitos de acesso a um ficheiro:
listas de acesso para mltiplos utilizadores (Multics, opcional no VMS, Windows) definio de grupos de utilizadores e de direitos de acesso a um ficheiro para o dono, para um grupo de utilizadores e para os demais utilizadores (UNIX)
8/28/2003 Sistemas Operativos 13
comparao:
a segunda opo aumenta o nmero de funes sistema para manipular o sistema de ficheiros (devido existncia dos perifricos virtuais) mas facilita a redireco das leituras e escritas para ficheiros, terminais, impressoras ou outros perifricos
8/28/2003
Sistemas Operativos
14
8/28/2003
Sistemas Operativos
15
superbloco:
informao geral de descrio do sistema de ficheiros do dispositivo
8/28/2003
Sistemas Operativos
16
Bloco de Boot
Tabela de parties
Partio 0
Partio 1
Partio n
Superbloco
Directrio de dados
FCBs ou inodes
Blocos
Ficheiro
Directrio
8/28/2003
Sistemas Operativos
17
total
waste 0.0 1.1 7.4 8.8 11.7 15.4 29.4 62.0
data
waste 0.0 1.1 1.1 2.5 5.4 12.3 27.8 61.2
inode
waste 0.0 0.0 6.3 6.3 6.3 3.1 1.6 0.8 Percent data only, no separation between files data only, files start on 512-byte boundary data + inodes, 512-byte block data + inodes, 1024-byte block data + inodes, 2048-byte block data + inodes, 4096-byte block data + inodes, 8192-byte block data + inodes, 16384-byte block
8/28/2003
Sistemas Operativos
18
Discos Magnticos
so compostos por:
um conjunto de pratos sobrepostos 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
8/28/2003
Sistemas Operativos
19
8/28/2003
Sistemas Operativos
20
10
b) menor deslocamento
c) elevador
d) elevador circular
8/28/2003
Sistemas Operativos
21
Entrelaamento - Interleave
A ordenao dos sectores com um factor de entrelaamento permite que se possa aceder a mltiplos sectores por pista. Consegue-se tratar um bloco e conseguir ler o sector seguinte porque a ordem lgica est desfasada da ordem fsica.
7 26 13 32 19 6 25 12 31 18 5 24 11 30 17 4 23 10 29 20 1 14 27 8 21 2 15 28 9 22 3 16
8/28/2003
Sistemas Operativos
22
11
Organizao Sequencial
8/28/2003
Sistemas Operativos
23
Desvantagem
Tamanho da tabela directamente proporcional ao tamanho do disco
8/28/2003 Sistemas Operativos 24
12
entrada de uma directoria em CP/M Entrada de 32 bytes Blocos de 1kB Durante o arranque:, calculado um bitmap dos blocos livres a partir de todas as entradas e carregado em memria Limite mximo de 16 blocos resolvido com vrios extents p/ ficheiro
8/28/2003 Sistemas Operativos 25
entrada de 32 bytes de directoria em MS-DOS Usa uma FAT: 12, 16 ou 32 (28 bits)
8/28/2003 Sistemas Operativos 26
13
Partio mxima para diferentes tamanhos de blocos As entradas a branco indicam combinaes impossveis (no permitidas)
8/28/2003 Sistemas Operativos 27
entrada de uma directoria usada no Windows 98 (estendida do MS-DOS utiliza os 10 bytes antes reservados) Ficheiros com nomes grandes: entrada normal com nome do tipo: SISTEM~1.DOC, antecedida de entradas adicionais especiais que guardam o nome completo Problema: Como distingui-las e como manter compatibilidade com o DOS?
8/28/2003 Sistemas Operativos 28
14
Bytes
Checksum
Parte de uma entrada de um ficheiro com um nome grande em Windows 98 Esta entrada antecede a entrada com o nome MS-DOS Checksum entrada permite saber a que ficheiro pertencem caso este seja apagado em modo MS-DOS
8/28/2003 Sistemas Operativos 29
Entrada principal e adicionais distinguidas atravs de atributos invlidos para o MS-DOS Cada entrada adicional armazena 13 caracteres do nome de ficheiro Entradas adicionais de cada ficheiro dispostas de forma invertida ltima entrada adicional tem nmero de sequncia adicionado a 64 (set ao bit 6) Ficheiro: The quick brown fox jumps over the lazy dog
8/28/2003 Sistemas Operativos 30
15
entrada de uma directoria em ISO 9660 blocos de 2048 bytes (Modo-2: dados) no h gesto de espao livre/ocupado ficheiros dispostos sequencialmente no CD-ROM
8/28/2003 Sistemas Operativos 31
Os blocos de ndices so guardados em blocos de dados e s so acedidos quando necessrio Adapta-se a qualquer dimenso do disco A estrutura de ndices pode ser hierarquizada para optimizar o acesso directo em ficheiros de grande dimenso soluo do Unix
8/28/2003 Sistemas Operativos 32
16
Acesso a Ficheiros
utilizao de trs etapas para aumentar o desempenho:
abertura do ficheiro dado o nome
pesquisado o directrio, copiado o descritor do ficheiro para memria (tabela de ficheiros abertos) e devolvido ao utilizador um identificador de ficheiro aberto verificar os direitos de acesso do processo ao ficheiro em causa
fecho do ficheiro
Tabela de ficheiros abertos Identificador de ficheiro aberto descritor Espao de end. do utilizador Espa end. Espao de end. do ncleo Espa end. n
8/28/2003
33
8/28/2003
Sistemas Operativos
34
17
8/28/2003
Sistemas Operativos
35
18
8/28/2003
Sistemas Operativos
37
Introduo
O Sistema de Ficheiros (SF) do Linux permite aceder a vrios tipos de sistemas de ficheiros (FAT, NTFS, EXT2, etc.).
Isto conseguido pelo VFS que descreveremos adiante.
O SF v os discos como vectores de blocos. O sistema de ficheiros s descreve a organizao dos ficheiros pelos blocos, a escrita e leitura dos blocos efectuada pelos gestores dos dispositivos. A identificao de um ficheiro aberto por um processo um nmero inteiro, denominado file descriptor mantido na tabela de ficheiros abertos do processo.
8/28/2003 Sistemas Operativos 38
19
Departamento de Engenharia Informtica 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. Sistemas Operativos 39
CACHE DISCO
8/28/2003
8/28/2003
Sistemas Operativos
40
20
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
i-nodes
Estruturas (geralmente) persistentes
Algumas tm que ser recriados sempre que se liga o sistema.
Contm a identificao dos blocos no disco que fazem parte de um ficheiro. Existe um e s um i-node por ficheiro. Existem muitos tipos de i-node
Ext2, VFS, BSD Todos tm estruturas diferentes mas tm o mesmo objectivo.
8/28/2003
Sistemas Operativos
44
21
Metadata
Cada partio est dividida em grupos de blocos. Cada grupo contm um conjunto de blocos com informao de ficheiros e um conjunto de informao sobre a estrutura desses ficheiros (metadata). Os blocos de um ficheiro podem estar distribudos por vrios grupos, mas devem preferencialmente estar no mesmo grupo. O objectivo dos grupos manter a metadata perto dos dados que descreve, e assim reduzir os efeitos da corrupo de uma parte do disco.
8/28/2003 Sistemas Operativos 46
22
Inode Table
Contm uma tabela com os descritores dos ficheiros (i-nodes).
Inode Bitmap
Contm um vector de bits que indica quais os i-nodes livres.
Block Bitmap
Contm um vector de bits, que indica quais os blocos livres.
I-node do Ext2
Blocos de disco
12 entradas directas
TBD Tamanho bloco de dados TR Tamanho referncia Bmax N Blocos mximo de um ficheiro Fmax dimenso mxima de um ficheiro Bmax= 12 + TBD/TR + (TBD/TR)2 + (TBD/TR)3 com TBD 1024 e TR = 4, temos Bmax 16 Megablocos Operativos 8/28/2003 Sistemas Fmax 16 Gigabytes
48
23
Directrio no Ext2
Um directrio um ficheiro como os restantes, que tem uma estrutura especfica Um ficheiro do tipo directrio contm um vector de entradas, em que cada entrada descreve um ficheiro desse directrio. Cada entrada contm o nome do ficheiro a sua dimenso e o n do i-node que o representa. Podem existir vrios ficheiros com o mesmo i-node. So os hard links. Os soft ou symbolic links so ficheiros com o seu i-node com uma estrutura prpria.
ln s ficheiroAlvo nomeDoLink
8/28/2003 Sistemas Operativos 49
Ficheiro Directrio
Inode 0 12 24 40 54 79 23 256
8/28/2003
Sistemas Operativos
50
24
Abertura de um ficheiro
/home/carlos.ribeiro/.cshrc 1. Procurar o i-node do directrio raiz / no superbloco do dispositivo principal. 2. Obter os blocos desse directrio e encontrar a entrada home 3. Ler o i-node do ficheiro tipo directrio home. 4. Ler os blocos de dados do home. 5. Encontrar a entrada carlos.ribeiro e ler o seu i-node. 6. Encontrar a entrada de .cshrc e ler o seu i-node e deste os blocos com a informao.
Sistemas Operativos 51
8/28/2003
25
programa
stdio
FILE*
iobuf flush
open/read/write/close
Tabela de i-nodes
CACHE
Leitura de blocos do disco para a cache. Leitura de i-nodes do disco para a tabela de i-nodes 8/28/2003 Leitura de directrios
Sistemas Operativos
53
Tabela de i-nodes
CACHE
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. 54
26
programa
stdio
FILE*
iobuf flush
open/read/write/close
Alguns sistemas de ficheiros no tm suporte fsico. A informao mantida Tabela de Cdigo de noutros locais e.g. descritores manipulao Ncleo, rede sistemas de das estruturas
de ficheiros
Tabela de i-nodes
CACHE
Ncleo Rede
55
Organizao global
mount t ntfs o rw /dev/hd1 /ficheirosWindows
Inode do directrio /ficheirosWindows marcado como mountpoint
NTFS FAT
MountPoints
8/28/2003 Sistemas Operativos 56
27
Caches
Existem trs tipos de caches no sistema de ficheiros do linux:
Cache de blocos de disco. Cache de i-nodes. Cache de directrios.
8/28/2003
Sistemas Operativos
57
Cache de Blocos
o ncleo poderia ler e escrever directamente para o disco em todos os acesso a ficheiros:
implicaria elevados tempos de resposta do sistema devido aos tempos de acesso ao disco
28
8/28/2003
Sistemas Operativos
59
29
Cache de blocos
Hashed pelo device e pelo n do bloco Listas com os blocos utilizados por ordem de utilizao e pelo estado do bloco. Listas de blocos livres organizadas por dimenso do bloco. Note-se que a cache para ser utilizada por vrios discos com diferentes dimenses de bloco
Listas LRU
Tabela de Hash
Dirty Locked Clean
8/28/2003
Estrutura com o endereo e dimenso do buffer com o bloco Sistemasde disco Operativos
61
Cache (cont.)
para cada radical da funo de hash, os blocos so colocados numa lista duplamente ligada lista de blocos livres gerida em LRU. um bloco no est livre quando est a ser usado para uma operao de leitura/escrita do/para o disco ou para o espao de endereamento do processo depois da operao antes referida, o bloco est livre quando o SO quer ler/escrever um bloco procura primeira na cache (funo de hash) se o bloco procurado no est em memria, obtm o primeiro da lista de blocos livres mdulo 0 mdulo 1 mdulo 2 mdulo 3
16 4 28
37
17
13
22
38
19
39
15
8/28/2003
Sistemas Operativos
62
30
Cache de Blocos
Na escrita no h acesso ao disco:
o bloco fica marcado como delayed write o bloco fica tambm na lista de blocos livres antes do bloco ser reutilizado, os dados so escritos para disco periodicamente os blocos marcados como delayed write so escritos em disco mdulo 0 mdulo 1 mdulo 2 mdulo 3
19 39 16 4 28
37
17
13
22
38
15
Vantagem:
Apenas se efectua a escrita da ultima actualizao do bloco. Se o bloco for imediatamente lido no h acesso ao disco lista de blocos livres
Desvantagem;
A informao permanece voltil durante algum tempo e fica sujeita a perder-se se existir uma falha da mquina.
8/28/2003 Sistemas Operativos 63
Cache de i-nodes
Tabela de inodes Os i-nodes candidatos substituio so os que tm o contador de utilizaes a zero.
Tabela de Hash
I-nodes. Contm um contador de utilizaes. Cada i-node pode estar a ser usado por mais do que um descritor de ficheiro.
Sistemas Operativos 64
31
Cache de directrios
Hashed pelo device e pelo nome do directrio LRU Least Recent Used com dois nveis. 1.Cada nova entrada inserida no final da lista de nvel um. 2.Quando 1 entrada acedida segunda vez colocada no final da lista de nvel dois. 3.De cada vez que se coloca um elemento no final de cada uma das listas e no existem mais blocos para reservar removido o elemento que est no topo dessa lista.
Tabela de Hash
Nvel I
Nvel II
Cada entrada contm um componente do pathname, o device onde esse ficheiro est e o inode.
8/28/2003
Sistemas Operativos
65
MapearFicheiro
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 indicado por Fd :
mapeado a partir da posio indicada pelo parmetro posio, no endereo de memria a indicado pelo parmetro endereo, numa extenso indicada pelo parmetro dimenso.
A partir deste momento possvel aceder directamente ao ficheiro acedendo directamente s posies de memria indicadas.
8/28/2003 Sistemas Operativos 66
32
mmap
read/write
mmap
read/write
Cache de pginas
Cache de pginas
Cache de blocos
Cache de blocos
Disco
Disco
Verso 2.2
8/28/2003 Sistemas Operativos
Verso 2.4
67
Cache de Pginas
Inode Regio de memria Tabela de Hash de pginas Dirty Locked Clean Inode Regio de memria Dirty Locked Clean
8/28/2003
Sistemas Operativos
68
33
Se durante uma destas operaes existir uma falha do sistema, o ficheiro poder ficar corrompido.
8/28/2003
Sistemas Operativos
69
34
Journaling
O objectivo da camada do ncleo Journal Block Device (JBD) impedir que o sistema de ficheiros fique num estado inconsistente.
A JBD actualmente utilizada apenas pelo sistema de ficheiros EXT3 (terceira verso do sistema de ficheiros extend).
O JBD evita que uma operao de escrita seja parcialmente realizada, sendo efectuada de forma atmica. O JBD escreve os blocos a actualizar no journal e s depois de se ter assegurado que a informao j existe de forma persistente, que a actualiza nos blocos do sistema de ficheiros. Se acontecer uma falha nesse perodo o sistema operativo aquando do reincio pode recuperar e refazer a escrita pois ela estava registada no journal.
8/28/2003 Sistemas Operativos 71
Journaling
A dupla escrita, no journal e no sistema de ficheiros, introduz uma penalizao no desempenho do sistema pelo que muitos sistemas de journal s garantem a consistncia dos metadados do sistema de ficheiros. O JBD permite configurar o tipo de journaling que se pretende efectuar, na associao do sistema de ficheiros a um directrio (mount). Para alm das duas opes j referidas o JBD fornece ainda uma terceira opo (por omisso) em que apenas os metadados so enviados para o journal, mas os blocos de dados relativos a um bloco de metadados so escritos primeiro que os metadados
8/28/2003
Sistemas Operativos
72
35