Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

INE5412 Sistemas Operacionais I

L. F. Friedrich

SA – Estudo de caso - FAT32


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)
#

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

32 setores 1009 1009


4
INE5412 - 2011.1
Partição FAT32: boot sector
# mkfs.vfat -F 32 /dev/ram0 Acredite se quiser
# dosfsck -v /dev/ram0
…… para a Microsoft o primeiro
512 bytes per logical sector
512 bytes per cluster
cluster é chamado cluster 2.
32 reserved sectors no endereço 0 e 1, não tem
First FAT starts at byte 16384 (sector 32) Nenhum cluster.
2 FATs, 32 bit entries
516608 bytes per FAT (= 1009 sectors)
Root directory start at cluster 2 (arbitrary size)
cluster 2
Data area starts at byte 1049600 (sector 2050)
129022 data clusters (66059264 bytes) cluster
…… (512 bytes)
#

Boot
FAT 1 FAT 2
Sector

32 setores 1009 1009


5
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)
cluster 2
Data area starts at byte 1049600 (sector 2050)
129022 data clusters (66059264 bytes) cluster
…… (512 bytes)
(32 + 1009 + 1009 = 2050)
#

Boot
FAT 1 FAT 2
Sector

32 setores 1009 1009 Área de Dados

6
INE5412 - 2011.1
Como ler um diretório no FAT32
• Executar comando “dir c:\windows”.
– passo (1): Localizar o diretório raiz

Ler setor de boot.


O boot diz que o diretório esta no cluster 2.

Localização do cluster 2, depois da FAT.

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”.

Nome Atributos Cluster #

. ( 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.

Nome Atributos Cluster #

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

2 EOF EOF = 0x0ffffff8



32 33
Nome Atributos Cluster #
33 EOF
34 0 explorer.exe …… 32

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.

Nome Atributos Cluster #


2 EOF
explorer.exe …… 32 …
32 33 bloco 1
33 34 bloco 2
Estrutura # clusters livres 99
FSINFO 34 EOF bloco 3
Próximo cluster 35
livre 35 0

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

Nome Atributos Cluster #


2 EOF
explorer.exe …… 32 …
32 0
33 0
Estrutura # clusters livres 102
FSINFO 34 0
Próximo cluster 32
livre 35 0

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

You might also like