93
Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el funcionament intern del sistema de fitxers FAT32. Per reafirmar els coneixements assolits en l’estudi teòric realitzarem una aplicació docent orientada als alumnes del tercer curs de l’assignatura de sistemes operatius en la qual l’usuari podrà interactuar amb una imatge formatada en FAT32 per així poder assimilar millor els conceptes estudiats a classe.

Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

  • Upload
    hanhu

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

Abstract

En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el funcionament intern del sistema de fitxers FAT32. Per reafirmar els coneixements assolits en l’estudi teòric realitzarem una aplicació docent orientada als alumnes del tercer curs de l’assignatura de sistemes operatius en la qual l’usuari podrà interactuar amb una imatge formatada en FAT32 per així poder assimilar millor els conceptes estudiats a classe.

Page 2: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 1  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Resum

Un sistema operatiu realitza multitud d’operacions i està dividit en diversos mòduls. En aquest treball pretenem centrar-nos en el sistema de fitxers d’un sistema operatiu i explicar les possibles solucions a l’hora d’implementar un sistema d’arxius.

Un cop vist això ens centrarem en un sistema de fitxers concret, FAT, i més concretament FAT32, implementat per Microsoft. Veurem quina és la seva estructura interna presentant els seus avantatges i desavantatges, i quines estructures i regions formen part del format FAT32. Un cop vist tot el funcionament intern, analitzarem quines operacions bàsiques ha de realitzar el sistema operatiu sobre el sistema de fitxers i, el que és més important, com les fa.

Després passarem a analitzar la part pràctica del treball: una aplicació docent orientada als alumnes de tercer curs de Multimèdia i de les Enginyeries Informàtica i Telemàtica que permetrà veure i aprofundir en tots els coneixements vistos prèviament. L’aplicació permetrà visualitzar totes les regions importants de la partició i realitzar operacions tals com pujar i eliminar fitxers o bé crear i eliminar carpetes, tot això amb una doble visió: la d’usuari i la interna.

Page 3: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 2  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Índex  

1. Introducció .....................................................................................................................8

1.1 Enfocament del treball ............................................................................................ 8

1.2 Objectius ................................................................................................................. 8

1.3 Introducció .............................................................................................................. 9

2. Sistemes de fitxers .......................................................................................................10

2.1 Introducció ............................................................................................................ 10

2.2 Situació dins un sistema operatiu .......................................................................... 10

2.3 Fitxers ................................................................................................................... 11

2.3.1 Atributs ........................................................................................................... 11

2.3.2 Operacions de fitxer ....................................................................................... 12

2.3.3 Mètodes d’accés a fitxer ................................................................................. 13

2.4 Directoris .............................................................................................................. 13

2.4.1 Estructura dels directoris ................................................................................ 13

2.4.2 Directoris d’un sol nivell ................................................................................ 14

2.4.3 Directoris de dos nivells ................................................................................. 15

2.4.4 Directoris amb estructura d’arbre ................................................................... 15

2.4.5 Directoris de graf acíclic ................................................................................ 16

2.4.6 Directori de graf general ................................................................................ 16

2.5 Estructura del sistema de fitxers ........................................................................... 17

2.6 Assignació de blocs de disc .................................................................................. 18

2.6.1 Mètodes d'assignació ...................................................................................... 18

2.6.1.1 Assignació contigua ................................................................................. 18

2.6.1.2 Assignació enllaçada ............................................................................... 19

2.6.1.3 Assignació indexada ................................................................................ 20

2.6.2 Administració de l’espai lliure ....................................................................... 22

2.6.2.1 Vector de bits ........................................................................................... 22

2.6.2.2 Llista enllaçada ........................................................................................ 23

2.6.2.3 Agrupació ................................................................................................ 23

2.7 Implementació de directoris .................................................................................. 24

Page 4: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 3  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

2.7.1 Llista lineal ..................................................................................................... 24

2.7.2 Taules de hash ................................................................................................ 24

2.8 Resum ................................................................................................................... 25

3. Sistema d'arxius FAT ..................................................................................................26

3.1 Introducció ............................................................................................................ 26

3.2 Visió històrica ....................................................................................................... 26

3.3 Conceptes .............................................................................................................. 26

3.3.1 Sector .............................................................................................................. 26

3.3.2 Clúster ............................................................................................................ 26

3.4 Estructura de la partició ........................................................................................ 27

3.5 FAT12 ................................................................................................................... 27

3.6 FAT16 ................................................................................................................... 28

3.7 Virtual FAT ........................................................................................................... 28

4. Sistema d'arxius FAT32 ..............................................................................................30

4.1 Introducció ............................................................................................................ 30

4.2 Boot sector ............................................................................................................ 31

4.3 FSInfo ................................................................................................................... 36

4.4 Taula d'assignació de fitxers (FAT) ...................................................................... 36

4.5 Zona de dades ....................................................................................................... 39

4.5.1 Introducció ..................................................................................................... 39

4.5.2 Entrada de directori ........................................................................................ 39

4.5.2.1 Camps ...................................................................................................... 39

4.5.2.2 Creació d’un SFN a partir d’un LFN ....................................................... 41

4.5.3 Noms Llargs (LFN) ........................................................................................ 42

4.5.3.1 Camps ...................................................................................................... 42

4.5.3.2 Com guardar un LFN ............................................................................... 43

4.5.3.3 Càlcul del checksum ................................................................................ 44

4.6 Operacions bàsiques ............................................................................................. 45

4.6.1 Creació d’un directori .................................................................................... 45

4.6.2 Creació d’un fitxer ......................................................................................... 46

4.6.3 Pujar un fitxer ................................................................................................. 47

4.6.4 Lectura d’un fitxer .......................................................................................... 47

Page 5: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 4  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

4.6.5 Eliminació d’un fitxer .................................................................................... 47

4.6.6 Eliminació d’un directori ............................................................................... 47

4.6.7 Borrat de disc ................................................................................................. 48

5. Aplicació FAT32 Viewer ............................................................................................49

5.1 Introducció ............................................................................................................ 49

5.2 Anàlisi de requisits ................................................................................................ 49

5.2.1 Requisits funcionals ....................................................................................... 49

5.2.2 Requisits d’usabilitat ...................................................................................... 50

5.3 Decisions de disseny ............................................................................................. 51

5.3.1 Entorn d’execució .......................................................................................... 51

5.3.2 Entorn de programació ................................................................................... 51

5.3.3 Estructura de l’aplicació ................................................................................. 51

5.3.4 Altres decisions de disseny ............................................................................ 52

5.4 Analisi funcional ................................................................................................... 53

5.4.1 Model estàtic .................................................................................................. 53

5.4.1.1 Diagrama de casos d’ús ........................................................................... 53

5.4.1.2 Diagrama de classes................................................................................. 59

5.4.2 Model dinàmic ............................................................................................... 74

5.4.3 Algoritmes implementats ............................................................................... 77

6. Cost de la realitzacio del projecte ................................................................................81

7. Conclusions .................................................................................................................82

8. Línies de futur..............................................................................................................84

9 Bibliografia ...................................................................................................................85

9.1 Pàgines web .......................................................................................................... 85

9.2 Llibres ................................................................................................................... 85

9.3 Documents ............................................................................................................ 86

10. Annex. Manual d’usuari ............................................................................................87

Page 6: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 5  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Índex de figures

Figura 1. Capes d'un sistema de computació .................................................................. 10 

Figura 2. Parts bàsiques d’un sistema operatiu............................................................... 11 

Figura 3. Estructura de directori d’un sol nivell ............................................................. 14 

Figura 4. Estructura de directori de dos nivells .............................................................. 15 

Figura 5. Directoris amb estructura d’arbre .................................................................... 15 

Figura 6. Directoris amb estructura de graf acíclic ........................................................ 16 

Figura 7. Directori de graf general ................................................................................. 17 

Figura 8. Sistema de fitxers per capes ............................................................................ 18 

Figura 9. Exemple d’assignació de blocs contigua ......................................................... 19 

Figura 10. Exemple d’assignació de blocs enllaçada ..................................................... 20 

Figura 11. Exemple d’assignació de blocs indexada ...................................................... 21 

Figura 12. Variant de l’assignació indexada de UNIX ................................................... 22 

Figura 13. Exemple de vector de bits ............................................................................. 22 

Figura 14. Llista enllaçada d’espai lliure ........................................................................ 23 

Figura 15. Llista enllaçada per agrupació d’espai lliure ................................................. 24 

Figura 16. Estructura d’una partició en FAT12 o FAT16 .............................................. 27 

Figura 17. Estructura d’una partició en FAT32 .............................................................. 30 

Figura 18. Exemple d’entrades a la FAT ........................................................................ 37 

Figura 19. File Allocation System .................................................................................. 37 

Figura 20. Entrada de directori de nom llarg .................................................................. 42 

Figura 21. Estructura d’una entrada de fitxer amb nom llarg ......................................... 44 

Figura 22. Estructura de l’aplicació ................................................................................ 51 

Figura 23. Diagrama de casos d’ús ................................................................................. 53 

Figura 24. Diagrama de classes ...................................................................................... 59 

Figura 25. Classe Program ............................................................................................. 59 

Figura 26. Classe frmPrincipal ....................................................................................... 61 

Figura 27. Classe frmNovaCarpeta ................................................................................ 62 

Figura 28. Classe frmInfoFstClus ................................................................................... 62 

Figura 29. Classe frmFSInfo .......................................................................................... 63 

Figura 30. Classe frmCreaImatge ................................................................................... 64 

Figura 31. Classe frmMostraFitxer ................................................................................. 65 

Page 7: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 6  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Figura 32. Classe frmInfoNomLlarg .............................................................................. 66 

Figura 33. Classe frmInfoBoot ....................................................................................... 67 

Figura 34. Classe frmInfoFAT ....................................................................................... 68 

Figura 35. Classe fat32 ................................................................................................... 69 

Figura 36. Classe FAT .................................................................................................... 70 

Figura 37. Classe FSInfo ................................................................................................ 70 

Figura 38. Classe bootsector ........................................................................................... 71 

Figura 39. Classe directory ............................................................................................. 72 

Figura 40. Classe NodeArbre ......................................................................................... 73 

Figura 41. Diagrama de seqüencia de Crear Imatge ....................................................... 74 

Figura 42. Diagrama de seqüencia de Eliminar Fitxer de la imatge............................... 74 

Figura 43. Diagrama de seqüència de Pujar un fitxer a la imatge .................................. 75 

Figura 44. Diagrama de seqüència de Crear carpeta ...................................................... 75 

Figura 45. Diagrama de seqüència de Descarregar fitxer ............................................... 76 

Figura 46. Diagrama de flux d’Eliminar fitxer ............................................................... 77 

Figura 47. Diagrama de flux de pujar fitxer ................................................................... 78 

Figura 48. Diagrama de flux de crear carpeta ................................................................ 79 

Figura 49. Diagrama de flux d’eliminar carpeta............................................................. 80 

Figura 50. Diagrama de flux de mostrar contingut de fitxer .......................................... 80 

Figura 51. Estimació de distribució de feina .................................................................. 81 

 

Page 8: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 7  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Índex de taules

Taula 1. Possibles valors d’un clúster en FAT12 ........................................................... 28 

Taula 2. Possibles valors d’un clúster en FAT16 ........................................................... 28 

Taula 3. Capacitat d’un volum en FAT32 ...................................................................... 32 

Taula 4. Diferents descriptors de mitjà ........................................................................... 33 

Taula 5. Resum dels camps del BootSector. .................................................................. 35 

Taula 6. Resum dels camps del FSInfo .......................................................................... 36 

Taula 7. Possibles valors d’una entrada de la FAT ........................................................ 37 

Taula 8. Diferents tipus d’entrades de directori ............................................................. 39 

Taula 9. Resum dels camps d’una entrada de directori .................................................. 41 

Taula 10. Resum dels camps d’una entrada de nom llarg .............................................. 43 

Taula 11. Especificació del cas d’ús Mostrar Bootsector. .............................................. 54 

Taula 12. Especificació del cas d’ús Obrir imatge. ........................................................ 54 

Taula 13. Especificació del cas d’ús Pujar fitxer. ........................................................... 55 

Taula 14. Especificació del cas d’ús Formatejar imatge. ............................................... 55 

Taula 15. Especificació del cas d’ús Crear carpeta. ....................................................... 56 

Taula 16.Especificació del cas d’ús Eliminar fitxer. ...................................................... 56 

Taula 17.Especificació del cas d’ús Eliminar carpeta. ................................................... 57 

Taula 18. Especificació del cas d’ús Descarregar fitxer. ................................................ 57 

Taula 19. Especificació del cas d’ús Mostrar fitxer. ...................................................... 58 

Taula 20. Especificació del cas d’ús Crea imatge. ......................................................... 58 

 

Page 9: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 8  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

1. Introducció 1.1 Enfocament del treball

Aquest treball pretén ser una eina docent per als alumnes de l’assignatura de Sistemes Operatius del tercer curs de Multimèdia i de les Enginyeries Informàtica i Telemàtica.

Un sistema operatiu ha d’interactuar directament amb el hardware de la màquina, podem definir un sistema operatiu per mòduls, on cada mòdul farà la seva feina. Els blocs principals del sistema operatiu són el nucli, l’administració de memòria, el sistema de fitxers i el controlador d’entrada / sortida.

En aquest treball pretenem explicar les característiques dels sistemes de fitxers. Serà important explicar els conceptes bàsics i les operacions sobre fitxers i directoris que ha de permetre fer un sistema de fitxers. Aquests conceptes seran necessaris per quan passem a explicar el funcionament del sistema de fitxers FAT32 ja que haurem assolit els conceptes necessaris per a poder veure un cas real i poder-lo catalogar dins de les diverses possibilitats que tenim a l’hora d’implementar un sistema d’arxius, tot això basant-nos en les característiques explicades anteriorment.

Un cop haguem vist les nocions bàsiques entrarem en les característiques de FAT, en primer lloc repassarem la història d’aquest sistema de fitxers creat per Microsoft l’any 1980 i seguidament veurem els conceptes bàsics de l’estructura d’un sistema de fitxers FAT. També veurem les diferents evolucions aquest sistema de fitxers i explicarem les principals diferències entre FAT12, FAT16 i FAT32.

Un cop exposades les característiques genèriques de FAT mostrarem com s’implementa un sistema d’arxius FAT32. Aprofundirem, sobretot, en dos aspectes del seu funcionament intern, explicarem com i què guarda a cada camp dins de les regions prèvies a les dades, tals com el bootsector o el FSInfo, i com realitzarem les operacions bàsiques descrites en l’explicació del sistemes de fitxers.

Per finalitzar realitzarem una explicació formal de l’aplicació desenvolupada detallant tot el procés de la creació de l’eina, en el que s’inclou l’anàlisi de requisits, decisions de disseny, el model estàtic i el model dinàmic. Aquesta eina servirà a l’usuari per veure el comportament real del sistema de fitxers FAT32 i podrà realitzar operacions tals com pujar fitxers, crear carpetes o visualitzar el bootsector d’una imatge formatada en FAT32, tenint en tot moment informació del que s’està fent internament al sistema.

1.2 Objectius

Els objectius del treball són els següents:

• Entendre els sistemes de fitxers i complementar la teoria de l’assignatura de sistemes operatius.

Page 10: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 9  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Entendre el funcionament intern del sistema de fitxers FAT32.

• Realitzar una aplicació docent que permeti a l’usuari entendre i veure les característiques explicades en el treball.

1.3 Estructura de la memòria

La memòria d’aquest TFC està dividida en 3 parts:

• Fonaments teòrics: o Explicació dels sistemes de fitxers. o Explicació del sistema d’arxius FAT.

• Estudi del funcionament intern de FAT32.

• Disseny i explicació formal de l’aplicació implementada.

Page 11: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 10  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

2. Sistemes de fitxers 2.1 Introducció

Un sistema de fitxers permet emmagatzemar informació, típicament associat a una memòria secundària, i organitzar les dades com a fitxers. A continuació veurem a on està situat el sistema de fitxers dins d’un sistema operatiu i veurem quines estratègies es poden seguir per guardar la informació dins del dispositiu d’emmagatzematge.

2.2 Situació dins un sistema operatius

Un sistema operatiu és un programa que controla l’execució d’aplicacions i programes i que actua com interfície entre les aplicacions i el hardware d’un ordinador. Es pot considerar que un sistema operatiu té els següents tres objectius:

• Facilitat d’ús: un sistema operatiu facilita l’ús de un computador (o ordinador).

• Eficiència: un sistema operatiu permet que els recursos de un sistema de computació (ordinador) es puguin utilitzar de una manera eficient.

• Capacitat per evolucionar: un sistema operatiu s’ha de construir de manera que es puguin desenvolupar, provar i introduir noves funcions en el sistema sense interferir amb el servei.

El hardware i el software utilitzats per proporcionar aplicacions a usuaris finals es poden veure de forma jeràrquica:

Figura 1. Capes d'un sistema de computació

El sistema operatiu facilitarà la feina de l’usuari final i farà que vegi el sistema de computació com un conjunt d’aplicacions sense preocupar-se del hardware.

 

Page 12: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 11  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Entre les funcions principals del nucli tenim:

• Gestió d’E/S: És l’única capa que pot executar instruccions d’entrada i sortida. Cada perifèric requereix el seu propi conjunt d’instruccions o senyals de control per a cada operació. El sistema operatiu proporciona una interfície uniforme que oculta els detalls de forma que els programadors puguin accedir als dispositius utilitzant lectures o escriptures senzilles.

• Administració de memòria: El sistema operatiu s’encarregarà d’administrar quanta memòria ha de donar a cada procés i de controlar que no accedeixi a la memòria d’un altre. En cas de necessitar-ne fer ús de la memòria virtual accedint al dispositiu d’E/S.

• Sistema de fitxers: El sistema operatiu, apart de poder accedir al dispositiu d’E/S (disc dur, cinta...) haurà “d’entendre” i saber llegir com estan estructurades les dades en el dispositiu i ser capaç de mostrar-ho al usuari. En el següent punt veurem més detalladament quins mètodes tenim per guardar fitxers i quins sistemes de fitxers implementats existeixen.

Figura 2. Parts bàsiques d’un sistema operatiu

2.3 Fitxers

Un fitxer és una unitat de emmagatzematge lògic no volàtil que agrupa un conjunt d’informació associada a uns atributs (nom, extensió...).

Des del punt de vista de l’usuari el sistema de fitxers és la part més visible ja que interactua directament amb les dades (obre fitxers, executa programes...).

2.3.1 Atributs

Des del punt de vista del sistema operatiu, un fitxer es caracteritza per tenir una sèrie d’atributs, els quals podrien canviar depenen del sistema operatiu:

• Nom: identificador del fitxer en format comprensible per a l’usuari. Definit per el creador.

• Identificador únic: en el àmbit intern, típicament el sistema operatiu no fa servir el nom com identificador si no un creat per ell mateix.

Page 13: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 12  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Tipus de fitxer: identifica quin tipus de fitxer és, en alguns casos es fa servir una extensió i en altres un número denominat “magic number”. D’aquesta manera el sistema operatiu podrà distingir amb quin programa executar-lo.

• Mapa de fitxer: indica on estan guardats el fitxers. Hi ha varies maneres de indicar-ho, un exemple podria ser un punter a la posició de inici de dades o el número de clúster on esta guardat.

• Protecció: informació de control d’accés, indica quin tipus d’accés es pot fer sobre el fitxer i quins usuaris tenen permisos.

• Mida del fitxer: número de bytes que ocupa el fitxer.

• Informació temporal: data i hora de creació, de lectura, d’escriptura...

• Informació de control de fitxers: Indica si és un fitxer ocult, de sistema, fitxer normal, carpeta, etc...

2.3.2 Operacions de fitxer

Les principals operacions que s’han de poder fer sobre un fitxer són:

• Crear fitxer: primer de tot s’ha de verificar que el hi ha prou espai per crear el fitxer i comprovar que no hi ha un altre fitxer amb el mateix nom. Després es procedirà a guardar l’entrada de directori.

• Eliminar fitxer: s’elimina l’entrada de directori i les dades de fitxers i s’allibera l’espai.

• Obrir fitxer: Un fitxer és obert per un procés i permet realitzar funcions sobre el fitxer tals com obrir i tancar.

• Tancar fitxer: El procés tanca el fitxer de forma que no pot tornar a realitzar determinades funcions com escriure o llegir, a no ser que el torni a obrir.

• Llegir fitxer: El procés llegeix dades de disc i les pot portar a memòria per tractar-les. El sistema farà servir un punter de lectura.

• Escriure fitxer: El procés invers a la lectura, passem dades de memòria a disc. El sistema farà servir un punter d’escriptura.

• Canvi de nom de fitxer: Aquesta operació permet canviar el nom de fitxer. El sistema ha de verificar que el nou nom no estigui repetit dintre de la carpeta.

Page 14: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 13  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

2.3.3 Mètodes d’accés a fitxer

Hi ha diversos mètodes d’accés a fitxers, segons el sistema podem seleccionar quin volem o ens en marquen un de concret.

• Accés seqüencial

El mètode d’accés més simple és el accés seqüencial. La informació dins del fitxer es processa en ordre. És un dels mètodes més utilitzats per aplicacions com per exemple editors de text i compiladors.

Anirem llegint registre a registre i avançarem el punter a cada lectura. Per escriure seguirem la mateixa filosofia, avançarem el punter fins on vulguem escriure i llavors escriurem i ens situarem al final l’escriptura. En cas de voler anar enrere haurem de tornar a l’inici del fitxer.

• Accés directe

Aquest mètode ens permet moure el punter al lloc on vulguem fer l’escriptura o la lectura.

Aquest accés ens permet molta més llibertat a l’hora de tractar un fitxer però hem de tenir en compte que l’accés serà més costós i en cas de ser possible intentar sempre obrir el fitxer en accés seqüencial.

2.4 Directoris

La capacitat dels discs d’avui en dia fa que podem tenir una gran quantitat de fitxers molt elevada. Això requereix una certa organització, els directoris permeten agrupar fitxers i altres directoris i així tenir una certa organització.

2.4.1 Estructura dels directoris

Existeixen diferents maneres d’organitzar directoris i fitxers, hem de ser capaços de fer certes operacions i trobar les maneres més optimes per fer-ho. Les operacions bàsiques són:

• Buscar un fitxer: hem de ser capaços de buscar un fitxer dintre d’un directori.

• Crear un fitxer: hem de ser capaços de crear un fitxer dins d’un directori.

• Eliminar un fitxer: de la mateixa manera que hem de poder crear fitxers hem de poder-los eliminar.

• Llistar un directori: tenim que ser capaços de llistar tots els fitxers i directoris de un directori en concret.

Page 15: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 14  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Canvi de nom d’un fitxer: és necessari poder canviar el nom del fitxer ja que per a l’usuari aquest representa el seu contingut.

• Recórrer el sistema d’arxius: ens serà molt útil poder passar per tot el sistema d’arxius i veure les carpetes i directoris.

A continuació veurem els esquemes més comuns per definir una estructura lògica de un directori.

2.4.2 Directoris d’un sol nivell

És l’estructura més simple, tots els fitxers estan dins del mateix directori (root). Com que tots els fitxers estan en el mateix directori tots han de tenir noms diferents, el que podria suposar un problema. Avui un dia un usuari pot tenir milers de fitxers i en cas de tenir-ho tot en un sol directori seria caòtic, i encara pitjor si hi ha varis usuaris.

Figura 3. Estructura de directori d’un sol nivell [11]

Podem tenir problemes ja que el màxim de caràcters que pot tenir un fitxer està determinat per l’operatiu, per exemple MS-DOS només permet 11 caràcters de llargada i això podria suposar un problema si l’usuari guarda molts fitxers i provocaria un caos d’organització.

També serà molt difícil que hi hagin varis usuaris fent servir el mateix sistema de fitxers ja que només podran guardar en un directori i hauran de vigilar que no hi hagin noms repetits.

 

Page 16: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 15  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

2.4.3 Directoris de dos nivells

Amb aquesta estructura cada usuari tindrà la seva pròpia carpeta on guardarà els seus fitxers sense problemes de noms amb altres usuaris. D’aquesta manera podem estructurar millor les dades però seguim sense tenir cap tipus d’organització dins les dades de cada usuari.

En certa manera l’estructura es pot veure com un arbre de dos nivells, on els pares són els usuaris i els fills els fitxers de cada usuari.

Figura 4. Estructura de directori de dos nivells [11]

Amb aquest estructura apareix el sistema de path, si un usuari vol accedir als seus fitxers accedirà directament, en canvi si vol accedir als fitxers d’un altre usuari, introduirà el path de l’usuari on estigui el fitxer (ex: /ramon/fitxer1.txt).

2.4.4 Directoris amb estructura d’arbre

Aquesta estructura es pot visualitzar com un arbre de varis nivells, on cada usuari pot crear els seus propis subdirectoris i organitzar els fitxers de la manera que vulgui.

Figura 5. Directoris amb estructura d’arbre [11]

Page 17: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 16  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

La manera de visualitzar els fitxers en forma d’arbre és la més utilitzada entre els sistemes operatius on cada fitxer té un path únic. Un directori conté fitxers i subdirectori. Els subdirectoris es poden considerar fitxers, encara que tractats de manera especial, l’entrada de directori d’un subdirectori o d’un fitxer es definirà per un camp dins l’entrada de directori.

Amb aquesta estructura apareix el concepte de ruta absoluta o ruta relativa. Una ruta absoluta és aquella que comença a la arrel, en canvi una ruta relativa defineix una ruta a partir del directori actual.

2.4.5 Directoris de graf acíclic

La principal característica d’aquesta estructura és la compartició de fitxers. Un fitxer o carpeta pot estar a més d’un lloc, d’aquesta manera varis usuaris podran modificar el fitxer i els altres veure els canvis realitzats al moment.

Realment estem creant enllaços als fitxers, en cas d’eliminar un enllaç no significa que només haguem d’eliminar el fitxer, ja que deixaríem la resta d’enllaços orfes. Podem seguir varies politiques d’eliminació. O bé guardem quantes referències hi ha en aquest fitxer i en el moment que aquest comptador arribi a 0 eliminem el fitxer, o bé eliminem el fitxer i comencem a cercar les referències existents per eliminar-les.

Figura 6. Directoris amb estructura de graf acíclic [11]

Aquesta estructura és més flexible que l’estructura en forma d’arbre però també és més complexa. Un fitxer apart d’estar a varis llocs també pot tenir diferents noms depenen del lloc on estigui guardat. Això suposa problemes a l’hora de recórrer el sistema d’arxius, ja que podríem estar recorrent diversos cops el mateix fitxer.

2.4.6 Directori de graf general

L’avantatge del graf acíclic és que tenim assegurat que no hi hagin cicles i que si executem un algoritme de cerca no entrarà en un bucle infinit, és serà fàcil contar quantes referències tenim a un fitxer.

Page 18: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 17  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

En canvi en un graf general correm el risc d’entrar en un bucle infinit en cas de que l’algoritme no ho controli. No s’acostumen a utilitzar degut a la complexitat de la implementació i de tots els detalls a controlar, encara que són més flexibles que els arbres.

Figura 7. Directori de graf general [9]

2.5 Estructura del sistema de fitxers

Per proporcionar un accés eficient i convenient al disc, el sistema operatiu imposa un sistema d’arxius que permet guardar, localitzar i recuperar dades fàcilment. El desenvolupament d’un sistema d’arxius planteja dos problemes diferents de disseny. El primer problema és definir com hauria de ser la aparença del sistema de fitxers per a l’usuari. Aquesta tasca implica definir quins atributs tindrà un fitxer, les operacions permeses sobre el fitxer, i la estructura de directoris per organitzar els fitxers. A continuació, s’hauran de crear algoritmes i estructures de dades que mapegin el sistema de fitxers lògic en els dispositius físics de emmagatzematge secundari.

El sistema de fitxers s’acostuma a explicar via un disseny per capes. Cada nivell de el disseny utilitza les característiques dels nivells inferiors per crear noves característiques que utilitzaran els nivells superiors.

El nivell més baix, el controls de E/S, està compost per els controladors del dispositiu i els de interrupció, necessaris per a transferir informació entre la memòria i el sistema de disc.

El sistema de arxius bàsic només necessita emetre comandes genèriques al control d’E/S per escriure i llegir al dispositiu. Normalment s’accedeix mitjançant unes coordenades depenen del dispositiu on s’escriu que indicarien on es vol escriure (ex: en una cinta: unitat 1, cilindre 10, pista 1, sector 2).

Page 19: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 18  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

El mòdul de organització de fitxers dels blocs lògics com dels físics, sap quins fitxers i directoris hi han i a on estan guardats a disc. Aquest mòdul s’encarregarà de fer la traducció de bloc lògic a físic.

Figura 8. Sistema de fitxers per capes[9]

Finalment, el sistema de fitxers lògic fa servir la estructura de directoris i mostra el nom entenedor que l’usuari li ha assignat.

2.6 Assignació de blocs de disc

2.6.1 Mètodes d’assignació

Haurem de decidir com guardem la informació per optimitzar al màxim les lectures. Existeixen tres tipus: contigua, indexada i enllaçada.

2.6.1.1 Assignació contigua

Aquest tipus d’assignació requereix que el fitxer es guardi en els blocs de disc de manera contigua.

D’aquesta manera la lectura seqüencial d’un fitxer és fàcil i òptima, ja que casi no hem de moure el capçal de disc i en cas de fer-ho sempre serà a la següent posició.

El principal problema de l’assignació contigua passa quan ampliem un fitxer i necessitem un bloc més però aquest està ocupat. Haurem de buscar un espai lliure, i en cas de trobar-lo, alliberar disc i reescriure el fitxer amb la nova informació.

Existeixen un seguit d’estratègies per intentar minimitzar aquests casos, la idea es deixar un cert nombre de blocs lliures després del fitxer per si necessitem més espai no tenir que moure’l. Aquestes estratègies també suposen un problema a disc, la fragmentació externa, deixarem varis blocs lliures per a cada fitxer que guardem, blocs

Page 20: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 19  Estu

que dfitxer

Un aque vespai

2.6.

L’assassigestari a l’ú

Al crnull, bloc dadedel fipunte

D’aqpot spassa

udi del sistem

difícilment rs petits).

altre problemvulguem gui a disc, per

1.2 Assign

signació engnació enllar dispersos aúltim bloc d

rear un fitxindicant qulliure que s. Cada blo

fitxer, l’últimer de ultima

questa maneseguir creixa.

ma d'arxius F

omplirem s

Figura

ma, derivat uardar un frò no sigui c

nació enlla

nllaçada resaçada, cada a qualsevol del fitxer.

xer posaremue el fitxer trobem, act

oc que ocupm bloc conta posició. G

era també sxent mentre

FAT32 i imple

si utilitzem

a 9. Exemple d

de la fragmfitxer a disccontigu.

açada

solt tots elsfitxer és unpart del dis

m tant el punesta buit. Etualitzarem

pem per esctindrà una e

Gràficament

olucionem e hi hagi es

ementació d

assignació

d’assignació d

mentació exc i que no p

s problemena llista enllsc. L’entrad

nter de primEn cas de vo

el punter dcriure el fitxentrada nul·l

s’indica qu

el problemaspai lliure,

d'una aplicac

contigua (a

de blocs contig

xterna, és qupugem enca

es de la assaçada de bla de directo

mera posicioler escriurde primer ixer contindrla però sabr

ue és la ultim

a de la fragcosa que a

ió docent 

a menys qu

gua [8]

ue se’ns potara que si q

signació colocs de discori conté un

ió com el de dades busi últim blocrà un punterrem que és lma posició p

gmentació eamb assigna

ue tinguem m

t donar el cque hi hagi

ontigua. Am, els blocs ppunter al p

de última a scarem el pc i escriuremr al següentl’últim gràcposant un -1

externa, un ació contigu

molts

cas de prou

mb la poden primer

valor rimer m les t bloc cies al 1.

fitxer ua no

Page 21: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 20  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Aquest tipus d’assignació també té els seus problemes, principalment a l’hora de llegir un fitxer, si cada bloc està guardat en diferents pistes de disc, haurem de fer tantes lectures a disc com blocs tinguem.

Figura 10. Exemple d’assignació de blocs enllaçada [8]

Si volem accedir a un bloc “i” haurem de situar-nos al inici del fitxer i anar llegint els punter de cada bloc per anar avançant pels blocs fins trobar el bloc “i”. Amb assignació contigua sabíem exactament on estava el bloc que necessitàvem.

També hem de considerar un problema el espai que necessitem per guardar els punters, si tenim blocs de 512 bytes i necessitem 4 bytes per assignar, estarem fent servir el 0.78% de disc només per els punters.

Una variació de la assignació enllaçada és FAT, més endavant veurem el seu funcionament.

2.6.1.3 Assignació indexada

La assignació indexada resolt també els problemes de fragmentació externa i de declaració de mida de l’assignació contigua. També resolt els problemes de lectura de l’assignació enllaçada ja que guarda tots els índex dins d’un bloc que anomenarem bloc índex.

Cada arxiu tindrà el seu bloc índex, la i-èssima entrada correspondrà al bloc “i” del fitxer. D’aquesta manera si volem accedir a un bloc llegirem els índex i accedirem directament al bloc que volem sense tenir que anar llegint tots els blocs. Si tenim un

Page 22: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 21  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

fitxer gros que necessita més índexs que els que ens ofereix el bloc índex haurem de seguir alguna estratègia per poder enllaçar varis blocs índex. Una possible solució seria reservar una capçalera on guardarem la posició del següent bloc índex.

Figura 11. Exemple d’assignació de blocs indexada [8]

Quan creem el fitxer totes les entrades del bloc índex estaran posades a un valor no vàlid, típicament “-1”.

El principal problema serà que desaprofitarem espai si necessitem pocs índex, ja que hauríem reservat tot un bloc per només guardar un parell de punters. Per exemple un fitxer buit ocuparà un bloc d’espai a disc.

Unix fa servir una variant de l’assignació indexada, en el primer bloc índex reservarà 15 posicions on guardarà directament punters als blocs, el que en principi serà suficient per fitxers petits. A partir del 16 crearà blocs indirectes, que podran ser simples, dobles o triples, que venen a ser punters a altres blocs índex. A la figura 2.10 poden veure que els blocs dobles indirectes apunten a altres blocs índex que a la vegada apunten a blocs índex. Gràcies a aquest sistema podem guardar fitxers de gran mida de manera dinàmica i podem fer lectures al bloc i de manera bastant directa.

Page 23: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 22  Estu

2.6.2

Dinsl’espla mablocs

2.6.2

Una bloc lliure

El vetenir

udi del sistem

2 Adminis

del sistempai lliure. Alateixa manes lliures.

2.1 Vector

manera fàcrepresentar

e.

ector de bitsque fer acc

ma d'arxius F

Figura 1

stració de

ma de fitxerl crear un fiera, quan el

r de bits

cil és implerà una posic

s només sercessos a dis

FAT32 i imple

12. Variant de

l’espai lli

s també seritxer buscarliminem un

ementar la lció del vect

Figura 13. Ex

rà eficient ssc cada cop

ementació d

e l’assignació i

iure

rà molt impem dins d’afitxer tots e

llista d’espator i guarda

xemple de vec

si està guardque volgué

d'una aplicac

indexada de U

portant fer aquesta llistels blocs oc

ai lliure comarem 0 o 1 d

ctor de bits [8]

dat a memòéssim busca

ió docent 

UNIX [9]

una bona ata de blocs dcupats passa

m a un vectdepenen de

]

òria ja que sar espai lliu

administracd’espai lliuraran a la llis

tor de bits. e si està ocu

seria molt cure. Hem de

ció de re. De sta de

Cada upat a

costos e tenir

Page 24: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 23  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

en compte l’espai que hem de reservar a memòria ja que per un disc de 13 GB amb blocs de 512 bytes haurem de reservar 3,32MB per guardar el vector de bits.

La cerca d’espai lliure es fa recorrent el vector de manera seqüencial fins trobar un posició lliure.

2.6.2.2 Llista enllaçada

Una altra manera d’administrar l’espai lliure consisteix en enllaçar tots els blocs lliures entre si. D’aquesta manera només que guardem quin és el primer bloc lliure podrem anar avançant pels blocs lliures i anar guardant el fitxer i només ens caldrà actualitzar el punter al primer bloc lliure.

A la figura 2.11 podem veure que els blocs 4,5,9,10,12,18,21 i 22 estan lliures.

Figura 14. Llista enllaçada d’espai lliure [8]

2.6.2.3 Agrupació

Aquesta és una variació de la llista enllaçada d’espai lliure i similar a la idea d’assignació de blocs indexada. Tindrem varis blocs on guardarem els índex de blocs lliures i aquest bloc estarà enllaçat amb un altre bloc d’índexs lliures i així successivament. D’aquesta manera ens serà ràpid trobar blocs lliures ja que tindrem la llista en un sol bloc.

Page 25: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 24  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Figura 15. Llista enllaçada per agrupació d’espai lliure [8]

2.7 Implementació de directoris

És molt important seleccionar bé els algoritmes d’assignació i administració de directoris ja que afecta considerablement a la eficiència del sistema d’arxius. A continuació veurem els diferents algoritmes i quins inconvenients tenen.

2.7.1 Llista lineal

El mètode més senzill per implementar un directori consisteix en fer servir una llista lineal dels noms dels fitxers amb punters als blocs de dades.

El principal problema d’aquest mètode és la cerca, cada cop que vulguem buscar un fitxer haurem de fer una cerca lineal, cosa que comporta un cost molt alt i problemes en el seu rendiment. Tant si volem crear o eliminar un fitxer haurem de cercar si existeix i aquest és el principal problema de la implementació de directoris utilitzant llistes lineals.

Es podrien buscar certes millores com per exemple guardar les entrades en un ordre concret i així fer cerques més optimes però seguirien sen dolentes.

2.7.2 Taules de hash

Quan parlem de taules de hash com a implementació de l’estructura de directoris ens referim a una llista de entrades de directori que poden ser indexades mitjançant una funció de hash. En aquest cas el hash es calcularia a partir del nom del fitxer i ens

Page 26: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 25  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

retornaria la posició que estem buscant, així doncs tindríem un accés pràcticament directe i solucionaríem el problema mencionat anteriorment de la llista lineal. El principal problema de les taules de hash és que tenim un número fix d’entrades les quals no podem canviar i seria costós intentar-la ampliar.

2.8 Resum

Després d’aquest capítol hem vist què és un sistema de fitxers i quines característiques té. Hem vist les diferents estratègies que pot utilitzar per dur a terme el guardat de fitxers amb el seva posterior administració. Les estratègies vistes no deixen de ser possibles solucions, cada sistema de fitxers fa servir els seus propis mètodes com per exemple UNIX. En el següent capítol veurem el cas de FAT, que fa servir algunes idees explicades anteriorment.

Page 27: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 26  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

3. Sistema d’arxius FAT 3.1 Introducció

Existeixen 3 tipus de FAT: FAT12, FAT16 i FAT32. Les tres són molt similars i es diferencien en que la FAT pot indexar més o menys clústers, amb la qual cosa podem tenir major volum de dades. Amb FAT12 indexem amb 12 bits, amb FAT16 amb 16 i finalment amb FAT32 amb 32 bits. FAT32 incorpora una sèrie de millores respecte FAT12 i FAT16 que veurem més endavant.

En aquest capítol veurem les nocions de FAT però no hi entrarem en profunditat fins el següent capítol on veurem les especificacions especifiques de FAT32.

3.2 Visió històrica

El sistema de fitxers FAT (File Allocation Table) va ser creat per Bill Gates i Marc McDonald a finals de 1970 i va apareixer per primer cop l’agost de 1980 en el sistema operatiu QDOS. FAT era el sistema de fitxers suportat per el sistema operatiu MS-DOS. Originàriament va ser desenvolupat per disquets de menys de 500K de mida. Durant els anys FAT s’ha anat adaptant per poder suportar més i més dades.

La primera evolució important va ser VFAT (era utilitzada en Windows 95), la principal diferencia era el suport de noms llargs (LFN). Això permetia tenir noms de més de 8 caràcters de nom i 3 d’extensió que era una limitació imposada per els noms curts.

3.3 Conceptes

3.3.1 Sector

Quan donem format a un volum en FAT especifiquem de quina mida són els sectors. Un sector no és més que un conjunt de bytes que en FAT pot ser de 256, 512, 1024, 2048 o 4096.

3.3.2 Clúster

Un clúster és un conjunt de sectors. Podem tenir 1, 2, 4, 8, 16, 32, 64 o 128 sectors a dins de cada clúster on hi guardarem informació de un únic fitxer o directori. Si hem declarat clúster de mida molt grossa tindrem problemes amb la fragmentació interna, però serà la manera de tenir més espai de disc per guardar dades.

 

Page 28: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 27  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

3.4 Estructura de la partició

Un sistema FAT conté 3 parts bàsiques, el sector d’arrencada (Boot Sector), la FAT i les dades.

Figura 16. Estructura d’una partició en FAT12 o FAT16

• Sector d’arrencada: podríem definir aquesta part com el sector de configuració del disc. Aquí tindrem guardada informació bàsica com els bytes per sector, els sectors per clúster, el número de FATs... Amb aquesta informació ens prepararem per poder llegir la resta del dispositiu, ja que si no, no sabríem com anar al inici de les dades ni de la FAT. Veurem més endavant quines dades guardem exactament en el capítol de FAT32, ja que tant en FAT12, FAT16 i FAT32 el Bootsector és idèntic, encara que FAT32 té més camps.

• FAT: La FAT ens serveix per saber quin és el següent clúster que ocupa un fitxer o directori. Vindria a ser un modificació de l’assignació enllaçada, on els índex que indiquen la següent posició estan tots junts en un mateix sector del volum. Si l’entrada val 0, vol dir que aquesta posició està lliure, si és major que 0x0FFFFFF8 vol dir que és l’últim clúster ocupat per el fitxer o directori. Podem tenir varies còpies de la FAT per raons de seguretat. Les tres primeres entrades de la FAT no s’utilitzen, l’entrada 0 té una copia del “media descriptor” (camp dins del Bootsector que veurem més endavant) i l’entrada 1 i 2 tenen el valor fixat. L’entrada 2 indica el següent clúster que ocupa l’entrada de directori root.

• Zona de dades: Podem dividir la zona de dades en dos parts: o Directori arrel: A la zona del directori arrel guardarem les entrades de

directori de tots els fitxers i directoris que hi hagin en el directori arrel. El numero màxim d’entrades està definit pel BootSector i és estàtica en FAT12 i FAT16. En canvi en FAT32 aquest concepte desapareix i tindrem un directori arrel dinàmic.

o Zona de dades: Aquí tindrem els clúster amb les dades dels fitxers o les entrades de directori d’altres directoris.

3.5 FAT12

La versió inicial de FAT es coneixia com a FAT12. El sistema operatiu que el feia servir era MS-DOS 1.1 fins a la versió 2.x. Estava destinat a guardar informació dins de disquets. Les entrades de la FAT són de 12 bits, lo que permet tenir fins a 4087 clústers.

Page 29: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 28  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Una limitació evident de FAT12 és l’espai de disc que podem crear (2^12 clústers), però també és un problema la seva implementació ja que al utilitzar entrades de 12 bits és incòmode llegir i escriure a la FAT.

Els valors possibles dins d’una casella de la FAT de 12 bits són:

Taula 1. Possibles valors d’un clúster en FAT12

3.6 FAT16

FAT16 s’utilitzava a les versions 3.x de MS-DOS, cada clúster està representat per 16 bits dins la FAT amb lo que podem tenir un màxim de 65.536 combinacions. Els valors de cada entrada de la FAT són:

Taula 2. Possibles valors d’un clúster en FAT16

Per volums petits FAT16 resulta molt útil ja que amb un volum de 512 bytes per clúster podem fer volums de 33MB. El problema el trobem quan volem fer un disc de 2GB, cada clúster hauria de contenir 32KB i podria provocar una fragmentació interna important (ocuparíem 32 KB encara que el fitxer només ocupes 2 KB).

3.7 Virtual FAT (VFAT)

VFAT es va incloure en Windows 95 i DOS v7.x, era necessari fer particions de major volum que les que permetia FAT16 degut a la ràpid increment que estaven sofrint els discs durs. VFAT és exactament igual que un sistema de fitxers FAT però inclou algunes millores.

Utilitza una FAT de 32 bits per posició però els 4 bits més alts estan reservats, els 28 restants permeten direccionar 2^28 = 268.435.456 clústers lo que permet tenir particions de fins a 1TB utilitzant 8 sectors per clúster i sectors de 4K (Valors raonables per no tenir molta fragmentació interna).

FAT12 Clúster lliure 0x000

Ocupat. Següent clúster 0x002 – 0xFEF Clúster danyat 0xFF7

Clúster final de fitxer 0xFF8 – 0xFFF Clúster reservat 0xFF0 – 0xFF6

FAT16 Clúster lliure 0x0000

Ocupat. Següent clúster 0x0002 – 0xFFEF Clúster danyat 0xFFF7

Clúster final de fitxer 0xFFF8 – 0xFFFF Clúster reservat 0xFFF0 – 0xFFF6

Page 30: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 29  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

L’altre millora va ser el incloure els noms llargs, eliminant la limitació de 8 caràcters per el nom de fitxer i 3 per l’extensió. Més endavant veurem els mecanismes que es fan servir per guardar els noms llargs (LFN).

Page 31: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 30  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

4. Sistema d’arxius FAT32 4.1 Introducció

FAT32 és una evolució de VFAT. Es va incloure amb Windows 98-SE amb certes millores respecte les versions anteriors:

• Admet unitats de fins a 2 TBytes.

• Es poden utilitzar clústers de menor mida per crear discs de varis GB, el que permet fer un ús entre el 10 i el 15 per cent més eficient del espai de disc amb respecte unitats en FAT16 de la mateixa mida.

• El directori arrel segueix estan en el clúster 2, però ara forma part de la cadena de clústers de la FAT i es pot expandir com un directori normal. D’aquesta manera ja no hem de tenir en compte l’atribut del Bootsector que ens indica quantes entrades de directori té la partició.

• Apareix el FSInfo on hi guardarem certa informació sobre l’estat dels clústers. Hi guardarem el número de clústers lliures que té la partició i el següent clúster lliure.

L’estructura bàsica d’un sistema de fitxers en FAT32 seria la següent (tenint en compte que el número de FATs és variable):

Figura 17. Estructura d’una partició en FAT32

Com es pot veure a la figura 17 el sistema d’arxius té 5 parts diferenciades. A continuació passarem a veure cada una de les regions.

 

Page 32: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 31  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

4.2 BootSector

El Boot Sector (sector reservat) és el primer sector de cada partició o volum. Aquest sector conté la informació d’arrencada del sistema així com certs paràmetres que afecten al sistema d’arxius. Aquests paràmetres es troben en una estructura que s’anomena Bloc de Parametres BIOS (BPB, Bios Parameter block). Els paràmetres definits en aquest sector són basics per poder gestionar i entendre la estructura i el funcionament del sistema d’arxius, així com el mode d’assignació de fitxers a disc.

L’estructura en FAT32 es diferencia una mica amb la de FAT12/16, en alguns casos en FAT32 haurem de deixar valors fixes a 0 i fer servir un altre camp afegit especialment per FAT32. Això es produeix perquè alguns camps necessiten més bits ja que en FAT32 podem tenir valors més grans.

1) Instrucció de codi d’arrencada (BS_jmpBoot) S’utilitzen 3 bytes per especificar la instrucció de salt a la zona on es troba el codi d’arrencada del sistema operatiu. Es poden distingir dos formats d’aquest tipus d’instrucció:

Byte 0: 0xEB Byte 1: 0x?? (tots els valors vàlids) Byte 2: 0x90

Byte 0: 0xE9 Byte 1: 0x?? (tots els valors vàlids) Byte 2: 0x?? (tots els valors vàlids)

Generalment s’utilitza el primer format. El codi associat a l’arrencada del sistema es troba generalment en el primer sector situat després del BPB encara que es pot estendre a altres sectors.

2) Nom del OEM (BS_OEMName) S’utilitzen 8 bytes per indicar qui ha formatejat el volum. Es considera com a una cadena de caràcters i prou.

El valor recomanat és: “MSWIN4.1” 3) Numero de bytes per sector (BPB_BytsPerSec) Aquest és el primer camp del BPB. El seu tamany son 2 bytes i indica el numero de bytes que té un sector. El seu valor pot ser 512, 1024, 2048 o 4096. El valor que s’utilitza per tenir el màxim de compatibilitat i menys fragmentació interna és 512.

4) Numero de sectors pers clúster (BPB_SecPerClus) Aquest camp ocupa 1 byte i indica el numero de sectors que formen una unitat mínima d’assignació, és dir, un clúster. Un clúster és el mínim espai de disc que haurà d’ocupar un disc. El seu valor ha de ser potencia de 2 i superior a 0 (1,2,4,8,16,32,64 i 128). Per

Page 33: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 32  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

qüestions de compatibilitat el producte del numero de bytes per sector i el numero de sectors per clúster hauria de ser inferior a 32K. (BPB_BytsPerSec * BPB_SecPerClus <= 32K)

Mida del volum Sectors per clúster Mida del sector (bytes) 256 MB – 511 MB 2 1K

512 MB – 1 GB 8 4K 1GB – 2 GB 8 4K 2 GB – 8 GB 8 4K 8 GB – 16 GB 16 8K 16 GB – 32 GB 32 16K 32 GB – 2 TB 64 32K

Taula 3. Capacitat d’un volum en FAT32

5) Numero de sectors reservats (BPB_RsvdSecCount) Aquest camp ocupa 2 bytes, indica el numero de sectors reservats des de el primer sector del volum. El valor no pot ser 0. En FAT32el seu valor acostuma a ser 32. 6) Numero de FATs (BPB_NumFATs) Aquest camp ocupa 2 bytes i especifica el numero de FATs replicades del volum. Si tenim més d’una copia de la taula, en cas de que una d’elles contingui un error, podrem recuperar la taula correcta. El seu valor és típicament 2, encara que podem posar qualsevol valor major que 1. 7) Numero de entrades en el directori arrel (root) (BPB_RootEntCnt) Aquest camp s’utilitza en FAT12 i FAT16 i ocupa 2 bytes. Indica el numero d’entrades en el root (cada entrada és de 32 bytes). En FAT32 el valor es 0 ja que el numero d’entrades és il·limitat. 8) Numero de sectors del volum (BPB_TotSec16) Aquest camp ocupa 2 bytes i indica el numero total de sectors que conté el volum, sempre que el seu valor sigui inferior a 0x10000. En FAT32 el seu valor sempre es 0. En aquest cas el numero de sectors esta guardat en un altre camp. 9) Descriptor del mitjà (BPB_Media) Ocupa 2 bytes i especifica informació sobre el dispositiu utilitzat. Els dos valors més comuns son 0xF8 per discs magnètics i 0xF0 per discs flexibles.  

Page 34: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 33  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Byte Capacitat Mida de disc Cares Pistes Sectors per pista FAh 320 KB 3.5" 1 80 8 FAh --- Disc RAM FBh 650 KB 3.5" 2 80 8 F0h 2.88 MB 3.5" 2 80 36 F0h 1.44 MB 3.5" 2 80 18 F9h 720 KB 3.5" 2 80 9 F9h 1.2 MB 5.25" 2 80 15 FAh 320 KB 5.25" 1 80 8 FBh 640 KB 5.25" 2 80 8 FDh 360 KB 5.25" 2 40 9 FFh 320 KB 5.25" 2 40 8 FCh 180 KB 5.25" 1 40 9 FEh 160 KB 5.25" 1 40 8 F8h --- Disc dur

Taula 4. Diferents descriptors de mitjà [1]

10) Número de sectors per FAT (BPB_FATSz16) Camps de 2 bytes, indica el numero de sectors ocupa cada copia de la FAT. Aquest valor es calcula quan donem format a la partició. 11) Número de sectors per pista (BPB_SecPerTrck) Ocupa 2 bytes, indica el numero de sectors per pista.

12) Número de capçals (BPB_NumHeads) Camp de 2 bytes que indica el numero de capçals d’una unitat d’emmagatzematge. 13) Número de sectors ocults (BPB_HiddSec)

Camp de 4 bytes, especifica el numero de sectors de disc que hi ha abans de la partició que conté el sistema de fitxers FAT. El valor d’aquest camp dependrà del sistema operatiu i serà 0 quan el disc no estigui particionat. 14) Número de sectors del volum (BPB_TotSec32) Camp de 4 bytes en el que s’especifica el numero total de sectors del volum en el sistema FAT32, però també en els sistemes FAT12 i FAT16 si el valor es major que 0x10000.

Fins aquí el BPB és idèntic tant en FAT12, FAT16 i FAT32, a partir del offset 36 comencen les diferencies entre FAT12/16 i FAT32.

Page 35: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 34  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

A partir d’aqui els camps del bootsector són es diferencien de FAT12/16 amb FAT32. El BPB de un FAT32 té els següents camps:

15) Numero de sectors per FAT (BPB_FATSz32) Camp idèntic al camp nº10, però de 4 bytes per poder representar un FAT32.

16) Flags (BPB_ExtFlags) Camp de 2 bytes que indica diferents característiques del dispositiu de emmagatzematge.

17) Versió del sistema de fitxers (BPB_FSVer) Camp de 2 bytes previst per a futures ampliacions.

18) Clúster del directori arrel (BPB_RootClus) Camp de 4 bytes que indica a quin clúster comença el directori arrel. Això ens servirà per començar a llegir el fitxer ja que en FAT32 la posició del directori arrel és variable. Per conveni serà el primer clúster no danyat del disc dur. Normalment el seu valor es 2.

19) Informació del sistema d’arxius (BPB_FSInfo) Camp de 2 bytes que ens indica en quin sector hi ha el FSInfo.

20) Sectors de recuperació del Boot (BPB_BkBootSec) Camp de 2 bytes que indica en quin sector de la zona reservada es troba una còpia del Bootsector.

21) Reservat (BPB_Reserved) Camp reservat de 12 bytes per futures ampliacions del sistema.

22) Numero de dispositiu físic (BS_DrvNum) Camp de 1 byte que indica el numero associat al dispositiu físic. El seu valor es 0x00 per els discs flexibles i 0x80 per a discs durs.

23) Reservat (BS_Reserved1) Aquest camp ocupa 1 byte i en el sistema FAT el seu valor és sempre 0x00.

24) Boot Signature (BS_BootSig) Camp de 1 byte, el seu valor es 0x29 i indica que els tres següents camps estan presents.

Page 36: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 35  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

25) Identificador de volum (BS_VolID) Aquest camp de 4 bytes especifica el número de sèrie del volum. Es generà aleatòriament i serà sempre diferent que el de les altres possibles particions. Aquest número permet als dispositius saber quan s’ha introduït un disc incorrecte en una unitat. El identificador es genera mitjançant una combinació de data i hora actual.

26) Etiqueta del volum (BS_VolLab) Cadena de caràcters d’11 bytes que indica el nom de la etiqueta del volum. El valor d’aquesta etiqueta coincideix amb el nom de la entrada del directori arrel.

27) Tipus de sistema de fitxers (BS_FilSysType) Aquest camp ocupa 8 bytes i indica el tipus de del sistema de fitxers de la partició. El valor d’aquest camp no té perquè indicar quin tipus de FAT estem utilitzant. Un exemple del seu valor pot ser: “FAT32 “.

RESUM

Numero Nom Offset (byte)

Size (bytes)

1 BS_jmpBoot 0 3 2 BS_OEMName 3 8 3 BPB_BytsPerSec 11 2 4 BPB_SecPerClus 13 1 5 BPB_RsvdSecCnt 14 2 6 BPB_NumFATs 16 1 7 BPB_RootEntCnt 17 2 8 BPB_TotSec16 19 2 9 BPB_Media 21 1

10 BPB_FATSz16 22 2 11 BPB_SecPerTrk 24 2 12 BPB_NumHeads 26 2 13 BPB_HiddSec 28 4 14 BPB_TotSec32 32 4 15 BPB_FATSz32 36 4 16 BPB_ExtFlags 40 2 17 BPB_FSVer 42 2 18 BPB_RootClus 44 4 19 BPB_FSInfo 48 2 20 BPB_BkBootSec 50 2 21 BPB_Reserved 52 12 22 BS_DrvNum 64 1 23 BS_Reserved1 65 1 24 BS_BootSig 66 1 25 BS_VolID 67 4 26 BS_VolLab 71 11 27 BS_FilSysType 82 8

Taula 5. Resum dels camps del BootSector.

 

Page 37: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 36  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

4.3 FSInfo

FAT32 incorpora una estructura amb informació addicional referent al sistema de arxius denominat FSInfo Sector Structure. La localització d’aquest sector està indicada en el Bootsector en el byte 48 i 49. L’estructura FSInfo ocupa 512 bytes.

La informació que conté és la següent :

1) Firma inicial (FSI_LeadSig) Camp de 4 bytes amb valor 0x41615252 que indica que és el principi del sector FSInfo.

2) Reservat (FSI_Reserved1)

Camp de 480 bytes reservats per a futures actualitzacions. Ha d’estar tot inicialitzat a 0’s.

3) Firma (FSI_StrucSig) Camp de 4 bytes amb valor 0x61417272 que indica que realment és el sector FSInfo.

4) Clústers lliures (FSI_Free_Count) Camp de 4 bytes que indica el número total de clústers lliures. En cas de valer 0xFFFFFFFF indica que hem de fer el recompte i calcular quans clústers estan lliures.

5) Següent Clúster lliure (FSI_Nxt_Free) Aquest camp de 4 bytes indica a quin clúster hem de començar a buscar clústers lliures. Com que FAT32 és extens, és més òptim indicar on hi ha un grup de clústers lliures que no pas començar a buscar. Si el seu valor és 0xFFFFFFFF haurem de començar la cerca pel clúster 2.

6) Reservat (FSI_Reserved2) Camp de 12 bytes reservats per a futures actualitzacions. Ha d’estar tot inicialitzat a 0’s.

7) Firma final (FSI_TrailSig) Camp de 4 bytes amb valor 0xAA550000 que indica el final del sector FSInfo.

4.4 Taula d’assignació de fitxers (FAT)

La FAT és la part més important d’aquest sistema de fitxers, cada carpeta o fitxer contindrà la posició inicial dins de la fat del fitxer al que vulguem accedir que a la vegada serà el clúster a on vulguem anar. La FAT ens indicarà si el següent clúster és ocupat o si és final de fitxer.

Nom Offset (byte)

Mida (bytes)

FSI_LeadSig 0 4 FSI_Reserved1 4 480 FSI_StrucSig 484 4 FSI_Free_Count 488 4 FSI_Nxt_Free 492 4 FSI_Reserved2 496 12 FSI_TrailSig 508 4

Taula 6. Resum dels camps del FSInfo

Page 38: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 37  Estu

DepeEn Flittle

Els p

En caAqueamb

És imposicque een qu

Per sreserdespr

Per dclústconsi

udi del sistem

enen de si feFAT32 la m

endian).

possibles va

as de que elesta estructuestructura e

mportant tenció 0 i 1 de el primer cluin offset es

saber on corvats (BPB_rés de la o l

(BPB

determinar ters totals iderarem qu

ma d'arxius F

fem servir Fmida d’entra

alors d’una e

Taul

l clúster estura funcionenllaçada.

nir en compla FAT no lúster desprstà el inici d

omença el p_RsvdSecCnles FAT. La

B_RsvdSecC

si la FAT de la zonaue la FAT e

ClústOcupat. Se

ClústeClúster fin

Clúster

FAT32 i imple

AT12, FATada serà de

Figura 18. Ex

entrada en F

la 7. Possibles

igui ocupat na de la mat

Figura 19. F

pte que la pres tindran e

rés de la FAde les dades

primer clústnt) y desprèa formula qu

Cnt + FATSz

es FAT12, a de dadesestà treballan

ter lliure egüent clúster danyat nal de fitxer reservat

ementació d

T16 o FAT34 bytes (32

xemple d’entr

FAT32 són

s valors d’una

podrem anteixa maner

File Allocation

rimera posicen compte. AT serà el 2s.

ter de dadeès les FAT, uedaria així

z * BPB_Nu

FAT16 o F. Si el nunt amb FAT

ter 0x00

r 0xFF0xFF

d'una aplicac

32 tindrem u2 bits) com

rades a la FAT

els següent

entrada de la

nar accedint ra que un m

n System [5]

ció on es poPer accedir2, prèviame

es serà suficja que l’ini

í:

umFATs) *B

FAT32 hemmero de cT12. Si el n

FAT0x0000

0000002 – 00xFFFF

FFFFFF8 –FFFFFF0 –

ió docent 

una mida d’es veu a la

T

s:

FAT

al fitxer mimode d’assig

ot escriure er al fitxer heent haurem

cient amb sici de les da

BPB_BytsP

m de calculclústers és número de c

T32 00000 0xFFFFFFE

FFFF7 0xFFFFFFF0xFFFFFF

’entrada difea imatge (se

itjançant la gnació de f

es el clúster em de consid’haver ca

saltar els seades es trob

PerSec

lar el numeinferior a lústers està

EF

FF F6

ferent. empre

FAT. fitxers

2. La iderar lculat

ectors ba just

ero de 4085 entre

Page 39: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 38  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

4086 i 65525 considerarem FAT16. Per últim si el número es major que 65525 és tractarà de FAT32. Podríem considerar que el numero màxim de fitxers i carpetes és el numero de clústers que tenim a la zona de dades ja que com a mínim un fitxer/carpeta ocuparà 1 clúster.

 

Page 40: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 39  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

4.5 Zona de dades

4.5.1 Introducció

A partir de la zona de dades és on es comencen a guardar realment els fitxers i directoris que l’usuari va creant. Es troba just després de les FAT, per saber la posició exacta haurem de recórrer al bootsector i calcular la seva posició. Recordem que les dades comencen on el bootsector tingui definint l’inici del directori arrel.

4.5.2 Entrada de directori

Cada entrada de directori ocupa 32 bytes. Dins de l’entrada guardem el nom de fitxer, però només disposem de 8 caràcters pel nom i 3 per l’extensió. Haurem de fer ús dels noms llargs, veurem com guardar-los més endavant. En FAT32 els directoris tenen una mida variable, i en cas de tenir prous entrades de fitxer com per omplir un clúster, aquest s’ampliarà de mida mitjançant un altre clúster. 4.5.2. Camps

1) Nom curt (DIR_Name) Camp de 11 bytes que indica el nom del fitxer o directori. En cas de ser un fitxer, els 8 primers bytes indiquen el nom i els 3 últims l’extensió. L’entrada del directori arrel tindrà el mateix nom que el valor de l’etiqueta del volum, definit per el bootsector. El primer byte del nom indicarà també altres coses, si el seu valor és 0xE5 o 0x05 vol dir que l’entrada està lliure i no es tindrà en compte a l’hora de llegir l’entrada. En cas de que valgui 0x00 voldrà dir que està lliure i que a partir d’allà ja no hi ha cap entrada més en aquest directori. 2) Atribut (DIR_Attr) És 1 byte que indica de quin tipus d’entrada de directori és, tenim varis valors:

Nom Valor Descripció ATTR_READ_ONLY 0x01 Només lectura. ATTR_HIDDEN 0x02 Entrada oculta. ATTR_SYSTEM 0x04 Entrada del sistema. ATTR_VOLUME_ID 0x08 Indica que és l’entrada root, serà el mateix que el del disc dur. ATTR_DIRECTORY 0x10 Indica que és un directori. ATTR_ARCHIVE 0x20 Indica que és un fitxer. ATTR_LONG_NAME 0x0F Indica que és una entrada de nom llarg.

Taula 8. Diferents tipus d’entrades de directori

3) Reservat (DIR_NTRes) Camp d’un byte. Ús reservat per el sistema operatiu Windows NT. El valor ha de ser 0x00.

Page 41: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 40  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

4) Marca de creació (DIR_CrtTimeTenth) Camp d’un byte que indica les dècimes de segon que passen quan es crear un fitxer. El seu valor estarà entre 0 i 199. Podem posar un rang de 0 a 2 segons.

5) Hora de creació (DIR_CrtTime) Camp de dos bytes. Indica la hora que es va crear el fitxer, la representació dels bits és la següent:

Bits 0–4: comptador de 2 segons, rang vàlid 0–29 inclusive (0 – 58 segons). Bits 5–10: Minuts, rang vàlid: 0–59 inclusive. Bits 11–15: Hores, rang vàlid: 0–23 inclusive.

6) Data de creació (DIR_CrtDate) Camp de 2 bytes que indica el dia que es va crear el fitxer, la representació dels 16 bits és la següent:

Bits 0–4: Dia del més, rang vàlid 1-31 inclusive. Bits 5–8: Mes del any, 1 = gener, rang vàlid 1–12 inclusive. Bits 9–15: Comptador d’anys 1980, rang vàlid 0–127 inclusive (1980–2107).

7) Data del últim accés (DIR_LstAccDate) Aquest camp ocupa 2 bytes i indica la data del últim accés al fitxer (tant per lectura o escriptura). El format és el mateix que es fa servir per la data de creació. Inicialment el seu valor és el mateix que el de la data de creació, en cas de que es faci una escriptura aquesta data serà equivalent a la data de la ultima escriptura, camp que veurem més endavant.

8) Direcció del primer clúster, part alta (DIR_FstClusHI) Camp de 2 bytes que indica la part alta del clúster on es troba el fitxer. Per sistemes FAT12 i FAT16 aquest camp val 0 ja que directament el clúster a accedir és la part baixa. En canvi en FAT32 aquest camp si que es fa servir.

9) Hora de la última escriptura (DIR_WrtTime) Camp de 2 bytes que indica l’hora que va ser escrit el fitxer per últim cop. El format serà el mateix que el camp DIR_CrtTime.

10) Data de la última escriptura (DIR_WrtDate) Camp de 2 bytes que indica la data de quan va ser escrit el fitxer per últim cop. El format serà el mateix que el camp DIR_CrtDate

Page 42: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 41  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

11) Direcció del primer clúster, part baixa (DIR_FstClusLO) Aquest camp de 2 bytes indica la part baixa del clúster on està situat el fitxer. En FAT12 i FAT16 és directament el clúster a on hem d’anar.

12) Mida del fitxer (DIR_FileSize) Camps de 4 bytes que indica la mida del fitxer en bytes. De la mateixa manera també especifica que la mida màxima d’un fitxer serà 4GB. La mida d’un directori serà sempre 0.

Taula Resum

Name Offset (byte) Size (bytes) DIR_Name 0 11 DIR_Attr 11 1 DIR_NTRes 12 1 DIR_CrtTimeTenth 13 1 DIR_CrtTime 14 2 DIR_CrtDate 16 2 DIR_LstAccDate 18 2 DIR_FstClusHI 20 2 DIR_WrtTime 22 2 DIR_WrtDate 24 2 DIR_FstClusLO 26 2 DIR_FileSize 28 4

Taula 9. Resum dels camps d’una entrada de directori

4.5.2.2 Creació d’un SFN a partir d’un LFN

En FAT32 un nom pot tenir fins a 255 caràcters, el que obliga a fer ús dels noms llargs (que veurem més endavant), però una entrada de directori té guardat el nom curt, el que obliga a passar el nom llarg a nom curt seguint una sèrie de passos.

Per guardar un SFN hem de seguir els següents passos:

1) Es guarda tot en majúscules 2) Es suprimeixen caràcters no admesos. 3) S’eliminen els espais en blanc

Si el nom no entra en un nom curt guardarem els primers caràcters i afegirem el símbol ‘~’ seguit de un número que indica quants fitxers hi ha repetits començant amb aquest nom. El nom curt es guardarà sempre en majúscules, en cas de voler saber quin és el nom original (majúscules – minúscules) accedirem al nom llarg. La cadena “~n” té un rang de “~1” fins a “~999999”. Al escriure l’entrada de directori el número “n” s’escull a partir dels numero ja existents i ha de ser el següent número menor lliure. Per exemple si tenim les entrades “LETTER~1DOC” i “LETTER~3DOC” la següent cadena vàlida serà “LETTER~2DOC”. L’algorisme que genera el numero n està optimitzat per si tenim un numero d’entrades molt llarg i podria ser que tinguéssim un valor de n diferent a l’espera’t.

Page 43: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 42  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Exemple:

El nom correspon a: fitxerllarg.super.

Exemple:

El nom correspon a: fitxer1.txt. En els dos casos hauríem d’accedir al nom llarg per saber si esta escrit en majúscules o minúscules. Els caràcters vàlids per un nom curt són tots menys:

• Valors de caràcter inferiors a 0x20, exceptuant 0x05. El primer caràcter del nom no podrà ser tampoc 0x20.

• Altres caràcters: 0x22 ( “ ), 0x2A ( * ), 0x2B ( + ), 0x2C ( , ), 0x2E ( . ), 0x2F ( / ), 0x3A ( : ), 0x3B ( ; ), 0x3C ( < ), 0x3D ( = ), 0x3E ( > ), 0x3F ( ¿ ), 0x5B ( [ ), 0x5C ( \ ), 0x5D ( ] ) y 0x7C ( | ).

4.5.3 Noms llargs (LFN)

Els noms llargs són necessaris per representar un nom amb més de 8 caràcters de nom i/o extensions de més de 3 caràcters. Cada entrada de 32 bytes representarà 13 caràcters del nom, les entrades LFN es troben contiguament just a sobre de l’entrada de directori de nom curt. Cada una tindrà un identificador que anirà augmentant a cada entrada (0x01, 0x02...).

4.5.3.1 Camps

Els camps de cada entrada són els següents:

Figura 20. Entrada de directori de nom llarg [12]

1) Numero de seqüència (LDIR_Ord) Camp de 1 byte que indica quin numero d’entrada és. El numero anirà augmentant de forma seqüencial, per quina és la última entrada del nom llarg hem d’aplicar la màscara 0xF0 i obtenir el valor 0x40.

Page 44: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 43  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Exemple: 0x01, 0x02, 0x03, 0x44.

De la mateixa manera que una entrada normal el primer byte pot indicar que és una entrada lliure amb el valor 0xE5.

2) Nom del fitxer/directori [1] (LDIR_Name1) Camp de 10 bytes on guardarem els 5 primers caràcters de l’entrada. Cada caràcter ocupa 2 bytes ja que està guardat en format

3) Atribut (LDIR_Attr) Camps de 1 byte que ha de ser 0x0F (ATTR_LONG_NAME ).

4) Reservat (LDIR_Type) Camp reservat de 1 byte per a futures expansions.

5) Checksum (LDIR_Chksum) Camp de 1 byte que conté un checksum per comprovar si l’entrada de nom llarg és correcte. Aquest checksum es fa a partir de l’entrada nom curt.

6) Nom del fitxer/directori [2] (LDIR_Name2) Camp de 12 bytes que conté l’altre part del nom del fitxer.

7) Reservat (LDIR_FstClusLO) Camp de 2 bytes que sempre val 0.

8) Nom del fitxer/directori [3] (LDIR_Name3) Camp de 4 bytes que conté els dos últims caràcters de l’entrada.

Taula Resum

Taula 10. Resum dels camps d’una entrada de nom llarg

4.5.3.2 Com guardar un LFN

Per crear un nom llarg hem d’anar agafant grups de 13 caràcters i anar-los guardant

Name Offset (byte)

Size (bytes)

LDIR_Ord 0 1 LDIR_Name1 1 10 LDIR_Attr 11 1 LDIR_Type 12 1 LDIR_Chksum 13 1 LDIR_Name2 14 12 LDIR_FstClusLO 26 2 LDIR_Name3 28 4

Page 45: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 44  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Al guardar un nom llarg hem de comprovar que tinguem prous entrades per guardar el conjunt nom llarg + nom curt. L’estructura d’una entrada de fitxer amb nom llarg queda de la següent manera:

Figura 21. Estructura d’una entrada de fitxer amb nom llarg [12]

Un cop haguem comprovat que tenim suficients entrades anirem guardant el fitxer de la manera descrita anteriorment.

En l’exemple de dalt es pot veure com es guarda el fitxer “The quick brown.fox”. L’entrada de nom curt és “THEQUI~1FOX”.

4.5.3.3 Càlcul del checksum

El checksum el calcularem a partir dels 11 caràcters del nom curt. Un cop calculat podrem guardar-lo a les entrades de nom llarg.

L’algoritme és el següent:

unsigned char ChkSum (unsigned char *pFcbName) { short FcbNameLen; unsigned char Sum; Sum = 0; for (FcbNameLen = 11; FcbNameLen != 0; FcbNameLen--){ Sum = (( Sum & 1) ? 0x80 : 0 ) + (Sum >> 1) + *pFcbName ++;

} return (Sum);

}

Page 46: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 45  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

4.6 Operacions bàsiques

En aquest apartat veurem quins passos hauria de seguir el sistema per fer certes operacions dins del sistema de fitxers com per exemple crear un fitxer, eliminar un fitxer, crear una carpeta... D’aquesta manera veurem tot el que s’ha de tenir en compte al realitzar aquestes operacions.

4.6.1 Creació d’un directori

El primer que hem de comprovar és si tenim prou espai al disc dur per crear el directori. Hem de consultar el FSInfo i llegir el camp de clústers lliures. Un cop haguem comprovat que al menys tenim 1 clúster lliure per crear el directori procedirem a buscar on hem de guardar l’entrada de directori. També hem de comprovar que el no hi hagi un directori amb el mateix nom.

Hem de tenir varies coses presents en aquest moment, una entrada de directori ocupa 32 bytes, però també hem de guardar tantes entrades de nom llarg com necessitem, i aquestes han d’estar contigües a l’entrada de directori. Dins d’una entrada de directori de nom llarg guardem 13 caràcters. Hem d’aplicar un algorisme que vagi recorrent el clúster (o clústers) del directori on volem guardar l’entrada de directori i buscar que hi hagin prous entrades de 32 bytes com necessitem per crear les entrades de directori. Aquest algoritme haurà de tenir en compte que podem tenir aquestes entrades en varis clústers, però sempre contiguament segons la FAT.

En aquest moment podem tenir dues opcions:

• Trobem les entrades necessàries per guardar les entrades.

• No trobem les entrades necessàries per guardar les entrades: Haurem de demanar un nou clúster per les entrades del directori on volem guardar el nou directori. Haurem de comprovar que al menys hi hauran 2 clústers lliures en el volum (1 per el directori que hem de crear i un altre per les entrades de directori).

En aquest moment ja hem comprovat que podem crear el directori i hem trobat on guardar les entrades de nom llarg i nom curt. Ara hem de crear l’entrada de directori. Els camps per un directori han de ser els següents:

• Atribut: 0x10, indiquem que és un directori. • Marca de creació: sempre 0 quan és un directori. • Totes les dates i hores: data i hora actual del sistema. • Mida del fitxer: sempre 0 quan és un directori.

Buscarem per la FAT una entrada lliure, un cop l’haguem trobat la marcarem com ocupada (0x0FFFFFFF) i guardarem dins l’entrada de nom curt del nou directori els dos últims camps que ens faltaven per omplir, la part alta i la part baixa del clúster on es troba el directori.

Page 47: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 46  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Procedirem a escriure les entrades nom curt i nom llarg on hem de trobat l’espai (ja creades prèviament). Ara ens faltarà crear les dues entrades bàsiques que té qualsevol directori, les entrades “.” i “..”.

Les entrades “.” i “..” són simplement entrades que guarden quin és el clúster actual del directori (“.”) i quin és el clúster de la carpeta mare (“..”). Els altres valors seran els mateixos que els de la carpeta creada exceptuant el nom.

Exemple:

En cas de voler crear una carpeta amb nom “creaciodecarpeta”.

Suposarem que tenim suficient espai per crear-la. Crearem l’entrada de nom curt, la qual ens quedarà de la següent manera:

Veiem com s’aplica l’algoritme de nom curt i obtenim el nom “CREACI~1” i deixem lliure els 3 caràcters d’extensió. En aquest cas el primer clúster lliure que ha trobat ha estat el 117. Les dues entrades de nom llarg necessàries quedarien de la següent forma:

Per últim ens quedarà crear les entrades “.” i “..”, ens quedaran de la següent forma:

Si ens fixem ens els valors de primer clúster tenim un 117, el mateix valor que el de creaciodecarpeta.

Si ens fixem en el primer clúster de l’entrada “..” ens indica un 2, el que fa referència al valor de l’entrada arrel.

4.6.2 Creació d’un fitxer

Crear un fitxer és molt similar a crear un directori, tindrem certs canvis dins l’entrada de directori en alguns camps, però seguirem els mateixos passos. Necessitarem com a mínim un clúster lliure i en cas de no poder guardar les entrades de nom curt i nom llarg dins dels clústers del directori, un clúster suplementari.

Page 48: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 47  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Els camps de l’entrada del fitxer seran els següents:

• Atribut: 0x20, indiquem que és un fitxer. • Totes les dates i hores: data i hora actual del sistema. • Mida del fitxer: 0 al ser un fitxer nou creat. • Primer clúster: correspondrà al clúster que hem trobat lliure i on començaran les

dades del fitxer. En el primer clúster de dades deixarem el que hi hagi ja que no es mirarà perquè el camp de mida estarà a 0. 4.6.3 Pujar un fitxer

Hem de comprovar que el fitxer entri, mirant quants clústers ocupa i mirant quants clústers lliures tenim en el camp del FSInfo. Un cop ho haguem comprovat hem de guardar les entrades de nom llarg i nom curt i després començar a guardar el contingut del fitxer.

Hem d’anar llegint blocs de la mida d’un clúster i anar-los guardant a la partició. Cada cop que necessitem un nou clúster l’hem de buscar a la FAT. Quan haguem guardat tot el fitxer hem d’indicar que aquest és l’últim bloc posant un 0x0FFFFFFF a l’entrada de la FAT de l’últim clúster del fitxer. Per saber quants dels bytes de l’últim clúster són vàlids haurem de mirar la mida del fitxer.

4.6.4 Lectura d’un fitxer

Per llegir el contingut d’un fitxer hem d’anar al clúster de dades que ens indica la seva entrada de directori i llegir tot el clúster a menys que aquest sigui l’últim clúster del fitxer, en aquest cas llegirem només la part que toca del fitxer.

4.6.5 Eliminar un fitxer

Eliminar el contingut d’un fitxer és tan simple com eliminar les entrades de la FAT que ocupa el fitxer i posar-les a 0x00000000 (lliure). Un cop haguem fet això hem de marcar que l’entrada de directori ja no està ocupada, posarem un 0xE5 en el primer caràcter del nom indicant que aquesta entrada està buida. El mateix farem amb les entrades de nom llarg.

4.6.6 Eliminació d’un directori

Quan eliminem un directori (i tot el seu contingut) hem de recórrer totes les entrades dels fitxers i directoris per eliminar tot el seu contingut.

En cas de trobar un fitxer seguirem els passos indicats en el apartat 4.6.5. Si trobem un directori mirarem tot el que hi ha dintre, un com haguem acabat de recórrer el directori l’eliminarem alliberant la FAT i posant 0xE5 a la seva entrada de directori i de nom llarg.

Page 49: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 48  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

L’algorisme que fa aquestes cerques ho fa recursivament.

4.6.7 Borrat de disc

Aquesta operació permet eliminar tots els arxius i directoris del volum. Haurem de recórrer tota la FAT, començant per la posició 2, marcant que les posicions estan lliures. Un cop fet això accedirem a la posició del root i escriurem un 0x0FFFFFFF indicant que la posició està ocupada i és la última i la primera.

Només quedarà anar al clúster del root i netejar-lo, deixant els primers 32 bytes que són l’entrada de directori del volum.

 

Page 50: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 49  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

5. Aplicació FAT32 Viewer 5.1 Introducció

Arribats a aquest punt, ja tenim nocions d’on se situa un sistema de fitxer dins del sistema operatiu. I, sobretot, com actua FAT32 en un volum per fer certes operacions sobre el fitxers i directoris.

Amb aquesta aplicació de caire docent l’usuari podrà crear imatges de disc formatejades en FAT32 i realitzar operacions bàsiques com crear directoris, pujar fitxers, eliminar fitxers, visualitzar el bootsector, la fat, etc. Destacar la importància de relacionar la informació del Sistema d’arxius amb la seva codificació en FAT32 (aprenentatge).

A continuació veurem l’aplicació està dissenyada i implementada.

5.2 Anàlisi de requisits

L’aplicació està destinada a alumnes de l’assignatura de Sistemes Operatius que faran servir l’aplicació per anar realitzant modificacions sobre la imatge en format FAT32 i veure com afecten aquestes operacions a la imatge.

5.2.1 Requisits funcionals

• L’aplicació ha de permetre crear imatges en FAT32 configurant els paràmetres:

o Nom del volum o Número de FATs o Sectors per clúster o Bytes per sector o Número de clústers

• Des de l’aplicació s’ha de poder visualitzar la informació i les estructures importants de l’aplicació. En concret:

o La FAT : mostrarem tota la FAT i podrem accedir a una casella en concret.

o El BootSector: mostrarem tots els camps un per un, i mitjançant un botó visualitzarem on es troba en el bootsector.

o El FSInfo: mostrarem tots el camps un per un, i mitjançant un botó visualitzarem on es troba en el FSInfo.

• L’usuari ha de veure l’arbre de directoris del volum.

• FAT32 Viewer ha de poder mostrar el contingut d’un fitxer tant en ASCII com en hexadecimal.

Page 51: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 50  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Fent click sobre un directori o fitxer l’usuari ha de veure l’entrada de directori o fitxer tant en hexadecimal com en ASCII. També hem de mostrar els següents atributs:

o Nom curt o Extensió o Nom llarg o Atribut o Marca de creació o Hora de creació o Data de creació o Data de l’últim accés o Hora de l’última escriptura o Data de l’última escriptura o Mida del fitxer o Primer clúster

• FAT32 ha de poder mostrar les entrades de directori que conté en hexadecimal.

• L’aplicació ha de permetre fer les següents operacions bàsiques sobre els fitxers:

o Pujar un fitxer del disc dur a la imatge. o Descarregar un fitxer de la imatge al disc dur. o Eliminar un fitxer de la imatge.

• L’aplicació ha de permetre fer les següents operacions bàsiques sobre directoris:

o Crear un directori dins la imatge. o Eliminar un directori i tot el seu contingut.

• L’usuari ha de poder visualitzar el clúster que desitgi de la imatge, tant en hexadecimal com en ASCII.

5.2.2 Requisits d’usabilitat

• L’aplicació, al ser una eina didàctica, ha de tenir una interfície amigable i fàcil d’usar.

• Tot i que s’entén que l’usuari de FAT32 Viewer serà un alumne o enginyer que ha de tenir certs coneixements bàsics de Sistemes Operatius, Sistemes d’arxius i fitxers FAT cal remarcar que l’objectiu més important de l’aplicatiu és l’aprenentatge.

• L’aplicació servirà com a suport al temari i a les pràctiques de l’assignatura de sistemes operatius.

Page 52: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 51  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

5.3 Decisions de disseny

5.3.1 Entorn d’execució

Quan una aplicació es pot implementar en un entorn web és molt interessant fer-ho ja que no cal instal·lar cap software i amb un simple navegador podríem fer servir l’eina.

L’aplicació haurà de llegir imatges en local dins de l’ordinador, el que fa que no sigui molt coherent fer l’aplicació via web, l’aplicació hauria de tenir permisos per accedir al disc de l’ordinador.

Vam considerar que lo més coherent era una aplicació executable funcionant sobre un dels dos sistemes operatius més importants avui en dia, Windows o Linux.

5.3.2 Entorn de programació

En aquest apartat vam considerar 3 opcions: Visual C#, Visual C++ i Java.

Al principi de tot la primera opció era Visual C++ 2005, ja que oferia el baix nivell que es requereix per accedir a nivell de bit dins del fitxer i certes proves realitzades prèviament havien estat fetes en C, lo que era fàcil passar de C a Visual C++. Després de començar la implementació em vaig adonar que gràficament no era tot lo potent que volia, i després d’estar fent proves en Visual C# vaig veure que es simplificava molt el tema de l’entorn gràfic de l’aplicació i quedava molt més atractiu.

Una altra motivació de fer servir Visual C# és que cada cop té més importància en el mercat i utilitzar-ho en el projecte era una oportunitat d’aprendre ja que era desconegut per mi.

L’altre opció, Java, tenia algun avantatge com el fet de ser multi plataforma, encara que l’usuari ha de tenir instal·lada la màquina virtual de Java, però la motivació per aprendre C# era més gran.

5.3.3 Estructura de l’aplicació

Podríem separar l’aplicació en dues parts, la que s’encarrega d’interaccionar amb l’usuari i la que llegeix i modifica la imatge.

 

Figura 22. Estructura de l’aplicació

La part de la interfície la podríem definir com els formularis i el control d’events. L’altra part integra tots els algorismes necessaris per modificar i llegir la imatge.

Page 53: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 52  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

5.3.4 Altres decisions de disseny

Durant l’etapa de disseny s’han pres certes decisions per optimitzar l’accés a la imatge, aquestes decisions han estat preses per accedir el mínim possible al fitxer i guardar la informació més important a memòria.

• Guardar regions importants a disc : S’ha cregut oportú guardar totes les regions prèvies a la zona de dades tals com el Bootsector, el FSInfo i la FAT a memòria. Això ens permetrà no tenir que accedir a disc cada cop que vulguem visualitzar alguna d’aquestes regions. Si volem visualitzar un fitxer només ens caldrà accedir a la zona de dades ja que tindrem guardada la FAT a disc i juntament amb el Bootsector podrem calcular on estan les dades.

• Visualització de fitxers i de la imatge clúster a clúster: Un cop fetes varies proves per visualitzar fitxers vaig comprovar que el rendiment de l’aplicació baixava molt si visualitzàvem un fitxer de mida gran i feia que l’aplicació quedes penjada durant un cert temps. El mateix passava quan accedíem a l’opció de visualitzar tota la imatge. Per aquest motiu vaig decidir mostrar tant els fitxers interns de la imatge com la pròpia imatge clúster a clúster. L’usuari disposarà d’uns botons navegar per el fitxer.

• Creació d’una FAT inversa : Si mostrem els fitxers clúster a clúster, l’usuari pot anar endavant i enrere pel fitxer, en cas de moure’s cap endavant només cal avançar per la FAT, en canvi si l’usuari vol veure el clúster anterior tenim un problema ja que hem de cercar per tota la FAT i trobar quin és el clúster anterior. La creació de la FAT inversa elimina aquesta cerca, en cas de voler accedir al clúster anterior només haurem d’accedir a la posició i aquesta ens donarà el clúster anterior. El principal problema de la FAT inversa és el temps de creació, ja que per cada casella a la que volem posar dins la FAT inversa haurem de recórrer tota la FAT. Si la imatge té una mida considerable aquesta operació pot resultar molt lenta.

• Guardar les dades de les entrades de directori dins dels nodes del arbre de directoris: Un cop obrim una imatge mostrarem l’arbre de directoris de la partició, he decidit guardar a cada node de l’arbre les dades de cada una de les entrades de directori relacionades amb cada fitxer o carpeta. Cada cop que l’usuari seleccioni un fitxer o carpeta ja tindrem guardat a disc les dades i les podrem mostrar sense accedir a disc.

Page 54: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 53  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

5.4 Analisi funcional 5.4.1 Model estàtic L’aplicació ofereix vàries funcionalitats, a continuació es mostra un diagrama de les operacions permeses, així com una especificació a alt nivell.

5.4.1.1 Diagrama de casos d’ús

Usuari

Crear imatge

Obrir imatge

Pujar fitxer

Crear carpeta

Eliminar fitxer

Eliminar carpeta

Descarregar fitxer

Formatejar imatge

Mostrar FSInfo

Mostrar la FAT

Mostrar BootSector

Mostrar Fitxer

 

Figura 23. Diagrama de casos d’ús

Page 55: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 54  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Vegem més en detall cada una de les operacions:

CAS D’ÚS: MOSTRAR EL BOOTSECTOR ID CU1 Descripció Mostra el bootsector. Actors Usuari CU Relacionats Precondició Cap Activació A discreció d’usuari. Fluxe Principal

1. L’usuari fa click sobre el botó mostra bootsector. 2. El sistema mostra el bootsector que té guardat a memòria.

Variacions Excepcions Postcondició Comentaris

Taula 11. Especificació del cas d’ús Mostrar Bootsector.

CAS D’ÚS: OBRIR IMATGE ID CU2 Descripció Obre una imatge en FAT32. Actors Usuari CU Relacionats Precondició La imatge existeix. Activació A discreció d’usuari Fluxe Principal

1. L’usuari selecciona un fitxer d’imatge ja existent. 2. El sistema carrega la imatge i la mostra a l’usuari.

Variacions Excepcions La imatge no té format FAT32. Postcondició La imatge ha estat oberta i carregada a l’aplicació. Comentaris

Taula 12. Especificació del cas d’ús Obrir imatge.

   

Page 56: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 55  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

CAS D’ÚS: PUJAR FITXER ID CU3 Descripció L’usuari pujarà un fitxer extern al sistema d’arxius. Actors Usuari CU Relacionats Precondició L’usuari ha seleccionat una carpeta dins l’arbre de directoris de

la imatge on vol pujar el fitxer. Activació A discreció d’usuari Fluxe Principal

1. L’usuari selecciona el fitxer que vol pujar. 2. El sistema puja el fitxer .

Variacions Excepcions El fitxer no cap dins la imatge Postcondició El fitxer apareix a l’arbre de directoris de la imatge. Comentaris

Taula 13. Especificació del cas d’ús Pujar fitxer.

CAS D’ÚS: FORMATEJAR IMATGE ID CU4 Descripció Eliminarem tots els fitxers i directoris de la imatge. Actors Usuari CU Relacionats Precondició L’usuari ha seleccionat el root de l’arbre de directoris de la

imatge. Activació A discreció d’usuari Fluxe Principal

1. El sistema recorre tot el sistema i elimina tots els fitxers. Variacions Excepcions Postcondició Tots els fitxers i directoris han estat eliminats. Comentaris

Taula 14. Especificació del cas d’ús Formatejar imatge.

   

Page 57: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 56  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

 

 

CAS D’ÚS: CREAR CARPETA ID CU5 Descripció Creació d’una carpeta dins del sistema d’arxius. Actors Usuari CU Relacionats Precondició L’usuari ha seleccionat una carpeta dins l’arbre de directoris de

la imatge on vol crear la carpeta. Activació A discreció d’usuari Fluxe Principal

1. L’usuari introdueix el nom de la carpeta. 2. El sistema crea la carpeta.

Variacions Excepcions La carpeta no cap dins la imatge.

El nom de la carpeta no és correcte. Postcondició La carpeta apareix a l’arbre de directoris de la imatge. Comentaris

Taula 15. Especificació del cas d’ús Crear carpeta.

CAS D’ÚS: ELIMINAR FITXER ID CU6 Descripció Eliminar un fitxer del sistema d’arxius. Actors Usuari CU Relacionats Precondició L’usuari ha seleccionat el fitxer que vol eliminar de la imatge. Activació A discreció d’usuari Fluxe Principal

1. El sistema elimina el fitxer i tot el seu contingut. Variacions Excepcions Postcondició El fitxer desapareix de l’arbre de directoris dins la imatge. Comentaris

Taula 16.Especificació del cas d’ús Eliminar fitxer.

   

Page 58: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 57  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

 

 

CAS D’ÚS: ELIMINAR CARPETA ID CU7 Descripció Eliminar una carpeta de la imatge i tot el seu contingut. Actors Usuari CU Relacionats Precondició L’usuari ha seleccionat una carpeta dins l’arbre de directoris de

la imatge que vol eliminar. Activació A discreció d’usuari Fluxe Principal

1. El sistema elimina la carpeta i tot el seu contingut. Variacions Excepcions Postcondició S’elimina la carpeta i el seu contingut de l’arbre de directoris. Comentaris

Taula 17.Especificació del cas d’ús Eliminar carpeta.

CAS D’ÚS: DESCARREGAR FITXER ID CU8 Descripció Guardarem un fitxer existent dins la imatge al sistema extern. Actors Usuari CU Relacionats Precondició L’usuari ha seleccionat el fitxer dins l’arbre de directoris de la

imatge que vol guardar al sistema extern. Activació A discreció d’usuari Fluxe Principal

1. L’usuari selecciona a on vol guardar el fitxer dins del sistema extern. 2. L’usuari escull el nom amb el que vol guardar el fitxer. 3. El sistema guarda el fitxer.

Variacions Excepcions Postcondició Comentaris

Taula 18. Especificació del cas d’ús Descarregar fitxer.

   

Page 59: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 58  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

CAS D’ÚS: MOSTRAR FITXER ID CU9 Descripció Mostra el contingut del fitxer. Actors Usuari CU Relacionats Precondició L’usuari ha seleccionat el fitxer. Activació A discreció d’usuari. Fluxe Principal

1. El sistema mostra el contingut del fitxer. Variacions Excepcions No es pot mostrar el contingut de directoris. Postcondició Comentaris

Taula 19. Especificació del cas d’ús Mostrar fitxer.

CAS D’ÚS: CREA IMATGE ID CU10 Descripció Mostra la FAT. Actors Usuari CU Relacionats Precondició Cap Activació A discreció d’usuari. Fluxe Principal

1. L’usuari fa clic sobre el botó mostra FAT. 2. El sistema mostra la FAT que té guardada a memòria.

Variacions Excepcions Postcondició Comentaris

Taula 20. Especificació del cas d’ús Crea imatge.

Page 60: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 59  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

5.4.1.2 Diagrama de classes

L’aplicació està formada en diverses classes, podríem dividir les classes en dos tipus: Les classes d’interfície (formularis) i les classes de dades.

Figura 5.x Diagrama de classes de FAT32 Viewer

Figura 24. Diagrama de classes

La classe que més interactua amb l’usuari és la classe frmPrincipal, des de ella accedirem a altres formularis i realitzarem la majoria d’accions que ens permet l’aplicació. La part de “back-end” la farà la classe fat32, conté totes les dades referents a la imatge i és la que llegeix i escriu del sistema d’arxius.

• Classe Program

Figura 25. Classe Program

Page 61: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 60  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

És la classe principal definida per C# per poder arrancar el programa. Conté la funció principal Main.

• Classe frmPrincipal

   

Page 62: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 61  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Figura 26. Classe frmPrincipal

Aquesta classe és de les més importants, des de ella podrem accedir a totes les opcions que ens ofereix l’aplicació. Conté un gran nombre de botons i objectes gràfics els quals tenen associat una acció, o sigui una funció. Aquesta és la raó perquè té tants camps i mètodes.

Page 63: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 62  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Classe frmNovaCarpeta

 

Figura 27. Classe frmNovaCarpeta

Aquesta classe només té una funcionalitat, se’ns visualitzarà a l’hora de crear una carpeta i validarà que el nom introduït és correcte.

• frmInfoFstClus

 

Figura 28. Classe frmInfoFstClus

Aquesta classe ens mostra informació respecte com està guarda el primer clúster dins d’una entrada de directori.

Page 64: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 63  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Classe frmFSInfo

 

Figura 29. Classe frmFSInfo

 

Aquesta classe mostra camp a camp la informació que conté el FSInfo.

 

Page 65: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 64  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• frmCreaImatge

 

Figura 30. Classe frmCreaImatge

El formulari ens demanarà certa informació necessària per crear la nova imatge.

 

Page 66: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 65  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• frmMostraFitxer

Figura 31. Classe frmMostraFitxer

Aquest formulari permet navegar per la imatge clúster a clúster i mostra la informació tant en hexadecimal com en ASCII.

 

Page 67: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 66  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• frmInfoNomLlarg

 

Figura 32. Classe frmInfoNomLlarg

Aquesta classe mostra el nom llarg del directori o fitxer seleccionat, i mostra una imatge de com està estructurat un nom llarg.

 

Page 68: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 67  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• frmInfoBoot

Figura 33. Classe frmInfoBoot

Page 69: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 68  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• frmInfoFAT

 

Figura 34. Classe frmInfoFAT

Aquesta classe mostra camp a camp la informació que conté el frmInfoFAT.

 

Page 70: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 69  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Classe fat32

Figura 35. Classe fat32

Aquesta classe és de les més importants, llegeix i escriu la imatge que l’aplicació té oberta. També conté tota la informació de disc: el bootsector, la FAT i el FSInfo. Les crides a les funcions les fa la classe frmPrincipal que interactua amb l’usuari.

 

Page 71: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 70  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Classe FAT

Figura 36. Classe FAT

Aquesta classe guarda la FAT que llegeix de la imatge i també la FAT inversa. Conté les operacions bàsiques per moure’s per la FAT.

• Classe FSInfo

Figura 37. Classe FSInfo

Conté l’informació del FSInfo, també s’encarrega de tenir actualitzat els valors en tot moment.

Page 72: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 71  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Classe bootsector

 

Figura 38. Classe bootsector

Conté la informació del bootsector i alguna informació més derivada d’aplicar certes formules.

 

Page 73: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 72  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Classe directory

Figura 39. Classe directory

Conté les dades guardades en una entrada de directori i els mètodes necessaris per obtenir certa informació com la data o la hora.

 

Page 74: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 73  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

• Classe NodeArbre

Figura 40. Classe NodeArbre

Classe necessària per guardar la informació de cada fitxer o directori dins d’un node de l’arbre de directoris.

 

 

Page 75: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 74  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

5.4.2 Model dinàmic

Les operacions les realitza l’usuari mitjançant les interfícies (formularis). Els següents diagrames mostren el procediment necessari per realitzar les operacions més importants dins de l’aplicació.

Figura 41. Diagrama de seqüencia de Crear Imatge

Quan l’usuari crea una imatge ha de fer 3 passos, activar la opció de la creació de la imatge, escriure les dades amb les propietats de la imatge i prémer la opció de creació.

Figura 42. Diagrama de seqüencia de Eliminar Fitxer de la imatge

L’usuari només ha de fer dos passos molt senzills i intuitius, seleccionar el fitxer a eliminar i prémer el botó corresponent.

 

Page 76: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 75  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Figura 43. Diagrama de seqüència de Pujar un fitxer a la imatge

L’usuari realitzarà el procés invers a quan elimina un fitxer, selecciona la carpeta on vol pujar el fitxer i indicarà quin arxiu vol pujar.

 

Figura 44. Diagrama de seqüència de Crear carpeta

L’usuari només haurà d’indicar on vol crear la carpeta, ho farà de la mateixa manera que quan puja un fitxer.

 

 

 

 

Page 77: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 76  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

 

 

Figura 45. Diagrama de seqüència de Descarregar fitxer

Per realitzar aquesta operació seguirem exactament els mateixos passos que per eliminar un fitxer, però seleccionarem a on volem guardar-lo (path).

 

Page 78: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 77  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

5.4.3 Algoritmes implementats

L’aplicació permet fer certes operacions bàsiques, especificarem els algoritmes de les més importants:

- Eliminar fitxer - Pujar fitxer - Crear directori - Elimina directori - Mostrar contingut de fitxer

A continuació veurem els diagrames de flux de cada un dels algoritmes.

1) Eliminar fitxer

 

Figura 46. Diagrama de flux d’Eliminar fitxer

Page 79: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 78  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

2) Pujar fitxer

Figura 47. Diagrama de flux de pujar fitxer

Page 80: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 79  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

3) Crear directori

Figura 48. Diagrama de flux de crear carpeta

 

Page 81: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 80  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

4) Elimina carpeta

Figura 49. Diagrama de flux d’eliminar carpeta

5) Mostrar contingut fitxer

Figura 50. Diagrama de flux de mostrar contingut de fitxer

 

Page 82: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 81  Estu

6. Per lsegüimpo

Tal impldocu

udi del sistem

Coa realitzacióent es pot

ortants.

i com es ementació,

umentació.

10%

30%

ma d'arxius F

ost de ó del projecveure el p

F

pot veure tot seguit

FAT32 i imple

la reacte s’han depercentatge

Figura 51. Esti

la fase qdel temps

Estima

ementació d

alitzacdicat aproxique s’ha d

imació de dist

que més tededicat a la

ació de 

d'una aplicac

ció delimadament dedicat a c

tribució de fein

emps a reqa memòria

20%

40%

temps

ió docent 

l projeunes 680 h

cada una d

na

querit ha i per últim

ecte hores, en el gde les fases

esta la fasm el disseny

Documenta

Implement

Disseny

Memòria

gràfic s més

se de y i la

ació

tació

Page 83: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 82  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

7. Conclusions Les conclusions d’aquest treball es centren en tres aspectes: l’eina implementada, el sistema de fitxers estudiat i finalment els coneixements aportats per la realització del treball.

La implementació de l’aplicació ha complert els objectius inicials, com són el poder crear i visualitzar una imatge en format FAT32 i, també, dur a terme les operacions bàsiques realitzades normalment per un sistema operatiu com, per exemple, les de crear i eliminar carpetes i fitxers.

També creiem que l’aplicació és prou atractiva per a l’usuari i que complementada amb la memòria dóna la suficient informació perquè l’usuari pugui entendre el sistema de fitxers FAT32 i pugui “jugar” amb ell. Considerem que serà una eina força útil pels estudiants de l’assignatura de sistemes operatius ja que la poden fer servir per aprofundir els seus coneixements en els sistemes d’arxius i més concretament FAT32.

Volem remarcar que no hem trobat cap aplicació similar que permeti visualitzar fitxers en format FAT32. Per a realitzar les proves hem utilitzat el sistema operatiu Linux que permet muntar imatges en diversos sistemes de fitxers, i entre ells FAT32.

Vam trobar interessant realitzar un estudi sobre el sistema de fitxers FAT32 al ser un dels dos sistemes que pot utilitzar el sistema operatiu més utilitzat avui en dia, com és Windows XP, encara que ja no s’utilitza en el Windows Vista, el nou sistema operatiu de Microsoft que actualment utilitza TxFS, evolució de NTFS. D’aquesta manera veurem quins problemes ha d’afrontar el sistema operatiu i podrem trobar possibles solucions i tenir així una certa idea de com ho ha implementat Microsoft. Considero aquesta part la més interessant ja que ens situem a baix nivell a l’hora de llegir la imatge formatada en FAT i realitzem estratègies per poder llegir i modificar les dades guardades dins la imatge. Així doncs, haurem de pensar en els possibles problemes que ens podem trobar a l’hora d’aplicar aquestes estratègies.

He arribat a la conclusió que encara que FAT és un sistema de fitxers bastant complet té certs problemes importants i penso que es podria millorar o en tot cas es podria optimitzar el seu funcionament. Per exemple, sobta la manera com FAT32 guarda els noms dels fitxers. Primer guarda un nom curt tot en majúscules i, en cas de no tenir prou espai, el talla per guardar-lo, ja que com a màxim pot guardar 8 caràcters de nom i 3 d’extensió. Un cop guardat en majúscules, guarda el nom llarg i en un format molt poc òptim ja que en 32 bytes només guarda 13 caràcters. Altres sistemes com EXT2 guarden el nom dinàmicament amb la qual cosa l’ús d’espai es redueix.

Pel que fa a com FAT guarda les dades crec que és interessant veure la manera com utilitza una llista enllaçada amb la variant que guarda tots els índex en una sola regió de disc, en aquest cas la FAT. Això permet recórrer tot el fitxer de manera fàcil i en cas de

Page 84: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 83  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

pèrdua d’un clúster podem seguir visualitzant correctament els clústers no danyats ja que la FAT seguiria tenint els índex dels clústers.

De cara a la documentació disponible, Microsoft va publicar l’any 2000 un White Paper en el que especificava molta informació sobre FAT32, i que conjuntament amb informació obtinguda de pàgines web és bastant completa. De tota manera cal destacar que la informació sobre FAT en els llibres consultats és bastant pobre i genèrica.

Personalment, la realització d’aquest treball ha estat molt útil per aprendre noves tecnologies i, sobretot, la programació orientada a events ja que aquest tipus de programació no es tracta actualment a la carrera. En aquest cas he utilitzat Visual C#, que és un llenguatge cada cop més utilitzat i més popular en el món de les empreses. Encara que ha estat costós, estic molt satisfet per haver après aquest nou llenguatge ja em facilitarà la feina a l’hora d’aprendre nous llenguatges de programació orientats a events i, sobretot, de la plataforma .NET.

Pel que fa a l’aprenentatge de nous conceptes teòrics, he aprofundit molt en FAT32, però també en totes en les característiques d’un sistema de fitxers, encara que part d’aquesta matèria ja l’havia vist a l’assignatura de Sistemes Operatius, com per exemple l’administració de l’espai lliure o bé la implementació de directoris. Ha estat interessant relacionar aquesta informació amb un sistema de fitxers real i veure amb tots els problemes que ens trobem a l’hora de fer certes operacions.

Page 85: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 84  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

8. Línies de futur

Després d’haver realitzat l’aplicació complint tots els objectius inicials se’ns obre un món de possibilitats de cara a altres eines relacionades amb l’àrea de sistemes operatius.

• Estudi d’altres sistemes de fitxers: en aquest treball hem realitzat l’estudi d’un sistema FAT i més en concret de FAT32, aquest sistema no deixa de ser un de entre molts sistemes de fitxers que podríem estudiar. Entre ells NTFS o EXT3 serien els sistemes de fitxers actualment més utilitzats en sistemes operatius Windows i Linux respectivament, encara que ens podríem trobar problemes de documentació sobretot amb el sistema de fitxers NTFS propietari de Microsoft i actualment utilitzat ens els seus dos sistemes operatius més recents. També seria interessant veure altres sistemes de fitxers com ReiserFS, HPFS, XFS...

• Millores en l’aplicació: la nostra aplicació permet realitzar les operacions bàsiques d’un sistema de fitxers. La creació de imatges està basada en una crida del programa mkdosfs passant els paràmetres adequats per la creació d’una imatge en FAT32. Una possible millora seria prescindir d’aquest programa i l’aplicació fes la creació integra de la imatge, d’aquesta manera també tindríem la opció de crear imatges bootables, ja que mkdosfs no permet crear imatges bootables.

• Millores en FAT32: després d’aquest estudi de FAT32 ens hem adonat que hi ha certes característiques de FAT32 que poden donar certs problemes o que són poc optimes. La manera de guardar els noms llargs és molt poc òptima, trobar una solució diferent i més òptima podria millorar el rendiment de lectura de la imatge. També seria interessant tenir guardada a disc una FAT inversa ja que molts cops és necessari avançar o retrocedir pels clústers d’un fitxer i tenir una FAT inversa guardada a disc estalviaria el fet de tenir-la que crear al inici del operatiu i estalviaria un cert temps.

• Realització d’un sistema de fitxers propi: gràcies a l’estudi de varis sistemes de fitxers fets dins del Departament d’Informàtica podríem analitzar els avantatges i desavantatges de cada un, i després de realitzar un estudi implementar un sistema de fitxers propi que reuneixi totes les avantatges analitzades. Aquesta línia de futur és la més ambiciosa ja que hauríem de realitzar múltiples tests, realitzar un estudi de l’ús que li volem donar al sistema operatiu, fer les estadístiques corresponents i, llavors, començar a dissenyar el sistema d’arxius.

• Càrrega de particions FAT32 de discs locals: l’aplicació només permet obrir fitxers de disc amb format FAT32, seria interessant poder visualitzar particions reals del disc local i, un cops realitzéssim operacions, veure com el sistema operatiu va mostrant els canvis realitzats des de l’aplicació.

 

Page 86: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 85  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

9. Bibliografia 9.1 Pàgines web

1.- ZATOR SYSTEMS (2007). Sector de carga. [En línia]. [Consultat: desembre 2007]. Disponible a Internet: “http://www.zator.com/Hardware/H8_1_2c2.htm”.

2.- ZATOR SYSTEMS (2007). Sistemas FAT y NTFS. [En línia]. [Consultat: desembre 2007]. Disponible a Internet: “http://www.zator.com/Hardware /H8_1_2a1.htm”.

3.- EDM/2 (2007). Inside the High Performance File System. [En línia] . [Consultat: setembre 2007]. Disponible a Internet : “http://www.edm2.com/0410/hpfs1.html”.

4.- MICROSOFT TECHNET (2007). Working with File Systems. [En línia]. [Consultat: setembre 2007]. Disponible a Internet : “http://technet.microsoft.com/en-us/library/bb457112.aspx”.

5.- NTFS.COM (2007). File System Specifications. Documentation. [En línia]. [Consultat: juliol 2007]. Disponible a Internet : http://www.ntfs.com/fat-32structure.htm.

6.- LINUX COMMAND DIRECTORY (2007). Alphabetical Directory of Linux Commands [En línia] : Mkdosfs. [Consultat juliol 2007]. Disponible a Internet : “http://www.onlamp.com/linux/cmd/cmd.csp?path=m/mkdosfs”.

7.- JAVA2S (2007). C# / C Sharp Examples [En línia] [Consultat agost 2007]. Disponible a Internet : ”http://www.java2s.com/Code/CSharp/CatalogCSharp.htm”.

8.- DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN (2008). Administración de archivos [En línia] [Consultat gener 2008]. Disponible a Internet: “http://sistemas.itlp.edu.mx/tutoriales/sistemasoperativos2/unidad4.htm”.

9.- INSTITUTO TECNOLÓGICO DE CHIHUAHUA (2008). Sistema de Archivos [En línia] [Consultat gener 2008]. Disponible a Internet: “http://w3.itchihuahua.edu.mx/ ~apacheco/expo/view.php?f=os_53”

9.2 Llibres

9.- A. SILBERSCHATZ, P. GALVIN, G. GAGNE (2002). Sistemas Operativos. 4th ed.

México : Editorial Limusa, S.A. ISBN: 968-18-6168.

10.- W. STALLINGS. (2005). Sistemas Operativos. Aspectos de diseño y principios de diseño. 5

th ed. ISBN: 84-205-4462-0.

Page 87: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 86  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

11.- J. CARRETERO, J. GARCÍA CARBALLEIRA, P. MIGUEL ANASAGASTI, F. PÉREZ COSTOYA. (2001). SISTEMAS OPERATIVOS, Una visión aplicada. 2

th ed.

Madrid: McGraw-Hill/Interamericana de españa. ISBN: 84-481-3001-4.

9.3 Documents

12.- MICROSOFT CORPORATION. (2000). Microsoft Extensible Firmware Initiative FAT32 File System Specification.

Page 88: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 87  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

10. Annex. Manual d’usuari 10.1 Prerequisits

Per el correcte funcionament de l’aplicació es requereix tenir instal·lat el .NET Framework 2.0. Un cop instal·lat podrem executar l’aplicació.

10.2 Execució de l’aplicació

Un cop oberta l’aplicació bàsicament podem fer dues operacions:

• Crear imatge FAT32

• Obrir imatge FAT32

Seguidament veurem que permet fer cada una de les opcions.

10.3 Crear imatge FAT32

Aquesta opció permet crear imatges en FAT32, haurem d’introduir el nom del volum, el número de FATs, els sectors per clúster, els bytes per sector i el número de clústers desitjats.

Figura 10.1 Formulari crea imatge

Un com haguem omplert el formulari i acceptem seleccionarem a on volem guardar la imatge i el programa procedirà a crear-la.

10.4 Obrir imatge FAT32

Aquesta opció permetrà obrir una imatge i comprovarà que estigui en format FAT32.

Un cop haguem obert la imatge se’ns mostrarà l’arbre de directoris i quatre botons que serviran per visualitzar informació.

Page 89: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 88  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Figura 10.2 Formulari principal de l’aplicació

A primera vista disposarem de certa informació, com els valors de l’entrada de directori del root i el % d’espai lliure que queda a la imatge.

10.4.1 BootSector

Aquesta opció ens permet accedir a la regió del BootSector i ens mostrarà els valors de cada camp. L’usuari podrà interactuar de manera que seleccionarà un dels camps i se li visualitzarà on està guardat dins del bootsector.

10.3 Visualització del Bootsector

Page 90: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 89  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

10.4.2 FSInfo

De la mateixa manera que el Bootsector tenim la opció de visualitzar la regió del FSInfo, l’usuari interactuarà de la mateixa manera, seleccionant els camps que vulgui per veure on estan guardats.

Figura 10.4 Visualització del FSInfo

10.4.3 FAT

En aquesta funcionalitat l’usuari podrà interactuar i visualitzar una de les parts més importants del sistema d’arxius FAT32.

Figura 10.5 Visualització de la FAT

Page 91: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 90  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

L’usuari podrà veure el contingut de la regió de la FAT en hexadecimal i també podrà accedir a una posició en concret de la FAT. Un cop l’usuari introdueixi el clúster desitjat se li mostrarà quin és el valor del següent clúster i se li seleccionarà dins del textbox on es mostra la FAT en hexadecimal:

Figura 10.6 Valor d’un clúster dins la FAT

10.4.4 Visualitzar imatge

L’aplicació permet mostrar el contingut de la imatge tant en hexadecimal com en codi ASCII. La informació es mostra clúster a clúster i l’usuari podrà navegar pels clústers mitjançant les fletxes cap a la dreta i cap a l’esquerra o introduint el valor d’un clúster en concret.

10.7 Visualització de la imatge

10.4.5 Entrada de directori

Un cop seleccionat un fitxer o carpeta de l’arbre de directoris l’aplicació mostra les dades que conté la seva entrada de directori.

Page 92: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 91  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

Com es veu a la imatge 10.9 cada un dels camps té un botó a la seva esquerra el qual marcarà sobre l’entrada de directori mostrada més a baix en hexadecimal, així serà fàcil veure com es guarda dins de la imatge.

Figura 10.8 Informació de com es guarda un nom llarg

Els camps “Primer clúster” i “Nom llarg” disposen d’informació extra i mostren un altre formulari informant sobre com es guarden les dades. A la figura 10.8 es pot veure el formulari que apareix en pantalla.

Figura 10.9 Visualització de les dades d’una entrada de directori

En el propi formulari principal l’usuari també té la opció de veure el contingut del fitxer o de la carpeta en format hexadecimal o bé ASCII.

Page 93: Abstract - users.salleurl.eduusers.salleurl.edu/~xavic/memories/RicardForcada_TFC.pdf · Abstract En aquest treball realitzarem un estudi dels sistemes de fitxers aprofundint en el

 92  Estudi del sistema d'arxius FAT32 i implementació d'una aplicació docent 

10.4.6 Operacions de fitxer

L’usuari disposarà de dues operacions en quan a fitxers, la d’eliminar-lo de la imatge i la de descarregar-lo en el disc local.

10.4.7 Operacions de carpeta

En aquest cas l’usuari podrà fer tres operacions, eliminar la carpeta i tot el seu contingut, crear una nova carpeta i pujar un fitxer dins la carpeta seleccionada.