FAT

2,033 views
1,891 views

Published on

File Alocation Table

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,033
On SlideShare
0
From Embeds
0
Number of Embeds
62
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

FAT

  1. 1. Sistemas Operacionais FAT
  2. 2. Alocação Encadeada <ul><li>Soluciona problemas da alocação contígua </li></ul><ul><li>Alocação é baseada em uma unidade de tamanho fixo (bloco) </li></ul><ul><ul><li>análogo a paginação </li></ul></ul><ul><li>Arquivo é uma lista encadeada de blocos </li></ul><ul><ul><li>cada bloco contém um ponteiro para o próximo bloco </li></ul></ul><ul><li>Arquivo é descrito em uma entrada na forma </li></ul><ul><ul><li>bloco inicial do arquivo </li></ul></ul><ul><ul><li>bloco final do arquivo ou tamanho do arquivo </li></ul></ul>
  3. 3. Alocação Encadeada 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 File Allocation Table nome bloco inicial comprimento ... ... ... B 1 5 ... ... ... ... ... ... ... ... ...
  4. 4. Alocação Encadeada <ul><li>Exemplos </li></ul><ul><ul><li>DOS </li></ul></ul><ul><ul><ul><li>FAT </li></ul></ul></ul><ul><ul><ul><ul><li>FAT12, para disquetes, max 16 MB </li></ul></ul></ul></ul><ul><ul><ul><ul><li>FAT16, para discos rígidos pequenos, max 64k * cluster_size </li></ul></ul></ul></ul><ul><ul><li>Windows 95 </li></ul></ul><ul><ul><ul><li>VFAT - permite nomes longos </li></ul></ul></ul><ul><ul><li>Windows 98 </li></ul></ul><ul><ul><ul><li>FAT32 - max 4GB por partição </li></ul></ul></ul>
  5. 5. FAT <ul><li>File Alocation Table (FAT) </li></ul><ul><ul><li>esquema adotado pelo DOS </li></ul></ul><ul><li>Unidade de alocação é o cluster (conjunto de setores) </li></ul><ul><ul><li>arquivo é formado por um conjunto de clusters </li></ul></ul><ul><li>FAT é uma tabela de encadeamento de clusters </li></ul><ul><ul><li>uma entrada na FAT para cada cluster do disco (sistema de arquivos) </li></ul></ul><ul><ul><li>composta por um ponteiro (endereço de um cluster) </li></ul></ul><ul><ul><li>Arquivo é descrito por uma seqüência de entradas na FAT, cada entrada apontando para a próxima entrada </li></ul></ul>
  6. 6. FAT <ul><li>Esquema de funcionamento </li></ul>Diretório arq_a 256 737 400 EOF 399 FAT 0 256 399 400 737
  7. 7. Organização do Disco boot 0 1 2 3 . . . . . FAT 1 FAT 2 ROOT CL 2 CL 3 CL 4 . . . . . . 1 NFAT * SPF NROOT * 20/BPS NSI CLUSTER 0 = livre ffff = aponta para nada
  8. 8. Directory Entry Offset Length Description 0x00 8 Filename 0x08 3 Extension 0x0B 1 Bit field for attributes 0x0C 10 Reserved 0x16 2 Time (coded as Hour*2048*minute*32+Sec/2) 0x18 2 Date (coded as (Year-1980)*512+Month*32+Day) 0x1A 2 Starting cluster area 0x1C 4 File size (in bytes)
  9. 9. Directory Entry Attributes Bit Mask Attributes 0 0x01 Read-only 1 0x02 Hidden 2 0x04 System 3 0x08 Volume label 4 0x10 Subdirectory 5 0x20 Archive 6 0x40 Unused 7 0x80 Unused
  10. 10. Organização do Disquete <ul><ul><ul><li>Logical Sector Content </li></ul></ul></ul><ul><ul><ul><li>0 Boot Sector </li></ul></ul></ul><ul><ul><ul><li>1 First sector in the (first) FAT </li></ul></ul></ul><ul><ul><ul><li>10 First sector in the second FAT </li></ul></ul></ul><ul><ul><ul><li>19 First sector in the floppy disk's root directory </li></ul></ul></ul><ul><ul><ul><li>xx Last sector in the root directory </li></ul></ul></ul><ul><ul><ul><li>(see 0x11 in the boot sector) </li></ul></ul></ul><ul><ul><ul><li>xx+1 Beginning of data area for the floppy disk </li></ul></ul></ul>
  11. 11. BOOT Sector <ul><li>BPB - BIOS Parameter Block </li></ul><ul><ul><ul><li>0-2 <<>a jump instruction to 0x1e<>> </li></ul></ul></ul><ul><ul><ul><li>3-10 Computer manufacturer's name </li></ul></ul></ul><ul><ul><ul><li>11-12 Bytes per sector </li></ul></ul></ul><ul><ul><ul><li>13-13 Sectors per cluster </li></ul></ul></ul><ul><ul><ul><li>14-15 Reserved sectors for the boot record </li></ul></ul></ul><ul><ul><ul><li>16-16 Number of FATs </li></ul></ul></ul><ul><ul><ul><li>17-18 Number of root directory entries </li></ul></ul></ul><ul><ul><ul><li>19-20 Number of logical sectors </li></ul></ul></ul><ul><ul><ul><li>21-21 Medium descriptor byte </li></ul></ul></ul><ul><ul><ul><li>22-23 Sectors per FAT </li></ul></ul></ul><ul><ul><ul><li>24-25 Sectors per track </li></ul></ul></ul><ul><ul><ul><li>26-27 Number of surfaces </li></ul></ul></ul><ul><ul><ul><li>28-31 Number of hidden sectors </li></ul></ul></ul>
  12. 12. FAT Space Values Value Meaning 0x00 Unused 0xFF0-0xFF6 Reserved cluster 0xFF7 Bad Cluster 0xFF8-0xFFF Last cluster in a file (anything else) Number of the next cluster in the file
  13. 13. DEBUG <ul><li>load L [endereço] [unidade] [primeiro setor] [número] </li></ul><ul><ul><li>endereço: inicial de carregamento </li></ul></ul><ul><ul><li>unidade: a: é 0 </li></ul></ul><ul><ul><li>primeiro setor: 0 é de boot </li></ul></ul><ul><ul><li>número: quantidade de setores </li></ul></ul><ul><li>dump D [endereço] </li></ul><ul><ul><li>c:/>debug </li></ul></ul><ul><ul><li>-l 100 0 0 1 </li></ul></ul><ul><ul><li>-d 100 </li></ul></ul><ul><li>Tudo em hexadecimal </li></ul>
  14. 14. DEBUG c:/>debug -l 100 0 0 1 -d 100 1A8A:0100 EB 3C 90 2A 58 4C 7E 2D-49 48 43 00 02 01 01 00 .<.*XL~-IHC..... 1A8A:0110 02 E0 00 40 0B F0 09 00-12 00 02 00 00 00 00 00 [email_address] 1A8A:0120 00 00 00 00 00 00 29 D7-0F 5F 36 49 53 48 49 4B ......).._6ISHIK 1A8A:0130 41 57 41 20 20 20 46 41-54 31 32 20 20 20 33 C9 AWA FAT12 3. 1A8A:0140 8E D1 BC FC 7B 16 07 BD-78 00 C5 76 00 1E 56 16 ....{...x..v..V. 1A8A:0150 55 BF 22 05 89 7E 00 89-4E 02 B1 0B FC F3 A4 06 U.&quot;..~..N....... 1A8A:0160 1F BD 00 7C C6 45 FE 0F-38 4E 24 7D 20 8B C1 99 ...|.E..8N$} ... 1A8A:0170 E8 7E 01 83 EB 3A 66 A1-1C 7C 66 3B 07 8A 57 FC .~...:f..|f;..W. - Obs: little endian Exemplo: BPS - offset 11, 2 bytes vetor[0]=0x00 , vetor[1]=0x02, logo 0000 0010 0000 0000 = 512 SPF - offset 22, 2 bytes 0000 0000 0000 1001 = 9 NFAT - offset 16, 1 byte 0000 0010 = 2 NR_DIR_ENTRY= 224
  15. 15. Disquete de 3 1 / 2 ” <ul><li>Número de faces </li></ul><ul><ul><ul><li>2 </li></ul></ul></ul><ul><li>número de trilhas </li></ul><ul><ul><ul><li>40 </li></ul></ul></ul><ul><li>número de setores </li></ul><ul><ul><ul><li>18 </li></ul></ul></ul><ul><li>bytes por setor </li></ul><ul><ul><ul><li>512 </li></ul></ul></ul><ul><li>capacidade do formato </li></ul><ul><ul><ul><li>1.44 MB </li></ul></ul></ul>
  16. 16. criando um arquivo no disquete A:/>copy con teste.doc Hello, IME. Aqui sao os alunos do 4 ano Eng Comp. Bye. ^Z 1 arquivo(s) copiado(1) A:/>
  17. 17. rastreando o arquivo com debug localizando o arquivo no diretório raiz c:/>debug -l 100 0 13 1 -d 100 -l 0 0 13 1 -d 0 1A8A:0000 49 53 48 49 4B 41 57 41-20 20 20 28 00 00 00 00 ISHIKAWA (.... 1A8A:0010 00 00 00 00 00 00 C9 40-BC 2C 00 00 00 00 00 00 .......@.,...... 1A8A:0020 41 74 00 65 00 73 00 74-00 65 00 0F 00 C2 2E 00 At.e.s.t.e...... 1A8A:0030 64 00 6F 00 63 00 00 00-FF FF 00 00 FF FF FF FF d.o.c........... 1A8A:0040 54 45 53 54 45 20 20 20-44 4F 43 20 00 90 89 76 TESTE DOC ...v 1A8A:0050 BC 2C BC 2C 00 00 77 76-BC 2C 02 00 3C 00 00 00 .,.,..wv.,..<... 1A8A:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1A8A:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ - 0x1A, 2 bytes , CLI = 0000 0000 0000 0010= 2 Setor Físico = (CLF-2)*SPC + NrStoresIniciais + SetorNoCluster= 0*0+32+ 1 = 33
  18. 18. rastreando o arquivo com debug -l 100 0 21 1 -d 100 1A8A:0100 48 65 6C 6C 6F 2C 20 49-4D 45 2E 0D 0A 41 71 75 Hello, IME...Aqu 1A8A:0110 69 20 73 61 6F 20 6F 73-20 61 6C 75 6E 6F 73 20 i sao os alunos 1A8A:0120 64 6F 20 34 20 61 6E 6F-20 64 65 20 45 6E 67 20 do 4 ano de Eng 1A8A:0130 43 6F 6D 70 0D 0A 42 79-65 2E 0D 0A 00 00 00 00 Comp..Bye....... 1A8A:0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1A8A:0150 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1A8A:0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1A8A:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ - CLI = 33 = 0x21

×