Professional Documents
Culture Documents
INE5412 Sistemas Operacionais I: SA - Estudo de Caso - FAT32
INE5412 Sistemas Operacionais I: SA - Estudo de Caso - FAT32
L. F. Friedrich
Lendo o
boot Boot
sector. FAT 1 FAT 2
Sector
2
INE5412 - 2011.1
Partição FAT32: boot sector
# mkfs.vfat -F 32 /dev/ram0
# dosfsck -v /dev/ram0
……
512 bytes per logical sector
512 bytes per cluster
32 reserved sectors
First FAT starts at byte 16384 (sector 32)
2 FATs, 32 bit entries
516608 bytes per FAT (= 1009 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 1049600 (sector 2050)
129022 data clusters (66059264 bytes) cluster
…… (512 bytes)
#
Boot
FAT 1 FAT 2
Sector
32 setores
3
INE5412 - 2011.1
Partição FAT32: boot sector
# mkfs.vfat -F 32 /dev/ram0
# dosfsck -v /dev/ram0
……
512 bytes per logical sector
512 bytes per cluster
32 reserved sectors
First FAT starts at byte 16384 (sector 32)
2 FATs, 32 bit entries
516608 bytes per FAT (= 1009 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 1049600 (sector 2050)
129022 data clusters (66059264 bytes) cluster
…… (512 bytes)
#
Boot
FAT 1 FAT 2
Sector
Boot
FAT 1 FAT 2
Sector
Boot
FAT 1 FAT 2
Sector
6
INE5412 - 2011.1
Como ler um diretório no FAT32
• Executar comando “dir c:\windows”.
– passo (1): Localizar o diretório raiz
C Boot
FAT 1 FAT 2
Drive Sector
7
INE5412 - 2011.1
Como ler um diretório no FAT32
• comando: “dir c:\windows”
– passo (2): encontrar a entrada de diretório “windows”.
. ( dir) …… 2
.
Entradas .. ( dir pai) …… 2
do .
…… …… ……
Diretório .
windows …… 123
Cluster 2
C Boot
FAT 1 FAT 2
Drive Sector
8
INE5412 - 2011.1
Como ler um diretório no FAT32
• comando: “dir c:\windows”
– passo (3): cluster #123, ler e retornar todas entradas
do diretório.
Nome Atributos Cluster #
. (dir) …… 123
.
.. (dir pai) …… 2
.
…… …… ……
.
explorer.exe …… 32
Cluster 123
C Boot
FAT 1 FAT 2
Drive Sector
9
INE5412 - 2011.1
Como abrir arquivo no FAT32
• comando: “dir c:\windows”
– passo (4): ler e retornar a estrutura de uma entrada de diretório .
Bytes Value
0-0 1st character of the filename (0x00 or c:\> dir c:\windows
0xe5 means unallocated) ……
06/13/2007 1,033,216 explorer.exe
1-10 7+3 characters of filename + 08/04/2004 69,120 notepad.exe
extension.
……
11-11 File attributes (e.g., read only, hidden) c:\> _
12-12 Reserved.
13-19 Creation and access time information. Nome Atributos Cluster #
20-21 High 2 bytes of the first cluster address
(0 for FAT16 and FAT12). explorer.exe …… 32
22-25 Written time information.
26-27 Low 2 bytes of first cluster address. Estrutura de 32-byte.
28-31 File size.
10
INE5412 - 2011.1
Entrada de diretório
• layout de uma entrada de diretório.
Bytes Value
Nome Atributos Cluster #
0-0 1st character of the filename (0x00 or
0xe5 means unallocated) explorer.exe …… 32
1-10 7+3 characters of filename +
extension.
0 e x p l o r e r 7
11-11 File attributes (e.g., read only, hidden)
8 e x e … … … … … 15
12-12 Reserved.
16 … … … … 00 00 … … 23
13-19 Creation and access time information.
… … 20 00 00 C4 0F 00
20-21 High 2 bytes of the first cluster address 24 31
(0 for FAT16 and FAT12).
22-25 Written time information.
00 00 20 00 = 8192 big endian
26-27 Low 2 bytes of first cluster address.
00 00 00 20 = 32 little endian
28-31 File size.
11
INE5412 - 2011.1
Como ler arquivo na FAT32
• passo (1): ler o primeiro cluster (bloco dados) da entrada
do diretório.
explorer.exe …… 32
C Boot
FAT 1 FAT 2
Drive Sector
12
INE5412 - 2011.1
Como ler arquivo na FAT32
• passo (2): depois de ler o primeiro cluster, procurar o
próximo cluster na FAT e ler aquele cluster.
32 bits
2 EOF
…
32 33
Filename Attributes Cluster #
33 EOF
34 0 explorer.exe …… 32
C Boot
FAT 1 FAT 2
Drive Sector
13
INE5412 - 2011.1
Como ler arquivo na FAT32
• passo (3): para a leitura quando um EOF é encontrado
na FAT.
32 bits
C Boot
FAT 1 FAT 2
Drive Sector
14
INE5412 - 2011.1
Como escrever na FAT32
• Adicionar dados em “C:\windows\explorer.exe”
– passo (1): localizar cluster do final do arquivo.
2 EOF
…
32 33 bloco 1
33 EOF bloco 2
34 0
35 0
C Boot
FAT 1 FAT 2
Drive Sector
15
INE5412 - 2011.1
Como escrever na FAT32
• Adicionar dados em “C:\windows\explorer.exe”
– passo (2): qdo + um cluster é necessário, procurar na estrutura
FSINFO o próximo cluster livre.
2 EOF
Estrutura FSINFO
…
# de clusters livres 100 32 33 bloco 1
Próximo cluster 34 33 EOF bloco 2
livre 34 0
35 0
C Boot
FAT 1 FAT 2
Drive Sector
16
INE5412 - 2011.1
Como escrever na FAT32
• Adicionar dados em “C:\windows\explorer.exe”
– passo (3): Alocar cluster 34 para o arquivo – atualizar a FAT e a
estrutura FSINFO.
FAT1 e FAT2
2 EOF são atualizadas.
Estrutura FSINFO
…
# de clusters livres 99 32 33 bloco 1
Próximo cluster 35 33 34 bloco 2
liuvre 34 EOF bloco 3
35 0
C Boot
FAT 1 FAT 2
Drive Sector
17
INE5412 - 2011.1
Como remover arquivo FAT32
• delete c:\windows\explorer.exe
– passo (1): buscar a entrada de diretório e a localização dos
clusters do arquivo.
C Boot
FAT 1 FAT 2
Drive Sector
18
INE5412 - 2011.1
Como remover arquivo FAT32
• delete c:\windows\explorer.exe
– passo (2): coloca no campo de endereço dos blocos do arquivo na FAT o valor 0,
indicando não alocado.
– Passo (3): atualiza a estrutura FSINFO
C Boot
FAT 1 FAT 2
Drive Sector
19
INE5412 - 2011.1
Como remover arquivo FAT32
• delete c:\windows\explorer.exe
– passo (4): muda o primeiro char do nome do arquivo para “_”
(ASCII 95). Isto marca o arquivo como deletado.
Nome Atributos Cluster #
2 EOF
_xplorer.exe …… 32 …
32 0
Estrutura # clusters livres 102 33 0
FSINFO Próximo cluster 32 0
34
livre
35 0
C Boot
FAT 1 FAT 2
Drive Sector
20
INE5412 - 2011.1