Gestió de fitxers

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

Les dades que manegen els ordinadors són manipulats de manera directa a través de la memòria principal. Però la memòria principal té dues limitacions: La primera és la pròpia capacitat de la mateixa i la segona és que la memòria principal només guarda les dades de forma temporal mentre l'ordinador està encès. Els discos durs i altres memòries secundàries proporcionen un emmagatzematge indefinit i de gran capacitat. A més, serveixen per estructurar la informació de cara a una millor relació amb l'usuari. Cal entendre com el Sistema Operatiu es relaciona amb els discs durs. En concret com gestiona els arxius. A part de la utilitat per als administradors de sistemes; els programadors, fins i tot els usuaris, troben aquests coneixements útils per al seu treball. Cal, a més, conèixer els possibles problemes de seguretat i com evitar-los.

La majoria de sistemes operatius posseeixen el seu propi sistema d'arxius. La utilitat dels arxius és donar una visió uniforme de la informació emmagatzemada. Un arxiu és una unitat lògica d'emmagatzematge. Els arxius tenen un nom i una ruta que els identifica. El nom se sol connectar a un índex en una taula d'assignació. La ruta indica als directoris que pertany. L'organització de directoris sol ser en forma d'arbre. Alguns sistemes d'arxius necessiten que el nom del fitxer contingui una extensió que indica quin format té. D'aquesta manera, la ruta de l'arxiu pot contenir: el dispositiu al qual fa referència o directori arrel, els directoris als quals pertany organitzats de forma jeràrquica i separats per la barra \ o barra invertida /; i el nom del fitxer amb o sense extensió. La ruta pot ser absoluta si comença des del directori arrel o relativa si depèn del directori en que es trobi en aquest moment el procés. Els arxius compten, a més amb una sèrie d'atributs que serveixen per gestionar millor. Entre ells estan: Nom, Tipus, Contingut, Mida, Data i hora, Usuaris, Atributs de seguretat i altres. La protecció dels arxius es fa en la majoria de sistemes actuals mitjançant llistes de control d'accés. Aquestes llistes tenen problemes de seguretat. Els sistemes experimentals utilitzen l'anomenat accés per capacitats.

Es poden distingir tres tipus de sistemes d'arxius:

  • Sistemes d'arxiu de disc
  • Sistemes d'arxiu de xarxa
  • Sistemes d'arxius de propòsit especial

Els sistemes d'arxius de disc estan dissenyats per a l'emmagatzematge en discs durs connectats a un ordinador. EFS, EXT2, EXT3 FAT, NTFS, HFS, XFS, ISO 9660 per CDs, entre molts altres, són sistemes d'arxius de disc. Els sistemes d'arxius en xarxa, accedeixen als arxius a través de la xarxa. SAMBA, CODA, NFS NSS són alguns dels més coneguts. Els sistemes d'arxius de propòsit especial són els que no caben en les classificacions anteriors: Swap, acme, cfs, archfs són alguns exemples de sistemes de propòsit especial. Swap és, per exemple, el sistema usat per UNIX per a l'intercanvi de memòria virtual.

Concepte d'arxiu

Un Arxiu és un conjunt de dades estructurades que pot estar emmagatzemat en un suport de dades. Els arxius poden contenir diferents tipus d'informació i, depenent del seu ús, han de tenir una determinada estructura. Aquests són els casos possibles:

  • El SO pot tenir coneixement d'aquestes diferents estructures lògiques i considerar diferents tipus d'arxius. Els desavantatges són que el sistema operatiu ha de ser molt més gran i que suposa una gran rigidesa al només poder-se considerar els arxius definits pel sistema.
  • En SO 's com Unix no es defineixen els tipus d'arxius, amb la qual cosa té una gran flexibilitat, però amb un suport mínim, de manera que els programes d'aplicació han d'incloure el codi que interpreti l'estructura adequada dels arxius. El SO només empaqueta i desempaqueta els bytes quan els escriu i els llegeix del disc d'acord amb els blocs físics del mateix.
  • També es pot considerar un arxiu com una seqüència de registres lògics cadascun amb la seva pròpia estructura interna. Aquesta manera està en desús, encara que la visió d'Unix i MS-DOS és una particularització d'aquesta, reduint-se el registre lògic a un byte.
  • Estructures d'arbre Els registres tenen una clau i l'operació bàsica no és obtenir el següent registre, sinó obtenir el registre amb la clau especificada.

Depenent de com s'organitzin els registres, es poden distingir tres tipus d'arxius: Sèrie no estructurada de bytes, Seqüència de registres de longitud fixa o Arbre de registres.

Un arxiu pot ser llegit, escrit, modificat, creat, eliminat i mogut. De tot això s'encarreguen els programes, encara que el sistema operatiu també proporciona eines per a això.

Sistemes d'arxius

Els arxius estan emmagatzemats en suports d'emmagatzematge permanent. El SO els manipula a través d'eines com el gestor de fitxers. A nivell de programes, un arxiu és una seqüència de bytes sense ordre o agrupats en registres. Com s'emmagatzemen en dispositius orientats a blocs, els arxius o fitxers estan compostos de blocs de grandària fixa, normalment 512 bytes. El sistema d'arxius permet l'organització d'aquests blocs en arxius o directoris. Guarda, a més, la informació de què blocs pertanyen a quins arxius i quins estan lliures. Un sistema d'arxius deu, per tant, oferir els següents serveis:

  • Seguretat i permisos.
  • Mecanismes per evitar la fragmentació
  • Capacitat d'enllaços simbòlics o durs
  • Integritat d'arxius
  • Suport per a arxius dispersos
  • Quotes de disc
  • Suportar el creixement del sistema d'arxius.
  • Memòries cau de disc

Pel que fa a la seguretat i els permisos. Un sistema segur ha de mantenir la integritat, és a dir, les dades han de ser correctes, la disponibilitat i la privacitat de la informació. Això suposa la protecció enfront de modificacions no autoritzades ia la modificació no detectada de dades, així com la resistència a la penetració. Aquestes són algunes les formes de penetració a un sistema d'arxius:

  • Utilització per part d'un intrús del compte d'un usuari legítim.
  • Execució de programes anomenats "cavalls de Troia", que oculten part de la seva funcionalitat, normalment destinada a obtenir dades o drets d'accés de l'usuari.
  • Propagació de cucs i virus informàtics.
  • Accés a l'arxiu de les contrasenyes

Contra tot això, el sistema operatiu pot usar diferents mecanismes de protecció:

  • Les llistes de control d'accés, les quals són insegures, encara que les més usades actualment.
  • El sistema UGO (user, group and others) que estableix permisos en una jerarquia: per a l'usuari creador, el grup de l'usuari i tots els altres.
  • Fer servir les capacitats i altres atributs més complexos.

Cada sistema operatiu usa el seu propi sistema de protecció.

El següent servei del sistema és el d'evitar la fragmentació. Els arxius es poden repartir per tot el disc, dividits en blocs, aquest és un dels serveis dels sistemes d'arxius actuals. Normalment quan s'ha d'accedir a un arxiu calen diversos blocs, de manera que el capçal pot ser que hagi de moure massa. Això fa que l'accés sigui ineficient. Els sistemes operatius han de mantenir el disc poc fragmentat, eines com el compactador de Windows ajuden a solucionar el problema.

Els enllaços són una altra de les característiques dels sistemes de fitxers moderns. Un enllaç és un arxiu que simplement apunta a un altre arxiu en el disc. Això és útil per a organitzar millor l'arbre de directoris. Cada sistema operatiu ho resol d'una manera. Els enllaços simbòlics apunten a la ruta de l'arxiu que enllacen. L'operació LINK de unix, crea un apuntador a l'i-node de l'arxiu i incrementa el comptador d'enllaços de l'i-node. Si s'eliminés l'arxiu, l'enllaç apuntaria a un i-node no vàlid.

Les quotes i el suport per al creixement és una cosa que ajuda a no saturar el disc dur a mesura que es faci servir l'ordinador. Les quotes reserven un límit d'espai a cada usuari. El sistema d'arxius ha, a més, poder suportar un augment de la capacitat dels discos.

Els discos tenen la seva pròpia memòria cau, però el SO pot implementar una memòria cau en memòria principal per no haver de fer tantes peticions al disc. La gestió de la memòria cau és similar a la gestió de la memòria, que com es veu en el tema 16, pot ser mitjançant algoritmes com FIFO o LRU. Hi ha dues maneres de comunicar la memòria cau amb el disc: Mitjançant l'escriptura diferida, en la que s'escriu en memòria cau per després passar al disc o mitjançant l'escriptura directa. La memòria cau millora considerablement el rendiment del sistema.

A més, el sistema operatiu, ha de mantenir un espai en el disc dur per a l'intercanvi de memòria virtual. Això pot o no estar relacionat amb el sistema d'arxius. Per exemple, Windows XP usa un fitxer d'intercanvi especial, protegit i ocult, de mida variable allotjat per defecte en c :. LINUX utilitza una partició al marge del sistema de fitxers anomenada SWAP.

Implementació del sistema d'arixus

- Assignació adjacent

Emmagatzema cada arxiu en una sèrie de blocs adjacents de dades en el disc. És de fàcil implementació i bon rendiment. Però no és realitzable llevat que es conegui la mida màxima de l'arxiu i el disc queda molt fragmentat.

- Assignació en forma de llista lligada

Manté cada arxiu amb una llista lligada de blocs. La primera paraula de cada bloc apunta a l'bloc següent. Això soluciona el problema anterior de la fragmentació, però l'accés aleatori és molt lent, ja que ha de llegir tota l'estructura d'arxius i directoris.

- Assignació mitjançant una llista lligada i un índex

Si a més de la llista lligada s'afegeix un índex el problema d'accés aleatori es soluciona. Cada arxiu té una llista dels blocs que li pertanyen. A la taula, cada bloc indica si està ocupat o lliure i si està ocupat dóna l'adreça del següent bloc de l'arxiu al qual pertany. El problema és que la taula ha d'estar en memòria principal contínuament i pot ocupar gran part de la memòria o fins i tot desbordar-la. El sistema FAT, per exemple, organitza el disc de manera que posseeix una taula d'assignació d'arxius al començament del disc.

- I-NODES

Finalment, els sistemes Unix o Linux utilitzen els anomenats i-nodes. Amb aquests, se li associa a cada arxiu una petita taula que conté la direcció dels blocs d'aquest arxiu. Si en aquesta llista no hi cap tothom, les posicions de la llista apunten a altres blocs d'adreces. Hi pot haver diversos nivells de blocs indirectes. Quan es carrega l'arxiu, es carrega en memòria principal l'i-node corresponent per accedir més ràpid. Ext2, ext3 ext4 XFS, per exemple fan servir i-nodes en la seva implementació.

  • FAT: No segur, no flexible, limiti mida nom, limiti mida arxius, límit mida discos.
  • NTFS: Arbre b +, privatiu, fiable, es recupera d'errors, seguretat amb llista de control d'accés, no té límits.
  • EXT2 I-Nodes, fiable, UGO
  • NFS sistema en xarxa, RPC,

Gestió de l'espai lliure

Com ja he explicat, el sistema d'arxius ha de ser capaç de saber quins blocs estan ocupats o lliures. Per a això pot utilitzar dos estratègies:

  • Mapa de bits: cada bit representa un bloc, posant-se a 1 si està lliure o 0 si està ocupat.
  • Llista enllaçada de blocs: els blocs lliures s'enllacen entre si.

El sistema d'arxius es guarda al disc dur. El sistema operatiu ha de ser capaç de fer peticions al disc dur de forma eficient.

Sistemes d'arxius en Linux

El sistema d'arxius virtual

Principi

El nucli de Linux conté una capa del sistema d'arxius virtual que s'usa durant les crides al sistema que actuen en els fitxers. La VFS és una capa de indirecció que suporta el sistema d'arxius i crida a les funcions necessàries en el codi del sistema de fitxers físic per fer l'I / O.

Ext2-vfs.gif

Quan un procés emet una trucada al sistema demanant l'arxiu, el nucli crida a una funció continguda en la VFS. Aquesta funció s'encarrega de redireccionar la crida a una funció continguda en el codi de sistema de fitxers físic.

El VFS defineix un conjunt de funcions que cada sistema de fitxers ha de posar en pràctica. Aquesta interfície es compon d'un conjunt d'operacions associades a tres classes d'objectes: sistemes d'arxius, inodes, i arxius oberts.

El VFS sap sobre els tipus de sistemes de fitxers suportats en el nucli. S'utilitza una taula definida a la configuració del nucli. Cada entrada en aquesta taula descriu un tipus de sistema de fitxers: conté el nom del tipus de sistema de fitxers i un punter a una funció anomenada durant l'operació de muntatge. Quan un sistema de fitxers es va a muntar, es diu la funció de muntatge apropiada. Aquesta funció és responsable de llegir el superbloc des del disc, la inicialització de les seves variables internes, i tornar un descriptor de sistema de fitxers muntat al VFS. Després es munta el sistema de fitxers, les funcions VFS poden usar aquest descriptor per accedir a les rutines del sistema d'arxius físics.

Un descriptor de sistema de fitxers muntat conté diversos tipus d'informació: informació que són comuns a tots els tipus de sistemes de fitxers, punters a funcions proporcionades pel codi del nucli del sistema de fitxers físic i les dades privades mantinguts pel codi del sistema de fitxers físic. Els punters a funcions contingudes en els descriptors del sistema de fitxers permeten el VFS per accedir a les rutines internes de sistemes d'arxius.

Altres dos tipus de descriptors són utilitzats pels VFS: un descriptor d'inode i un descriptor de fitxer obert. Cada descriptor conté informacions relacionades amb els arxius en ús i un conjunt d'operacions previstes pel codi del sistema de fitxers físic. Mentre que el descriptor de node-i conté punters a funcions que poden utilitzar-se per actuar en qualsevol arxiu (per exemple, crear, desvincular), els descriptors de fitxer conté punter a funcions que només poden actuar sobre els arxius oberts (per exemple, llegir, escriure).


Enllaços

http://www.ibm.com/developerworks/library/l-virtual-filesystem-switch/

Llista de sistemes de fitxers

Anàlisi de FAT en Linux

Anàlisi d'ext2

Diseñando e implementando mi propio sistema de ficheros