Академический Документы
Профессиональный Документы
Культура Документы
Sistema de Ficheiros
Introduo
Problema
Como armazenar grandes quantidades de informao e de forma permanente, num suporte que o permita: disquete, disco, CD, etc. ?
Soluo
sobrepor organizao fsica do "meio" (sectores, ...) uma organizao em "peas" de informao lgica: ficheiros
Introduo
Sistema
Ficheiros Nome
Nome
Dimenso
MS/DOS tamanho fixo 8+3 (extenso) Linux tamanho varivel (limite de 255 caracteres)
Extenso formal ou informalmente indicia a natureza (ou contedo) do ficheiro Case sensitive distinguir letras maisculas e minsculas
Unix: case sensitive Windows : case insensitive (por razes de compatibilidade com verses anteriores e MS/DOS)
Ficheiros Extenso
Extenso
Windows
Extenses tm significado formal no SO ex: ficheiro.exe um executvel Pode-se relacionar uma extenso com uma aplicao (registry) Permite invocar uma aplicao (isto executar um programa) abrindo um ficheiro com a extenso correspondente ex: ficheiro.doc => executar programa winword.exe (passando o ficheiro como argumento)
Unix
As extenses so convencionais (tratadas pelo utilizador) e, eventualmente, foradas pelos programas que tratam determinado tipo de ficheiros ex: compilador .c .o;
Ficheiros Extenso
Extenses
alguns exemplos
.c .cpp .h .java
ficheiros fonte c/c++, java (texto); objecto; livrarias compiladas; (binrio); ficheiros com texto marcado para internet (texto); imagens;contedos multimdia; (binrio); aplicaes microsoft windows; (binrio) contentor de outros ficheiros, comprimidos; (binrio);
6
.o .obj .lib
.zip .Z
Ficheiros Contedo
Contedo
fsico
Ficheiros de texto
Contedo fsico: Sequncia de caracteres ASCII, incluindo alguns caracteres especiais: 10 (Line feeder), 13 (Carriage return) Contedo visvel directamente: ex: > cat /etc/passwd O contedo funcional pode ser o mais diverso: ex: fonte c; script shell; dados xml
Ficheiros Contedo
Contedo
fsico
Ficheiros binrios
Contedo fsico no interpretvel como um conjunto de caracteres ASCII No visvel directamente; ex: > cat /bin/cat; reset Tratveis apenas por programas (ou os prprios ficheiros so programas)
Ficheiros Contedo
/* escrever o nmero 37 num ficheiro, em formato de texto */ #include <stdio.h> int main() { int i = 37; FILE *fp = fopen ( "teste.txt", "w"); fprintf ( fp, "%d", i ); fclose(fp); }
/* escrever o nmero 37 num ficheiro, em formato binrio */ #include <stdio.h> int main() { int i = 37; FILE *fp = fopen ( "teste.txt", "w"); fwrite ( &i, sizeof(i), 1 , fp ); fclose(fp); }
Ficheiros Acesso
Ficheiros
de acesso sequencial
Localizar lendo o ficheiro, desde o incio at posio pretendida Ex: dado um ficheiro de texto com vrios nmeros inteiros, um em cada linha para obter o 13 nmero:
#include <stdio.h> main() { int i, n; FILE *fp = fopen("teste.txt", "r"; for ( i=1; i<= 13; i++) fscanf(fp, "%d", &n); }
10
Ficheiros Acesso
Ficheiros
de acesso directo
Possibilidade de localizar uma posio ("seek"), com base numa chave ou outra indicao Ex: dado um ficheiro de texto com vrios nmeros inteiros obter o 13 nmero:
#include <stdio.h> main() { int n; FILE *fp = fopen("teste.txt", "rb" ); fseek ( fp, (long) 12 * sizeof(int) , SEEK-SET ); fread ( &n, sizeof(int), 1, fp); }
11
Ficheiros Atributos
Atributos
Caractersticas do ficheiro (alm do nome e contedo) que o SO gere, para efeitos de controlo e administrao
Alguns
Ficheiros Operaes
Operaes
de manipulao de um ficheiro
Ficheiros Operaes
Operaes
de manipulao de um ficheiro
14
Directrios
rvore
de directrios e ficheiros
15
Discos e parties
Disco:
organizao tpica
A formatao de baixo nvel divide o disco em sectores (blocos) Em cima dessa formatao, o disco dividido em parties (uma ou mais por disco) Cada partio pode ter um sistema de ficheiros diferente
Master
O sector 0 do disco contm o MBR e a tabela de parties MBR programa de boot ("arranque") do disco Tabela de parties lista das parties existentes no disco Tabela de parties
Disco
MBR
Partio 1
Partio 2
16
Discos e parties
Boot block
Super-block
Directrios e ficheiros
Directrios e ficheiros
17
contgua
Vantagens:
Implementao simples para cada ficheiro, basta o SO saber o bloco inicial e final (ou n de blocos) Eficiente em termos de leitura sempre bloco contguos
a a a b b b b b b c c d d d d e e
f
N de blocos 3 6 2 4 2 5 18
Ficheiro a b c d e f
Incio 0 3 9 11 15 17
Desvantagem:
Fragmentao resultante da remoo / criao de novos ficheiros, que s pode ser eliminada com compactao Ex: removeu-se a,c e e; um ficheiro d que ocupa 4 blocos s pode ser colocado aps uma compactao...
f f f f
a a a b b b b b b c c d d d d e e f
b b b b b b
d d d d
19
ligada de blocos
Mantm-se uma lista ligada dos blocos ocupados por cada ficheiro; Em cada bloco, para alm dos dados, guarda-se tambm um apontador para o bloco seguinte do mesmo ficheiro
Vantagens:
Todos os blocos podem ser ocupados (a fragmentao no problemtica) Ao SO basta saber a localizao do 1 bloco.
20
Desvantagens:
Acesso sequencial para chegar a um bloco preciso passar pelos anteriores Em ficheiros que ocupem muitos blocos espalhados pela partio o acesso aos ltimos blocos demasiado lento Ex: para aceder ao ltimo bloco de um ficheiro com 1000 blocos ser necessrio que sejam lidos os 999 blocos anteriores O tamanho real de cada bloco diminudo pelo espao ocupado pelo apontador
21
Manter em memria uma tabela com uma representao da lista ligada de blocos. Em cada posio da tabela indica-se o bloco seguinte do ficheiro.
Vantagens
Tal como no modelo anterior, a fragmentao no problemtica Cada bloco utilizado integralmente para armazenamento de dados (ao contrrio do esquema anterior) Facilita o acesso directo para obter um bloco basta percorrer a FAT (mais rpido, pois percorre-se a memria e no o disco)
Desvantagem
A dimenso da FAT pode ser demasiado grande Ex: 20GB de disco , blocos de 1KB indexados com 4 Bytes A FAT ter uma dimenso de 80MBytes
22
Exemplo: FAT
10 11 12 13 14 15 16 17 18 19 20 ...
...
Ficheiro a b c
1 bloco 12 11 17
10 11 12 13 14 15 16 17 18 19 20
... 18 13 10 14 -1 0 0 20 -1 0 -1 ...
associar a cada ficheiro uma estrutura de dados contendo a localizao em disco e os atributos do ficheiro
O i-node contm um nmero limitado de blocos do ficheiro Para ficheiros de maior dimenso so atribudos ao i-node outros blocos que contm tabelas com ns de bloco extra O i-node contm todas as caractersticas do ficheiro, excepto o nome que figura no (ou nos) directrios onde o i-node includo Vantagens
A fragmentao no problemtica Para aceder a um ficheiro basta ter o respectivo i-node em memria (no necessrio dispor de toda uma tabela de alocao) Facilita a partilha de ficheiros atravs de hard links
24
...
Exemplo:
10 11 12 13 14 15 16 17 18 19 20 ...
I-node de a
Atributos de a 12 10 18 outros blocos: -
I-node de b
Atributos de b 11 13 14 15 16 17 19 outros blocos: Blocos extra 20 21 25
dos directrios
Um directrio basicamente uma lista de nomes, a cada um dos quais se associam os respectivos atributos e localizao em disco O directrio um ficheiro especial
Situaes tpicas:
O directrio contm os atributos do ficheiro e a localizao do primeiro bloco em disco - a partir do primeiro bloco localizam-se os restantes (ex: lista ligada, FAT,..) O directrio contm o nome do ficheiro e o endereo de uma estrutura que contm os atributos do ficheiro e sua localizao do em disco (ex: i-nodes)
Questes de implementao:
Lidar com nomes de dimenso varivel (fragmentao e compactao nos directrios) Procurar ficheiros em directrios grandes (utilizao de hash-tables e estruturas em rvore)
26
partilhados
27
Questes de Implementao
Dimenso
do bloco
Eficcia de leitura relao entre o tempo de leitura e a informao efectivamente obtida do disco
Aumenta com a dimenso do bloco menor overhead de posicionamento em cada leitura menor nmero de leituras necessrias para obter os dados
Eficcia de ocupao relao entre o espao fsico ocupado e o respectivo aproveitamento em termos de dados
Diminui com o aumento da dimenso do bloco desperdcio devido ao ajuste da dimenso do ficheiro para um nmero fixo de blocos exemplo: um ficheiro de dimenso 1 byte desperdia o resto da dimenso do bloco
28
Questes de Implementao
Dimenso do bloco
29
Questes de Implementao
Controlo
Lista ligada
Lista ligada com o nmero de cada um dos blocos livres Criao de um ficheiro: Obter os primeiros blocos da lista (at dimenso do ficheiro) e de seguida retir-los da lista Remoo de um ficheiro: Acrescentar os respectivos blocos lista Mtodo simples, mas poder levar a disperso dos ficheiros por vrios blocos no contguos A dimenso da lista poder ser bastante grande se o disco estiver pouco ocupado
30
Questes de Implementao
Bitmap
Sequncia com um nmero de bits igual ao nmero de blocos Bit a 0 significa bloco livre Bit a 1 significa bloco ocupado Dimenso fixa Quase sempre uma dimenso menor que na soluo com lista (excepto quando disco est quase cheio) Facilita a procura de blocos contguos / prximos Basta procurar 0's contguos / prximos no bitmap
31
Questes de Implementao
Backup Salvaguarda de segurana
Backup incremental apenas as alteraes desde o backup anterior Com base no dispositivo fsico backup completo (imagem) de um disco Com base na organizao backup de parte dos ficheiros
Evitam-se geralmente backups de: Programas (pois podem-se reinstalar) Ficheiros que modelizam dispositivos (bloco, caractere)
32
Questes de Implementao
Caching
Leitura
antecipada
Armazenamento
contguo
Tentar colocar o ficheiro em blocos de disco contguos Reduz-se o tempo de overhead relativo ao posicionamento no disco
33
importantes:
Sistema baseado em colocao contgua Encontra-se normalizado de modo a que todos os SOs possam ler um CD do mesmo modo Blocos com dimenso fixa (2352 Bytes / Bloco):
2048 de informao til 304 para cdigo de correco de erros e outros fins
Limite de 8 nveis de directrios Limite de 31 caracteres para os nomes de ficheiros Devido s limitaes, alguns SOs definem extenses norma, para efeitos de compatibilidade
34
A mesma informao do primrio, mas numa linguagem com smbolos diferentes (Japons, Chins, etc.)
Directrio principal e restantes directrios (Table Of Contents) Dados os ficheiros propriamente ditos
sodaD )COT( soirtceriD .lov ed serotircseD seratnemelpus ed rotircseD )oirmirp( emulov
socolb 61 sodinifed on
35
Dimenso total do registo (dimenso varivel, em bytes) Bloco inicial e nmero de blocos (localizao contgua !)
Flags de controlo
Distinguir ficheiro / directrio, ficheiros escondidos, etc. Marcao da ltima entrada de um directrio
1 1
8 Localizao
8 Dimenso
7 Data/hora
1 2
4 # CD
Flags
No definido
36
Data/hora (7 bytes)
Data e hora da gravao do ficheiro no CD Utilizados em ficheiros que violem a colocao contgua (a norma prev excepes colocao contgua) Nmero do CD em que o ficheiro se encontra - um directrio pode indicar um ficheiro localizado noutro CD) Nome do ficheiro, com a dimenso (varivel) indicada Utilizado para implementao de extenses norma base.
Interleave (1 byte)
#CD (4 bytes)
37
Joliet (Microsoft)
Nomes mais compridos (64 caracteres Unicode-16) Aumento de nveis de directrios Directrios com extenses
38
importantes
39
Bloco (bytes)
2K
4K 8K 16K 32K
8MB
16MB X X X
128MB
256MB 512MB 1GB 2GB
X
1TB 2TB 2TB 2TB
40
Directrios
Os directrios so ficheiros compostos por vrios registos um registo por cada ficheiro existente no directrio Cada registo tem o seguinte formato:
8 Nome 3 1 10 2 2 2 4 Dimenso
41
Directrios
Nome do ficheiro e extenso - dimenses fixas flags: hide, system file, read-only,... Data e hora da ltima modificao do ficheiro Bloco inicial de localizao do ficheiro => entrada na FAT; Dimenso real do ficheiro (em bytes)
Data/hora (2 + 2 bytes)
Localizao
42
98 Directrios
4 Dimenso
Extenso Atributos
43
compridos
A seguir a um registo com o formato anterior, podem-se seguir um conjunto de registos com o seguinte formato:
1 10 5 caracteres 1 1 1 0 12 6 caracteres 2 0 4 2 caract.
N Sequncia
Atributos
Checksum
Deste modo o Windows consegue suportar nomes compridos Para o DOS, entradas com este formato so ignoradas, pois contm um valor de atributo invlido para o DOS
44
compridos
l T R r e a l b a a t l o h r o i o F i d n o a
RE L AT O~ 1 DOC
O DOS s consegue l a primeira entrada O Windows 98 utiliza todas as que se seguem at encontrar um nmero de sequncia com um desfasamento de 64 unidades
45
Linux ext2
Caractersticas
importantes
46
Linux ext2
Estrutura
de uma partio
Cada partio dividida em vrios grupos de blocos, tirando-se partido da arquitectura fsica do disco Cada ficheiro reside preferencialmente num nico grupo de blocos Deste modo acelera-se a leitura/escrita no disco
Boot Grupo de blocos #1 Grupo de blocos #2 Grupo de blocos #3 ...
Super-bloco
Descritor
Bitmap blocos
Bitmap I-nodes
I-Nodes
Dados
47
Linux ext2
Estrutura
dos I-Nodes
Permisses N de links UID GID Dimenso Selos temporais Localizao dos 1s 12 blocos Indirectos Duplamente indirectos Triplamente indirectos
48
Linux ext2
Estrutura
dos directrios
N de I-Node
Tipo de Ficheiro
N caracteres
22
10
Manual.txt
34
Trabalhos
...
49
importantes
Sistema de ficheiros nativo dos SOs Windows NT, 2000 e XP Implementao mais complexa, que combina ideias mais prximas dos I-Nodes e da colocao contgua Nomes de ficheiros at 255 caracteres Unicode-16 ( semelhana do Win 98) Case-insensitive
NOTA: Tanto os Windows 95/98 como o DOS, no conseguem ler parties NTFS
50
A MFT um ficheiro localizado em qualquer posio do disco (no obrigatoriamente nos sectores iniciais, se algum deles estiver danificado) Cada registo descreve um ficheiro, com os seus atributos e localizao em disco Conceptualmente, os atributos podem ser
Curtos datas, nome do ficheiro, ID do ficheiro, ... Longos contedo (dados) do ficheiro Um ficheiro pode ter mais do que um contedo pode-se utilizar um contedo adicional para suportar a preview do ficheiro
51
Para outros atributos (longos) o registo MTF indica a sua localizao no disco
Tipicamente o contedo est nesta situao Se a descrio da sua localizao no couber num nico registo MFT, usam-se outros registos MFT de extenso
52
MFT
Estrutura
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
Master File Table Cpia (mirror) da Master File Table Log (permite recuperaes) Volume (Info. sobre a partio) Definio dos atributos Directrio raz Bitmap (Ocupao dos blocos) Boot Loader Lista de blocos danificados Descritores de segurana Converso maisculas-minsculas Outros dados (quotas de utilizao, etc.) Reservado Reservado Reservado Reservado 1 ficheiro 2 ficheiro ...
53
Estrutura
54
Estrutura
55
Estrutura
56
MFT Estrutura
Header Atributos
Info. "Standard"
Nome do ficheiro
20
64
80
Header MFT
57
MFT Estrutura
MFT Estrutura
MFT Estrutura
Ficheiros longos
Quando um ficheiro demasiado comprido e os seus blocos no so contguos pode ser necessrio mais do que um registo MFT
... continuao 177 ... dados 20 : 4 64 : 2 80 : 1
120 : 3
....
60
MFT Estrutura
Atributos "Standard"
Header MFT
Se o directrio for demasiado grande (muitos ficheiros) ento os descritores de ficheiros passam a estar organizados segundo uma rvore
61
O NTFS contm mecanismos nativos de suporte compresso O algoritmo de compresso corre sobre grupos de 16 blocos
Se a compresso for bem sucedida (resultam 15 ou menos blocos), a localizao do ficheiro fica descrita em duas partes: Uma parte com o(s) grupo(s) representando os blocos resultantes Grupo(s) simblico(s) representando os blocos dispensados (para se saber que o conjunto de blocos foi comprimido)
62
Exemplo:
Ficheiro original com 40 blocos. Por hiptese conseguiram-se as seguintes compactaes: blocos 1-16 compactados para 10 blocos (que no puderam ficar num nico bloco contguo) blocos 17-32 compactados para 13 blocos blocos 33-40 compactados para 5 blocos
MTF ->
...
dados
20 : 5
40 : 5
0:6
64 : 13
0:3
80 : 5
0:3
...
Os blocos "poupados" so representados pelos grupos simblicos comeados no bloco 0 (um bloco que no pode ser usado)
63