TFC – Estudio de un sistema de ficheros Windows e

Anuncio
TFC – Estudio de un sistema de ficheros Windows e
implementación de una aplicación docente para su
aprendizaje
is12995 – José María del Río Cebrián
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Abstract
La necesidad, tanto de usuarios como de organizaciones, de almacenar información en
dispositivos hace necesarios mecanismos que gestionen tales dispositivos para que el
almacenamiento sea consistente y organizado. Los sistemas operativos se encargan de esta
gestión mediante un subsistema de archivos. El objetivo que se pretende alcanzar con la
realización de este trabajo es analizar, discutir y considerar las diferentes alternativas, tanto de
diseño como de implementación, que se utilizan en la implementación de los sistemas de
archivos, así como ver la aplicación de estas alternativas en un sistema de archivos utilizado
por el sistema operativo Windows mediante una aplicación de carácter docente.
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Resumen
A lo largo del proyecto se pretende dar una visión de los diferentes componentes con
los que interactúa el sistema de archivos como parte del sistema operativo.
En primer lugar, se revisa el concepto de memoria secundaria como bloque de la
jerarquía de memoria. Se analizan sus características y se hace especial hincapié en la
necesidad de la misma cuando hablamos de almacenamiento persistente. También se dan
nociones de cómo interaccionan el subsistema de entrada y salida del sistema operativo y los
dispositivos de almacenamiento.
En segundo lugar, se examinan los diferentes dispositivos disponibles para el
almacenamiento de información, especialmente los discos magnéticos o discos duros. Se
analiza su estructura, su funcionamiento y cómo los gestiona el sistema. Se estudia también el
funcionamiento de los manejadores y controladores de disco, así como los algoritmos de
planificación de disco existentes.
Posteriormente, se pretende relacionar los dispositivos de almacenamiento con los
sistemas de archivos. Se definen para ello los conceptos de partición, formateado y volumen.
Se analiza también el proceso que sigue el sistema operativo para arrancar.
A continuación, se estudia qué es un sistema de archivos. Para ello se revisan los
conceptos de archivo y directorio. Se detallan sus atributos, las operaciones que se permiten
sobre ellos y las estructuras que los conforman. Se da relevancia a las dos posibles visiones de
archivo y directorio, visión física y visión lógica. Finalmente, se define y caracteriza un
sistema de archivos y se dan algunos ejemplos.
Los siguientes dos apartados hablan de sistemas de archivos Windows: FAT, HPFS,
NTFS y WinFS. El sistema FAT es analizado exhaustivamente tanto a nivel de estructuras
como a nivel de funcionamiento. Se introducen también los otros tres sistemas citados.
Desde un punto de vista práctico, se ha desarrollado una aplicación que permite
interactuar con un sistema de archivos FAT. Se trata de una aplicación de carácter docente
que permite el aprendizaje de forma clara e intuitiva del sistema de archivos en cuestión. Los
apartados de la parte práctica muestran características del diseño e implementación de la
aplicación, así como las funcionalidades que incorpora dicha aplicación. El anexo contiene un
manual de usuario de la aplicación.
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Índice general
1.- INTRODUCCIÓN..............................................................................................................1
1.1.- ENFOQUE DEL TRABAJO ........................................................................................................ 1
1.2.- OBJETIVOS ................................................................................................................................. 1
1.3.- ESTRUCTURA DE LA MEMORIA............................................................................................ 1
2.- MEMORIA SECUNDARIA .............................................................................................2
2.1.- INTRODUCCIÓN ........................................................................................................................ 2
2.2.- JERARQUÍA DE MEMORIA ...................................................................................................... 2
2.3.- NECESIDAD DE MEMORIA SECUNDARIA........................................................................... 4
2.4.- SISTEMA OPERATIVO Y GESTIÓN DE MEMORIA SECUNDARIA................................... 5
3.- DISPOSITIVOS DE ALMACENAMIENTO..................................................................9
3.1.- INTRODUCCIÓN ........................................................................................................................ 9
3.2.- DISCOS DUROS .......................................................................................................................... 9
3.2.1.- Estructura ...................................................................................................................... 9
3.2.2.- Parámetros de capacidad y rendimiento ..................................................................... 10
3.2.3.- Formateado físico ....................................................................................................... 12
3.2.4.- Controladoras e interfaces de disco............................................................................. 12
3.2.5.- Manejadores de dispositivos y planificación de disco ................................................ 15
3.3.- OTROS DISPOSITIVOS DE ALMACENAMIENTO .............................................................. 18
4.- DISCO DURO Y SISTEMA DE ARCHIVOS ..............................................................19
4.1.- INTRODUCCIÓN ...................................................................................................................... 19
4.2.- CONCEPTOS ............................................................................................................................. 19
4.2.1.- Particiones. Tipos de particiones................................................................................. 19
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
4.2.2.- Formateado lógico y volúmenes ................................................................................. 22
4.3.- PROCESO DE ARRANQUE DEL SISTEMA OPERATIVO................................................... 23
5.- SISTEMAS DE ARCHIVOS ..........................................................................................24
5.1.- INTRODUCCIÓN ...................................................................................................................... 24
5.2.- CONCEPTO DE ARCHIVO ...................................................................................................... 24
5.2.1.- Definición ................................................................................................................... 24
5.2.2.- Atributos ..................................................................................................................... 24
5.2.3.- Tipos de archivos ........................................................................................................ 25
5.2.4.- Operaciones y métodos de acceso............................................................................... 26
5.3.- CONCEPTO DE DIRECTORIO ................................................................................................ 27
5.3.1.- Definición ................................................................................................................... 27
5.3.2.- Estructura de directorios ............................................................................................. 27
5.4.- VISIÓN FÍSICA Y LÓGICA DE ARCHIVOS Y DIRECTORIOS........................................... 31
5.5.- ¿QUÉ ES UN SISTEMA DE ARCHIVOS?............................................................................... 32
5.5.1.- Definición y funciones................................................................................................ 32
5.5.2.- Arquitectura de un sistema de archivos ...................................................................... 33
5.5.3.- Asignación de bloques de disco a archivos................................................................. 33
5.5.3.1.- Bloques de disco......................................................................................... 33
5.5.3.2.- Estrategias de asignación............................................................................ 34
5.5.4.- Gestión del espacio libre............................................................................................. 38
5.5.5.- Implementación de directorios.................................................................................... 40
5.5.6.- Protección ................................................................................................................... 41
5.5.7.- Consistencia y recuperación de un sistema de archivos ............................................. 42
5.6.- ALGUNOS EJEMPLOS DE SISTEMAS DE ARCHIVOS....................................................... 42
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
6.- WINDOWS Y LOS SISTEMAS DE ARCHIVOS........................................................45
6.1.- INTRODUCCIÓN ...................................................................................................................... 45
6.2.- SISTEMAS DE ARCHIVOS WINDOWS ................................................................................. 45
6.2.1.- FAT 12/16/32.............................................................................................................. 45
6.2.1.1.- Introducción................................................................................................ 45
6.2.1.2.- Estructura de partición................................................................................ 46
6.2.1.3.- Sector de arranque ...................................................................................... 47
6.2.1.4.- FAT – Tabla de asignación de archivos ..................................................... 53
6.2.1.5.- Directorio raíz............................................................................................. 55
6.2.1.6.- Zona de datos.............................................................................................. 63
6.2.1.7.- Estructuras y características de FAT32 ...................................................... 64
6.2.2.- HPFS........................................................................................................................... 65
6.2.3.- NTFS........................................................................................................................... 66
6.2.4.- Comparativa FAT, HPFS y NTFS .............................................................................. 72
6.3.- PROCESO DE ARRANQUE DE WINDOWS .......................................................................... 72
7.- WinFS. UNA MIRADA AL FUTURO...........................................................................74
8.- APLICACIÓN SalleFAT.................................................................................................75
8.1.- OBJETIVO DE LA APLICACIÓN............................................................................................ 75
8.2.- TECNOLOGÍA ........................................................................................................................... 75
8.3.- ESTRUCTURA DE LA APLICACIÓN..................................................................................... 75
8.3.1.- Modelado estático ....................................................................................................... 76
8.3.2.- Modelado dinámico .................................................................................................... 91
8.3.3.- Modelado de implementación..................................................................................... 94
8.4.- ALGORITMOS IMPLEMENTADOS ....................................................................................... 94
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
8.5.- PROBLEMAS EN LA IMPLEMENTACIÓN ........................................................................... 99
9.- COSTE DE REALIZACIÓN DEL PROYECTO .......................................................100
10.- CONCLUSIONES Y LÍNEAS DE FUTURO............................................................101
BIBLIOGRAFÍA .................................................................................................................103
ANEXO – MANUAL DE USUARIO.................................................................................105
A.1.- INICIO DE LA APLICACIÓN Y PANTALLA PRINCIPAL ................................................ 105
A.2.- OPCIONES DEL MENÚ PRINCIPAL ................................................................................... 109
A.2.1.- Archivo .................................................................................................................... 109
A.2.2.- Ayuda....................................................................................................................... 109
A.3.- OPERACIONES ...................................................................................................................... 110
A.3.1.- Crear archivo............................................................................................................ 110
A.3.2.- Borrar archivo .......................................................................................................... 112
A.3.3.- Mover archivo .......................................................................................................... 113
A.3.4.- Subir archivo ............................................................................................................ 114
A.3.5.- Consultar atributos de archivo ................................................................................. 115
A.3.6.- Modificar atributos de archivo ................................................................................. 116
A.3.7.- Mostrar archivo ........................................................................................................ 117
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Índice de figuras
FIGURA 2.1. Gráfica rendimiento CPU versus Memoria ........................................................2
FIGURA 2.2. Jerarquía de memoria..........................................................................................4
FIGURA 2.3. Flujo de una operación de E/S ............................................................................7
FIGURA 3.1. Estructura de un disco duro ................................................................................9
FIGURA 3.2. Planificación FCFS...........................................................................................15
FIGURA 3.3. Planificación SSTF ...........................................................................................16
FIGURA 3.4. Planificación SCAN .........................................................................................16
FIGURA 3.5. Planificación C-SCAN .....................................................................................17
FIGURA 3.6. Planificación LOOK .........................................................................................17
FIGURA 4.1. Ejemplo de tabla de particiones........................................................................20
FIGURA 4.2. Partición de disco..............................................................................................20
FIGURA 4.3. Ejemplo de partición.........................................................................................21
FIGURA 5.1. Estructura de directorios de un nivel ................................................................28
FIGURA 5.2. Estructura de directorios de dos niveles ...........................................................28
FIGURA 5.3. Estructura de directorios en árbol .....................................................................29
FIGURA 5.4. Estructura de directorios en grafo acíclico .......................................................30
FIGURA 5.5. Estructura de directorios en grafo general ........................................................31
FIGURA 5.6. Arquitectura básica de un sistema de archivos .................................................33
FIGURA 5.7. Asignación contigua de archivos ......................................................................34
FIGURA 5.8. Asignación enlazada de archivos......................................................................35
FIGURA 5.9. Asignación indexada de archivos .....................................................................36
FIGURA 5.10. Asignación indexada con estructura enlazada ................................................37
FIGURA 5.11. Asignación indexada con estructura multinivel..............................................37
FIGURA 5.12. Asignación indexada con estructura combinada.............................................38
FIGURA 5.13. Gestión de espacio libre con lista enlazada ....................................................39
FIGURA 5.14. Estructura sistema de archivos en UNIX........................................................43
FIGURA 5.15. Estructura de directorios en UNIX .................................................................44
FIGURA 6.1. Estructura de particiones con FAT ...................................................................46
FIGURA 6.2. Tabla de asignación de archivos .......................................................................54
FIGURA 6.3. Formato de hora de creación.............................................................................57
FIGURA 6.4. Formato de fecha de creación ...........................................................................57
FIGURA 6.5. Formato de entrada de directorio LFN .............................................................59
FIGURA 6.6. Estructura del sistema de archivos HPFS .........................................................66
FIGURA 6.7. Estructura del sistema de archivos NTFS.........................................................67
FIGURA 8.1. Estructura general de la aplicación ...................................................................75
FIGURA 8.2. Diagrama de casos de uso SalleFAT ................................................................76
FIGURA 8.3. Diagrama de clases SalleFAT...........................................................................83
FIGURA 8.4. Clase SFATDlg.................................................................................................83
FIGURA 8.5. Clase CrearImagen............................................................................................84
FIGURA 8.6. Clase Parametros ..............................................................................................84
FIGURA 8.7. Clase CrearArch................................................................................................85
FIGURA 8.8. Clase RootSector ..............................................................................................85
FIGURA 8.9. Clase SubirArch................................................................................................86
FIGURA 8.10. Clase Ficheros.................................................................................................86
FIGURA 8.11. Clase MoverArch............................................................................................87
FIGURA 8.12. Clase MostrarArch..........................................................................................87
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
FIGURA 8.13. Clase ModificarAtr .........................................................................................88
FIGURA 8.14. Clase ArchEditor ............................................................................................88
FIGURA 8.15. Clase ConsultaAtr...........................................................................................89
FIGURA 8.16. Clase BorrarArch ............................................................................................89
FIGURA 8.17. Clase BootSector ............................................................................................90
FIGURA 8.18. Clase ArbolPantalla ........................................................................................90
FIGURA 8.19. Clase ArbolDir................................................................................................91
FIGURA 8.20. Diagrama de secuencia Crear archivo ............................................................91
FIGURA 8.21. Diagrama de secuencia Borrar archivo...........................................................92
FIGURA 8.22. Diagrama de secuencia Subir archivo.............................................................92
FIGURA 8.23. Diagrama de secuencia Mostrar archivo.........................................................92
FIGURA 8.24. Diagrama de secuencia Mover archivo...........................................................93
FIGURA 8.25. Diagrama de secuencia Consultar atributos....................................................93
FIGURA 8.26. Diagrama de secuencia Modificar atributos ...................................................93
FIGURA 8.27. Diagrama de componentes SalleFAT .............................................................94
FIGURA 8.28. Diagrama de flujo Crear archivo ....................................................................95
FIGURA 8.29. Diagrama de flujo Borrar archivo...................................................................96
FIGURA 8.30. Diagrama de flujo Mover archivo...................................................................96
FIGURA 8.31. Diagrama de flujo Subir archivo.....................................................................97
FIGURA 8.32. Diagrama de flujo Consultar atributos............................................................98
FIGURA 8.33. Diagrama de flujo Modificar atributos ...........................................................98
FIGURA 8.34. Diagrama de flujo Mostrar archivo.................................................................99
FIGURA 9.1. Estimación de tiempo del trabajo ...................................................................100
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Índice de tablas
TABLA 6.1. Capacidad volúmenes FAT12/16 .......................................................................48
TABLA 6.2. Capacidad volúmenes FAT32 ............................................................................49
TABLA 6.3. Descriptores de medio........................................................................................50
TABLA 6.4. Valores de la tabla de asignación de archivos para FAT16/32 ..........................54
TABLA 6.5. Atributos en una entrada de directorio ...............................................................56
TABLA 6.6. Capacidad volúmenes NTFS..............................................................................67
TABLA 6.7. Comparativa FAT, HPFS, NTFS .......................................................................72
TABLA 8.1. Especificación del caso de uso Crear imagen ....................................................77
TABLA 8.2. Especificación del caso de uso Abrir imagen ....................................................77
TABLA 8.3. Especificación del caso de uso Crear archivo ....................................................78
TABLA 8.4. Especificación del caso de uso Borrar archivo...................................................78
TABLA 8.5. Especificación del caso de uso Subir archivo ....................................................79
TABLA 8.6. Especificación del caso de uso Mover archivo ..................................................79
TABLA 8.7. Especificación del caso de uso Consultar atributos ...........................................80
TABLA 8.8. Especificación del caso de uso Modificar atributos ...........................................80
TABLA 8.9. Especificación del caso de uso Mostrar archivo ................................................81
TABLA 8.10. Especificación del caso de uso Editar contenido archivo ................................81
TABLA 8.11. Especificación del caso de uso Imprimir información FAT ............................82
TABLA 8.12. Especificación del caso de uso Imprimir archivo log ......................................82
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
1.- INTRODUCCIÓN
1.1.- ENFOQUE DEL TRABAJO
El contenido del trabajo queda englobado en el área de Sistemas Operativos,
asignatura cursada en tercero de ingeniería informática. Dentro del área de sistemas
operativos se estudia el comportamiento y características de un sistema de archivos, tanto a
nivel genérico como específico, analizando los sistemas de archivos implementados por
Microsoft. La estructuración del trabajo es óptima para aprender progresivamente cómo
funcionan estos sistemas. De este modo, un usuario no especializado en la materia puede
introducirse en la temática y profundizar con la bibliografía indicada al final del estudio. Una
vez aprendido el funcionamiento general de los sistemas de archivos, la aplicación
desarrollada permite interactuar realmente con un sistema de archivos, analizar su estructura y
su comportamiento al realizar diferentes operaciones sobre el mismo. Un complemento
primordial para afianzar los conceptos teóricos.
1.2.- OBJETIVOS
Los objetivos que se pretenden conseguir con el trabajo pueden resumirse de la
siguiente manera:
- Conocer las características de la memoria secundaria y la relación que mantienen los
dispositivos de almacenamiento, los sistemas de archivos y los sistemas operativos.
- Comprender las visiones, lógica y física, de archivos y directorios.
- Conocer la estructura y el funcionamiento de los sistemas de archivos de un modo
genérico.
- Conocer la estructura y el funcionamiento de los sistemas de archivos implementados
por Microsoft en sus sistemas operativos Windows.
- Aplicar los conocimientos teóricos para el desarrollo de una aplicación de carácter
docente que permita operar con un sistema de archivos real.
1.3.- ESTRUCTURA DE LA MEMORIA
La memoria se estructura en tres partes claramente diferenciadas.
En primer lugar, se analiza desde un punto de vista teórico todos los elementos
relacionados con los sistemas de archivos, tanto a nivel físico como a nivel lógico.
En segundo lugar, se trata el diseño y la implementación de la aplicación, dando
especial importancia a los algoritmos utilizados.
Finalmente, se detalla el manual de usuario de la aplicación desarrollada.
1
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
2.- MEMORIA SECUNDARIA
2.1.- INTRODUCCIÓN
La gran cantidad de datos que manejan los sistemas de información en la actualidad
exige que la manipulación de éstos se haga del modo más eficiente posible.
En un primer momento, podríamos decidir escoger un medio muy rápido para
almacenar dichos datos. Cuando hablamos de un medio rápido nos referimos a un dispositivo
capaz de almacenar un alto volumen de datos y capaz a la vez de responder eficazmente a las
peticiones de información que reciba. Ahora bien, la elección de un dispositivo de rápida
respuesta suele conllevar un alto coste económico. Pero no sólo eso, los sistemas de
información precisan de otra importante característica, como es el mantenimiento durante un
tiempo ilimitado de los datos en el medio. Por tanto, los sistemas actuales requieren un
compromiso entre capacidad de almacenamiento y gestión de la información, el coste y la no
volatilidad de los datos. Para llegar a este compromiso los sistemas informáticos utilizan la
denominada jerarquía de memoria. Se priorizan las tareas en las que el sistema requiere
rapidez de proceso y se utilizan para tales tareas memorias de altas prestaciones. Para las
tareas que no exigen una rápida respuesta se utilizan dispositivos que ofrecen un menor
rendimiento pero a la vez son más baratos.
2.2.- JERARQUÍA DE MEMORIA
La jerarquía de memoria pretende dar una solución a la gestión de la información
dependiendo de las necesidades de esta gestión. Cómo ya se ha comentado anteriormente,
estas necesidades son la cantidad de memoria que se requiere, la velocidad y el coste.
Además, la jerarquía de memoria se diseña con el fin de reducir la diferencia de tiempo entre
la capacidad de proceso del procesador y la recopilación de datos de memoria para ser
procesados. La siguiente gráfica muestra esta diferencia:
FIGURA 2.1. Gráfica rendimiento CPU versus Memoria [1]
[1] UNIVERSIDAD DE OVIEDO,
“www.atc.uniovi.es/inf_med_gijon/3ingcomp/bd/descarga.php?fichero=Jerarquia%20de%20memoria.pdf”, julio 2006.
2
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Desde el punto de vista de la cantidad de memoria, puede interesar gestionar o
almacenar un gran volumen de datos. Necesitaríamos en este caso memorias de gran
capacidad. Sin embargo, a medida que se incrementa el volumen de datos a gestionar se
requiere una mayor velocidad o menor tiempo de acceso ya que sino el rendimiento del
sistema se vería negativamente afectado. Las diferentes tecnologías de memoria cumplen las
siguientes relaciones [STALLINGS 1997]:
-
A menor tiempo de acceso, mayor coste por bit.
A mayor capacidad, menor coste por bit.
A mayor capacidad, mayor tiempo de acceso.
Para que el rendimiento del procesador y del sistema no se vea afectado, tendremos
que tener memorias de rápido acceso muy cercanas al procesador, mientras que podremos
dejar en otro nivel memorias más lentas para realizar almacenamiento de datos.
La jerarquía de memoria tiene que cumplir las siguientes propiedades:
- Coherencia: las copias de la misma información existentes en los distintos niveles
deben ser consistentes. Esto es, si un bloque de información se modifica en el nivel i,
deben actualizarse los niveles i+1, i+2,..., i+n. Estas copias se pueden realizar por
escritura directa – cuando una palabra se modifica en el nivel i, inmediatamente se
actualiza en el nivel i+1 – o por post-escritura – la actualización del nivel i+1 se
retrasa hasta que el bloque que se modificó es reemplazado o eliminado en el nivel i.
- Localidad: el principio de localidad dice que las referencias a memoria generadas por
la CPU, para acceso a datos o a instrucciones, están concentradas o agrupadas en
ciertas regiones del tiempo y del espacio.
Existen dos tipos de localidad:
- Localidad temporal: las direcciones de memoria recientemente referenciadas,
serán referenciadas de nuevo, muy probablemente, en un futuro próximo.
- Localidad espacial: tendencia a referenciar elementos de memoria (datos o
instrucciones) cercanos a los últimos elementos referenciados.
La jerarquía de memoria muestra los diferentes niveles en los que se clasifican las
memorias según sus características:
3
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Registros
CPU
NIVEL 1
Memoria Caché
Memoria principal
NIVEL 2
NIVEL 3
Memoria secundaria
(discos duros, cintas, discos ópticos)
NIVEL 4
FIGURA 2.2. Jerarquía de memoria
A medida que descendemos en la jerarquía tenemos un aumento del tiempo de acceso
a los dispositivos, así como una reducción del coste y un aumento de la capacidad de
almacenamiento. No sólo eso, sino que los diferentes niveles ofrecen distintas características,
adaptadas o no según las necesidades.
En un primer nivel, tenemos los registros de la CPU. Éstos ofrecen un tiempo de
acceso muy reducido pero son limitados. En un segundo nivel, encontramos la memoria
Caché. Se trata de una memoria de acceso asociativo: se accede a la información por su
contenido, no por su dirección. La memoria Caché hace de nivel intermedio entre los registros
de la CPU y la memoria principal. La memoria principal tiene también un tiempo de acceso
reducido. Se trata de una memoria de acceso aleatorio, es decir, el tiempo de acceso de una
posición es independiente de su dirección o de la secuencia de accesos previos. La memoria
RAM (Random Access Memory) presenta dos inconvenientes: en primer lugar, su capacidad
es limitada dado que el medio es bastante caro y en segundo lugar, la información almacenada
en ella es volátil.
Llegamos así a un cuarto nivel, donde tenemos la denominada memoria secundaria. La
memoria secundaria se caracteriza principalmente por almacenar la información de forma
persistente. Dispositivos con alta capacidad de almacenamiento y un tiempo de acceso un
tanto elevado, como discos o cintas, quedan englobados en este nivel. Hay que comentar que
por encima de este nivel podría haber otro tipo de memorias, como por ejemplo una caché de
disco, con el fin de mejorar el rendimiento de acceso a memoria secundaria reduciendo el
número de accesos a ésta.
2.3.- NECESIDAD DE MEMORIA SECUNDARIA
La memoria secundaria está compuesta por diferentes dispositivos de almacenamiento
como son:
-
discos magnéticos
cintas
discos ópticos y magnetoópticos
4
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Sus características se ajustan perfectamente a las necesidades que requiere el hecho de
querer almacenar de forma persistente un cierto volumen de datos, con un coste bajo y una
rapidez aceptable. Este tipo de memorias se caracterizan por:
-
tratarse de memorias no volátiles, es decir, la información se mantiene en el
dispositivo aunque estemos desconectados de la corriente.
tener un coste económico muy inferior al de otro tipo de memorias como puede ser
la memoria principal.
ser compactas y fáciles de transportar.
permitir acceso tanto aleatorio como secuencial a los datos.
La necesidad de memoria secundaria radica en el hecho de que las aplicaciones que
utilizan los sistemas de información necesitan almacenar y recuperar información. Un
determinado proceso puede requerir guardar ciertos datos en un momento determinado. Para
ello tiene asignado un cierto espacio de direcciones en memoria principal. Este espacio es
limitado, por tanto, podría requerir más espacio que no puede obtener de memoria principal.
Por otro lado, ante una caída del sistema, ese proceso finalizaría inesperadamente y perdería
los datos almacenados en memoria principal, puesto que se trata de un tipo de memoria
volátil. Para acabar de justificar la existencia de memoria secundaria podemos plantear el
problema del acceso a la información al mismo tiempo por parte de más un proceso. Los datos
de un proceso sólo podrán ser utilizados por el propio proceso.
En resumen, hay tres requisitos esenciales para el almacenamiento de información a
largo plazo [TANENBAUM 1998]:
- Debe ser posible almacenar una gran cantidad de información.
- La información debe sobrevivir a la terminación del proceso que la usa.
-Múltiples procesos deben poder acceder a la información de forma concurrente.
2.4.- SISTEMA OPERATIVO Y GESTIÓN DE MEMORIA SECUNDARIA
Las principales tareas de un sistema informático son el procesamiento de datos y las
operaciones de E/S, tanto para interactuar con el usuario, como para almacenar datos o
comunicar equipos. El encargado de gestionar las operaciones de entrada y salida es el
sistema operativo. Para ello, dada la complejidad de estas operaciones, dispone de un sistema
específico para su gestión, denominado subsistema de entrada y salida. El sistema operativo
debe controlar el funcionamiento de todos los dispositivos de entrada y salida para alcanzar
los siguientes objetivos [CARRETERO 2001]:
-
-
Facilitar el manejo de los dispositivos de entrada y salida. Para ello debe ofrecer
una interfaz, entre los dispositivos y el resto del sistema, que sea sencilla y fácil de
utilizar.
Optimizar la E/S del sistema, proporcionando mecanismos de incremento de
prestaciones donde sea necesario.
Proporcionar dispositivos virtuales que permitan conectar cualquier tipo de
dispositivo físico sin que sea necesario remodelar el sistema de entrada-salida del
sistema operativo.
5
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
-
Permitir la conexión de dispositivos nuevos de E/S, solventando de forma
automática su instalación usando mecanismos del tipo plug&play.
La comunicación entre los dispositivos y el sistema operativo se realiza mediante los
controladores de dispositivos. Los controladores de dispositivos son componentes
electrónicos a través de los cuáles se conectan los dispositivos de E/S y la computadora. Éstos
disponen de una serie de registros que pueden ser leídos o escritos en función de la operación
que se quiera realizar. La mayoría de controladores disponen de tres registros importantes:
registro de datos, registro de estado y registro de control.
Las características del controlador son muy importantes, ya que definen como es el
periférico para el sistema operativo. Atendiendo a las características del hardware de los
dispositivos, se pueden observar los siguientes aspectos distintivos:
-
Direccionamiento de E/S.
Unidad de transferencia.
Interacción computadora-controlador.
Direccionamiento de E/S
Existen dos modos de direccionamiento de E/S: por puerto o por memoria.
El direccionamiento por puerto consiste en asignar al controlador durante su
instalación un puerto de E/S, una interrupción hardware y un vector de interrupción.
El direccionamiento por memoria consiste en asignar a cada dispositivo de E/S un
espacio de memoria a través de las cuales se escribe sobre los registros del controlador antes
citados.
Unidad de transferencia
Se conocen dos tipos de dispositivos según cuál sea su unidad de transferencia. El
primer tipo hace referencia a aquellos dispositivos que manejan la información en unidades de
tamaño fijo llamadas bloques (dispositivos de bloques). El segundo tipo gestiona la
información como un flujo de caracteres sin ningún tipo de estructura de bloque (dispositivos
de caracteres).
Interacción computadora-controlador
La comunicación entre el sistema operativo y los dispositivos de E/S puede realizarse
de tres maneras diferentes.
La primera técnica se denomina E/S programada. Esta técnica requiere que el
procesador esté constantemente consultando los registros de los controladores para verificar si
se ha completado la operación de E/S. Se produce una espera activa por parte del procesador,
por tanto no es una técnica eficiente.
6
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
La segunda técnica se denomina E/S dirigida por interrupciones. Mejora ampliamente
la técnica anterior ya que es el dispositivo el que interrumpe al procesador cuando está
preparado para hacer una transferencia de un byte o una palabra. Se realizará entonces la
transferencia de datos y posteriormente el procesador seguirá con la tarea que estaba llevando
a cabo antes de la interrupción. Aún así, esta técnica continua siendo poco eficiente ya que
todos los datos tienen que pasar por el procesador, aunque se busque una transferencia del
tipo memoria – dispositivo E/S.
La tercera técnica se denomina acceso directo a memoria (DMA). Consiste en enviar
datos desde el dispositivo a la memoria o viceversa directamente sin la intervención del
procesador. Se generará una interrupción por bloque y no como en el caso anterior por byte o
carácter.
Proceso de petición de una operación de E/S
FIGURA 2.3. Flujo de una operación de E/S [CARRETERO 2001]
Cuando un proceso solicita una operación de E/S, el sistema operativo prepara dicha
operación y bloquea al proceso hasta que se recibe una interrupción del controlador del
dispositivo indicando que la operación está completada.
El proceso es el siguiente:
La aplicación de usuario realiza una petición de E/S. El subsistema de E/S comprueba si se
puede llevar a cabo la operación deseada en ese momento. En caso contrario realiza una
solicitud al manejador del dispositivo deseado y bloquea el proceso que ha realizado la
7
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
petición. El manejador del dispositivo traduce la petición al formato del controlador, se la
envía y se bloquea hasta recibir una interrupción. A continuación el controlador de dispositivo
monitorea el dispositivo hasta completar la petición de E/S. En ese momento envía una
interrupción al manejador de interrupciones que a su vez le envía una interrupción al
manejador de dispositivo. En este momento el manejador de dispositivo determina que
operación de E/S se ha realizado y se lo indica al subsistema de E/S. Finalmente, el
subsistema de E/S transfiere los datos solicitados por el proceso de usuario.
8
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
3.- DISPOSITIVOS DE ALMACENAMIENTO
3.1.- INTRODUCCIÓN
Los dispositivos de almacenamiento son dispositivos físicos que permiten guardar
información de forma persistente. El objetivo de este apartado es mostrar las características
más importantes de los dispositivos de almacenamiento que forman parte del nivel de
memoria secundaria en la jerarquía de memoria. En primer lugar se explican los aspectos
relacionados con los discos magnéticos, tanto a nivel físico como a nivel de funcionamiento y
rendimiento. En segundo lugar, se comentan diferentes características de los diferentes tipos
de controladores e interfaces de disco, así como el funcionamiento de los manejadores de
disco y las diferentes políticas de planificación que hay para gestionar eficientemente las
peticiones a disco. Para acabar se hace referencia de otros dispositivos de memoria secundaria
disponibles en la actualidad.
3.2.- DISCOS DUROS
3.2.1.- Estructura
Los discos duros están formados por un conjunto de platos, cada uno de los cuales
presenta una superficie magnética sobre la que se almacena la información. Estos platos son
tratados por unos cabezales de lectura/escritura. Cada uno de estos platos se divide en pistas y
cada pista se divide en sectores. Como se puede observar en el siguiente dibujo, los discos
duros llevan incorporado un controlador de disco, que será quien interactúe con el sistema
operativo, más concretamente con el manejador del dispositivo.
FIGURA 3.1. Estructura de un disco duro [2]
[2] MORENO, I. Apuntes_MEI_5-Almacenamiento_Ver6-2_PW.pdf.
“www2.ubu.es/ingelec/tecelec/inaki/Mequinf/docsmei/Apuntes_MEI_5-Almacenamiento_Ver6-2_PW.pdf “, julio 2006.
9
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Los elementos que constituyen físicamente un disco duro son:
-
Cabezales: realizan la lectura física de cada superficie del disco.
o Hay tantos cabezales como superficies útiles. En principio, dos cabezales
por cada plato.
o Todos los cabezales se apoyan en el mismo brazo, por lo que se pueden leer
datos de varias pistas dentro de un cilindro, de modo simultáneo y sin
mover el brazo.
o Un multiplexor se encarga de conmutar la lectura/escritura entre uno u otro
cabezal.
-
Pistas: superficies circulares en la superficie de un plato. Las pistas se identifican
con un número empezando por 0 en la pista más externa.
-
Sectores: división de la pista que almacena una cantidad fija de datos,
habitualmente 512 bytes. El número de sectores en cada pista no es fijo. Al ser las
pistas exteriores de mayor área (su radio es mayor) que las interiores, pueden
almacenar más datos y, por lo tanto, tienen más bytes.
-
Cilindros: conjunto de pistas que están a una distancia dada del eje. La importancia
de los cilindros es que cuando se está escribiendo en el mismo cilindro, no es
necesario desplazar el cabezal de lectura, lo que permite una mayor velocidad en la
lectura, ya que la velocidad de desplazamiento del cabezal es muy inferior a la
velocidad de rotación del disco.
-
Controladora: dispositivo que controla el correcto funcionamiento del disco y
dispone de una interfaz para la comunicación con el sistema operativo. También
incluye un buffer que usará para leer o escribir la información de uno o varios
sectores cuando se produzca una petición de disco.
3.2.2.- Parámetros de capacidad y rendimiento
Una vez conocidos los diferentes componentes que forman la estructura básica de un
disco duro analicemos como afectan la definición y el diseño de estos componentes a la
capacidad y el rendimiento del disco.
La estructura del disco limita la capacidad del mismo. La capacidad del disco depende
así del número de cilindros, el número de pistas, el número de sectores y el tamaño de un
sector.
Supongamos que disponemos de un disco duro con los siguientes parámetros:
-
número de cilindros: 6296 cilindros
número de pistas: 16
número de sectores: 63
tamaño de un sector: 512
10
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
La capacidad del disco será el producto de estos cuatro parámetros:
Capacidad = 6296 * 16 * 63 * 512 = 3249.3 MB
En cuanto al rendimiento habrá que evaluar los siguientes parámetros para poder
determinar que disco ofrece mayores prestaciones:
-
Velocidad de rotación: número de vueltas por minuto que da el disco (RPM).
Tiempo de búsqueda (Seek Time): tiempo empleado en mover el cabezal a la pista
requerida.
Tiempo de latencia (latency): tiempo que se tarda, una vez situado el cabezal en la
pista, en situar el cabezal en el sector.
Tiempo total de acceso: es la suma de los dos tiempos anteriores.
Tacceso = Tbúsqueda + Tlatencia + Transferencia
Hay algunos factores que afectan directamente al rendimiento [CARRETERO 2001]. Éstos
son:
-
-
-
-
Densidad de cada pista: las pistas tienen diferente densidad, por lo que el número
de sectores varía de unas pistas a otras. Si se mantiene el número de bytes
constante por pista, las pistas más pequeñas tienen mayor densidad, lo que afecta
mucho al controlador.
Intercalado de sectores: el controlador debe emplear tiempo en copiar los datos
leídos a memoria principal. Durante este tiempo no puede estar transfiriendo datos
del disco, que se sigue moviendo a velocidad constante, lo que significa que si
quiere leer el sector siguiente deberá esperar a que los cabezales de lectura den una
vuelta y lleguen de nuevo a ese bloque. Una solución a este problema es intercalar
sectores del disco de forma que no sean consecutivos. Así, una vez transmitidos los
datos del controlador, los cabezales están colocados sobre el siguiente bloque a
leer.
Almacenamiento intermedio en el controlador: la existencia de memoria en el
controlador permite optimizar mucho las operaciones de E/S, ya que en lugar de
leer sectores sueltos de una pista se puede optar por leer la pista entera y
mantenerla en memoria del controlador. Si las peticiones de E/S son para archivos
contiguos en disco, el rendimiento se puede incrementar considerablemente.
Controladores inteligentes: cuando controlan varios dispositivos, permiten efectuar
operaciones de búsqueda de forma solapada, como si funcionaran guiados por
interrupciones. De esta forma pueden solapar varios tiempos de búsqueda
mejorando mucho el rendimiento global del sistema. Obviamente, esta
optimización no es posible mientras se efectúa transferencia de datos ya que el bus
del controlador está ocupado.
El rendimiento que puede ofrecer un disco está íntimamente relacionado con dos
factores. En primer lugar, el diseño del fabricante que es quien define sus parámetros
generales de funcionamiento (nivel mecánico y electrónico). En segundo lugar, el modo
11
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
de hacer el formateado físico porque es durante esta operación donde se define el tamaño del
sector y la posición de los sectores en las pistas.
3.2.3.- Formateado físico
Los discos duros deben tener una organización para poder acceder a los millones de
bits que almacenan. La organización de más bajo nivel se llama formateado. Un disco puede
formatearse física y lógicamente. Por ahora nos centraremos en el primer tipo de formato.
El formateado físico o de bajo nivel de un disco duro es realizado por el fabricante. El
objetivo de este primer formateado es dividir el disco en pistas, sectores y cilindros para poder
acceder a cualquier sector del disco.
3.2.4.- Controladoras e interfaces de disco
La transferencia de información entre los dispositivos periféricos como los discos y el
sistema se realizan mediante interfaces. Los dos tipos de interfaces más extendidas en el uso
de discos son:
-
Interfaz IDE (Integrated Drive Electronics) o ATA (Advanced Technology
Attachment).
Interfaz SCSI (Small Computer System Interface).
Así pues, los discos se clasifican según la interfaz que utilizan para transmitir los datos
que contienen. Hablaremos de discos IDE y discos SCSI.
Analicemos cuales son las principales características y limitaciones de estas interfaces:
Interfaz IDE
La interfaz IDE está íntimamente ligada con ATA (Advanced Technology
Attachment). ATA es un conjunto de especificaciones que cumplen los dispositivos IDE. De
aquí que se utilicen ambos nombres para citar la misma interfaz.
La tecnología IDE fue desarrollada principalmente para su uso en sistemas de
escritorio. En una primera estandarización ATA-1, especificaba una velocidad de
transferencia de 4 MB por segundo. El modo de transferencia de datos podía ser por puerto o
por acceso directo a memoria (DMA).
Presentaba asimismo dos limitaciones importantes. Primero, en un sistema sólo podían
coexistir dos dispositivos IDE (uno como maestro y otro como esclavo). Segundo, la
capacidad de almacenamiento que podía cubrir un disco a causa de las limitaciones de la
BIOS.
Veamos esta última limitación con más detalle. Se trata de un problema con el
direccionamiento de datos de disco. En un primer momento, el direccionamiento que se utiliza
para referenciar un bloque de disco se denomina CHS (Cilinder Head Sector).
12
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Estos tres valores tienen carácter lógico y son pasados al controlador de dispositivo
que realiza un cambio de formato para direccionar físicamente el dispositivo.
Las BIOS antiguas especificaban un total de 24 bits para hacer esta referencia lógica.
Los servicios BIOS relativos al manejo de disco duro eran activados por la IRQ5, línea que
generaba la interrupción 13h y ofrecía la posibilidad de leer y escribir en las unidades de disco
a nivel de sectores individuales. Los primeros 10 bits (0-1023) eran utilizados para dar valor
al cilindro, los siguientes 8 (0-255) para la cabeza y los últimos 6 (1-63) para el sector. Si
calculamos el número de sectores direccionables con estos 24 bits:
Número de sectores = 1024 * 256 * 63 = 16.515.072 sectores
Si consideramos que el valor típico de tamaño de un sector es 512 bytes:
Capacidad máxima = número de sectores * tamaño sector = 8.455 GB.
La especificación ATA-1 definía un total de 28 bits para este direccionamiento. Los
primeros 16 (0-65535) para el cilindro, los siguientes 4 para la cabeza (0-15) y los últimos 8
(0-255) para el sector. El número de sectores direccionables con estos 28 bits son:
Número de sectores = 65536 * 16 * 255 = 267.386.880
Y la capacidad máxima:
Capacidad máxima = 136.092 GB
El problema surge cuando tienen que convivir este tipo de BIOS con dispositivos IDE.
Tendremos que ver qué capacidad podemos conseguir con los valores más restrictivos de las
especificaciones de ambos:
Cilindro: 0-1023
Cabeza: 0-15
Sector: 1-63
Número de sectores = 1024 * 16 * 63 = 1.032.192 sectores
Capacidad máxima = 528 MB
Obviamente esta capacidad es muy pequeña por tratarse de direccionar un dispositivo
que tiene como función almacenar una gran cantidad de datos.
Una primera mejora de este tipo de direccionamiento se denominó CHS extendido o
ECHS (Enhanced CHS). Este nuevo direccionamiento era soportado por las BIOS extendidas
(Enhanced BIOS). La idea es la de informar a la BIOS de que se tiene un dispositivo con unos
valores paramétricos diferentes a los reales. Así, si el número de cilindros del dispositivo IDE
es superior a los 1024 soportados por la BIOS, se dividirá este valor por 2,4,8 o 16 hasta que
su valor sea igual o menor a estos 1024. Lo mismo se hará con el número de cabezas pero
13
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
haciendo el producto en vez de la división. Con este nuevo direccionamiento la capacidad
máxima direccionable del dispositivo pasó a ser la que limitaba la BIOS, es decir, 8.455 GB.
Aún no era suficiente dado el crecimiento de la capacidad de los discos. Se llegó al
direccionamiento que se usa actualmente para los dispositivos de almacenamiento, el LBA
(Logical Block Adressing). La idea es la siguiente: a cada sector se le asigna un número de
sector, de 0 a N. A la BIOS se le pasa este número y lo que hace es una traducción a un
direccionamiento CHS. Con posterioridad se empezó a utilizar una extensión denominada
LBA48 que aumentaba de 24 a 48 bits los bits utilizados para representar los números de
sector. Hubo que hacer también modificaciones en la interrupción 13h de la BIOS para
adaptarla a este nuevo modo de direccionamiento. Se pasó de 24 a 64 bits para referenciar
lógicamente el disco.
Estas limitaciones han provocado que con el tiempo hayan aparecido nuevos
estándares. Así aparecen las especificaciones ATA-2 hasta ATA-7 llegando a una velocidad
de transferencia de 133 MB por segundo y utilizando un modo de transferencia Ultra DMA.
La principal ventaja de utilizar dispositivos IDE es su bajo coste y que no necesita de
hardware adicional para su funcionamiento.
SATA (Serial ATA):
Se incluye en este apartado una nueva tecnología que combina las tecnologías de los
discos ATA y las tecnologías de las comunicaciones en serie. SATA tiene la característica de
evitar autobloqueos. La conexión entre el disco y el controlador es una conexión punto a
punto en lugar de una conexión bus. Esto hace que las velocidades de transferencias de datos
sean muy elevadas. Los dispositivos que utilizan esta tecnología pueden llegar a transmitir a
300 MB por segundo, pero se espera que lleguen en poco tiempo a velocidades de 600 MB
por segundo.
Interfaz SCSI
La tecnología SCSI fue utilizada en un primer momento para su uso en servidores.
Igual que IDE, SCSI tiene diferentes estandarizaciones dependiendo de las características que
presentan sus dispositivos. Las velocidades que permiten los dispositivos SCSI son mucho
más elevadas pero también presentar un mayor coste.
Los dispositivos SCSI permiten conectar a un mismo cable 8 o 16 dispositivos a la
vez, según se trate de un cable estrecho (8 bits) o ancho (16 bits). Los dispositivos conectados
a un mismo cable obviamente tendrán que competir por el medio para transmitir la
información.
El primer estándar SCSI especificaba una velocidad de transferencia de datos de 5 MB
por segundo con una anchura de cable de 8 bits y una frecuencia de trabajo de 5 MHz. En la
actualidad se cuenta con dispositivos SCSI que pueden llegar a velocidades de transmisión de
320 MB por segundo con anchura de cable de 16 bits.
14
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
3.2.5.- Manejadores de dispositivos y planificación de disco
Anteriormente hemos visto el proceso que se lleva a cabo cuando una aplicación hace
una petición de E/S. Cuando hablamos de peticiones a discos, nos estamos refiriendo a una
petición de E/S, pero hay que hacer algunas concreciones para este caso.
Nos centraremos para ello en las funciones que realiza el manejador de dispositivo, en
este caso de disco. El manejador de disco una vez recibe una petición de de E/S de bloques de
disco, traduce la petición a un formato inteligible para el controlador del disco.
Posteriormente realiza dos pasos importantes: en primer lugar inserta la petición en la cola del
dispositivo, para llevar a cabo la política de planificación de disco pertinente. En segundo
lugar, envía la petición al controlador y programa el DMA. Se bloquea hasta que se produzca
la interrupción de E/S, gestiona los errores y trata de resolverlos. Finalmente, indica al nivel
superior que se ha terminado la operación.
Cómo se puede observar, de forma equivalente a otros subsistemas, en la gestión de
disco también intervienen políticas de planificación. Con la aplicación de estas políticas, se
pretende gestionar de forma eficiente las numerosas peticiones que puede recibir el disco por
los diferentes procesos del sistema.
Las diferentes formas de planificación del disco son las que siguen [SILBERCHATZ 1999]:
-
Planificación FCFS (First-Come First-Served):
Esta forma de planificación es la más sencilla de todas. Sirve las peticiones en el orden
que llegan. Este tipo de planificación, a pesar de que es justa, no acaba de ser óptima. Veamos
en este gráfico como se comporta el cabezal con este algoritmo dada una secuencia de
peticiones de disco:
FIGURA 3.2. Planificación FCFS [SILBERSCHATZ 1999]
-
Planificación SSTF (Shortest-Seek-Time-First):
La idea de esta política es seleccionar la solicitud pendiente más cercana a la posición
actual del cabezal. Esta política podría producir inanición si las solicitudes que van llegando
15
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
están cercanas a la posición actual del cabezal. Su funcionamiento puede observarse en la
siguiente figura:
FIGURA 3.3. Planificación SSTF [SILBERSCHATZ 1999]
-
Planificación SCAN
En esta política, el brazo del disco parte de un extremo del disco y se mueve hacia el
otro, atendiendo las solicitudes a medida que llega a cada cilindro, hasta llegar al otro extremo
del disco. Ahí, la dirección de movimiento de la cabeza se invierte, y continúa la atención. La
cabeza barre continuamente el disco de un lado a otro. Veamos su funcionamiento en el
gráfico:
FIGURA 3.4. Planificación SCAN [SILBERSCHATZ 1999]
-
Planificación C-SCAN (Circular SCAN)
Esta política es una variación de la planificación SCAN. La idea es la misma que la
anterior, es decir, el brazo del disco se mueve de un extremo a otro del disco. Ahora bien, en
este algoritmo, el brazo en su regreso a la posición de inicio no atiende ninguna petición.
16
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
El gráfico de su funcionamiento es:
FIGURA 3.5. Planificación C-SCAN [SILBERSCHATZ 1999]
-
Planificación LOOK
Este tipo de planificación es una variación de los dos tipos anteriores. El brazo no
tiene porqué llegar al extremo destino si no hay ninguna petición en la zona que le queda por
recorrer. En ese caso volverá a la posición inicial (no tiene porqué ser el extremo donde ha
iniciado el recorrido) atendiendo o no las peticiones que se encuentre por el camino, según se
implemente LOOK o C-LOOK (Circular LOOK). Observemos su funcionamiento:
FIGURA 3.6. Planificación LOOK [SILBERSCHATZ 1999]
Será importante por tanto, escoger un algoritmo de planificación adecuado a nuestras
necesidades. Cabe tener en cuenta el método de asignación de los archivos en disco. Por
ejemplo, una asignación de archivos de forma contigua agrupará las solicitudes y requerirá un
menor movimiento de las cabezas del disco.
17
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
3.3.- OTROS DISPOSITIVOS DE ALMACENAMIENTO
Aunque los dispositivos más importantes de memoria secundaria son los discos duros,
existen otros dispositivos que cumplen también las características de este tipo de memorias.
Disquetes, discos compactos (CD), discos versátiles digitales (DVD) o cintas son algunos
ejemplos de estos dispositivos.
Son múltiples las clasificaciones que se hacen de los medios de almacenamiento
secundario. Una de ellas es la que sigue a continuación:
-
Dispositivos magnéticos
Dispositivos ópticos
Otros dispositivos
Los tres dispositivos magnéticos por excelencia son los discos duros, los discos
flexibles y las cintas. De los discos duros ya hemos hablado con anterioridad. Veamos los
otros dos tipos de dispositivos.
Los disquetes o discos flexibles pueden almacenar 1,44 MB. Se trata de un medio muy
utilizado a lo largo de los años pero que está siendo sustituido con gran rapidez por otros
medios de tipo óptico, que pueden albergar más capacidad y ofrecen además mayor
protección de los datos.
Las cintas son un soporte de tipo secuencial que puede almacenar una gran cantidad de
información. El principal inconveniente que tienen es que el acceso a los datos es secuencial,
a diferencia de los discos duros, cuyo acceso es directo. Se trata de un medio especialmente
útil para hacer copias de seguridad tanto del sistema, para poder restaurar un sistema
informático en caso de un desastre, como de los datos. Actualmente se usa en las medianas y
grandes empresas para tal efecto.
Los dispositivos ópticos llevan menos años conviviendo con el día a día de los
sistemas informáticos. En un primer momento aparecieron los discos compactos, para dar
paso más tarde a los discos versátiles digitales.
Los discos compactos (CD) son dispositivos ópticos que pueden almacenar hasta 900
MB. Similares a éstos son los discos versátiles digitales (DVD, Digital Versatile Disc) que
ofrecen mayor capacidad de almacenamiento, hasta llegar varios gigabytes. Se utilizan estos
dispositivos para almacenar tanto datos, como audio o video.
En el mercado existen otros dispositivos como las PC Cards, ideales para ordenadores
portátiles, las Flash Cards, las Memory Cards o las unidades ZIP. Todos estos dispositivos
pueden almacenar hasta varios gigabytes. Su principal ventaja es que son medios extraíbles y
son capaces de transportar una gran cantidad de información en un espacio muy reducido.
18
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
4.- DISCO DURO Y SISTEMAS DE ARCHIVOS
4.1.- INTRODUCCIÓN
En el apartado anterior, hemos visto las características y el funcionamiento del disco
duro en un nivel exclusivamente físico. Para poder trabajar con un dispositivo de
almacenamiento en un nivel superior, sin tener en cuenta como funciona el nivel físico, hay
que darle una forma de tipo lógica. En este apartado veremos algunos conceptos básicos como
el concepto de partición, en qué consiste el formateado lógico de un disco, el concepto de
volumen, y como son las particiones de DOS. Para finalizar, veremos como es el proceso de
arranque de un sistema operativo genéricamente.
4.2.- CONCEPTOS
4.2.1.- Particiones. Tipos de particiones
Una partición es una colección de sectores consecutivos de disco. Aunque un disco
puede funcionar con una partición única, generalmente se hace más de una partición en un
disco. Algunas razones para ello son:
-
-
Tener distintos sistemas operativos, cada uno en una partición.
Hacer un uso más eficiente del espacio del disco. En algunos sistemas de archivos
hay una relación entre el tamaño de la partición y el tamaño mínimo de un fichero.
En particiones muy grandes puede perderse espacio.
Tener distintos niveles de seguridad en los datos.
Separar físicamente los datos de tal manera que sea más fácil encontrar los
archivos y hacer copias de seguridad.
Algunos sistemas de archivos tienen un tamaño menor que la capacidad del disco
duro.
Algunos sistemas utilizan una partición especial para almacenar contenidos de
memoria cuando se encuentran en suspensión.
Algunos sistemas operativos usan diferentes particiones para directorios diferentes
para minimizar el impacto en caso de que se produzca un fallo en el sistema de
archivos.
Cuando se hacen particiones, la información relativa a éstas se escribe en el primer
sector del disco (cilindro 0, pista 0, sector 1). Una estructura denominada tabla de particiones
contiene el sector donde comienza una partición, el último sector de la misma y el tipo de
partición.
19
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Un ejemplo de tabla de particiones podría ser el siguiente:
FIGURA 4.1. Ejemplo de tabla de particiones [CARRIER 2005]
Las posibilidades de partición que permite un disco son varias. Hay que tener en
cuenta que para que los datos almacenados no pierdan su coherencia, dos particiones no
pueden solaparse entre ellas. Veamos algunos ejemplos de partición de un disco:
PARTICIÓN 2
PARTICIÓN 1
PARTICIÓN 1
LIBRE
PARTICIÓN 2
FIGURA 4.2. Partición de disco
Hay que resaltar que el sistema de particionamiento es dependiente del sistema
operativo. A continuación veremos los tipos de particiones propias de los sistemas de
particionamiento DOS (Disk Operating System), que son las que utilizan los sistemas
operativos Windows.
Tipos de particiones
Hay tres tipos de particiones:
-
-
Partición primaria: son las únicas particiones desde las que se puede arrancar
algunos sistemas operativos. Puede haber, como mucho, cuatro en un mismo disco
duro, ya que la tabla de particiones tiene espacio sólo para cuatro entradas. Aquella
partición desde la que se intentará arrancar inicialmente se denomina partición
activa.
Partición lógica: son divisiones de particiones extendidas. Puede haber un número
ilimitado de particiones lógicas porque cada una tiene un puntero al comienzo de la
siguiente y de este modo, se evita el límite de cuatro particiones de la tabla de
particiones. Cada partición lógica puede tener un sistema de archivos diferente.
20
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
-
Partición extendida: son simplemente un contenedor de las particiones lógicas. No
contienen directamente datos y no pueden ser formateadas. Sólo puede haber una
partición extendida por disco. La partición extendida ocupa un lugar en la tabla de
particiones y por lo tanto, si hay partición extendida sólo podrá haber tres
particiones primarias.
Un ejemplo donde se puede observar los distintos tipos de particiones se muestra en el
siguiente gráfico:
FIGURA 4.3. Ejemplo de partición [CARRIER 2005]
Cómo se puede observar en el gráfico, se dispone de un disco con un máximo de 3
particiones primarias y una cuarta extendida, que ocupa su entrada correspondiente en la tabla
de particiones. La partición extendida contiene a su vez una tabla de particiones con dos
entradas. Una de ellas hace referencia a una partición lógica de tipo FAT y la otra hace
referencia a otra partición extendida. De nuevo esta partición extendida dispone de una tabla
de particiones con dos entradas que referencian dos particiones más. Y así sucesivamente. A
pesar de la limitación de disponer sólo de cuatro entradas en la tabla de particiones, en este
ejemplo disponemos de un disco con un mínimo de 5 particiones (suponiendo que tenemos
una sola partición primaria) y un máximo de 7.
21
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Los discos que utilizan el tipo de particionamiento DOS contienen información de
arranque, una tabla de particiones y una firma en los primeros 512 bytes del primer sector. A
la estructura que contiene esta información se la denomina MBR (Master Boot Record o
Registro de Arranque Maestro).
Como ya se ha comentado antes, un disco sólo tiene cuatro entradas en su tabla de
particiones. Cada entrada, en el caso de este método de partición, tiene la siguiente
información:
-
Dirección CHS inicial.
Dirección CHS final.
Dirección LBA inicial.
Número de sectores en la partición.
Tipo de partición
Flags
En los apartados anteriores se hizo mención de los tipos de direccionamiento que se
usan para referenciar sectores de un disco, así que no entraremos aquí en detalle. Sólo
recordar la existencia de dos tipos de direccionamiento dada la limitación que tenía la
referencia lógica de sectores con direcciones del tipo CHS. La solución fue un nuevo tipo de
direcciones denominadas LBA.
El tipo de partición indica el tipo de datos que se encuentra en la partición. En los
sistemas Windows los tipos más habituales son FAT (12, 16, 32) y NTFS.
Finalmente, existe un flag que indica si la partición correspondiente es arrancable. En
esta partición estará el sistema operativo.
4.2.2.- Formateado lógico y volúmenes
Una vez realizado el formateado físico de la unidad de disco y se ha dividido éste en
las particiones deseadas, se realiza el formateado lógico de dichas particiones. Formatear
lógicamente un disco o las particiones que contiene no es más que asignar a cada una de ellas
un sistema de archivos, que será quién permitirá al sistema operativo gestionar los archivos,
es decir, la información almacenada en el disco.
A una partición formateada lógicamente se la denomina volumen. En los sistemas
operativos Microsoft a los volúmenes se les asigna una letra de unidad cada vez que se
arranca el sistema operativo. Así pues, la asignación de letras de unidad depende directamente
del sistema operativo. Algunos sistemas Windows realizan el siguiente proceso:
-
Se asignan letras empezando por C: a todas las particiones primarias del disco en
orden de aparición.
A continuación se asignan letras de unidad a las particiones lógicas siguiendo del
mismo modo el orden de aparición.
Se verifica que todas las particiones primarias tienen asignada una letra. Si no es
así se las asigna.
22
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
-
Finalmente, se asignan letras de unidad a dispositivos como lectoras de CD-ROM
o dispositivos extraíbles.
4.3.- PROCESO DE ARRANQUE DEL SISTEMA OPERATIVO
Al encender el ordenador, el microprocesador inicializa el registro que contiene la
dirección de la siguiente instrucción a ejecutar con un valor fijo. Este valor es la primera
instrucción de un conjunto de rutinas que ejecuta durante el encendido. Estas rutinas están
almacenadas en memoria de sólo lectura (ROM). Este tipo de memoria es no volátil por lo
que estas rutinas se mantendrán en memoria a pesar de que estemos desconectados de la
corriente. Las funciones que realizan estas rutinas son las siguientes:
-
Chequeo del hardware durante el encendido.
Control de los dispositivos básicos de entrada y salida, como el teclado o el
monitor.
Finalmente, el arranque del sistema operativo.
Para el arranque del sistema, la BIOS busca el sistema operativo en el dispositivo
indicado para llevar acabo el arranque. Si el dispositivo es el disco duro, habitualmente lo es,
se carga en memoria principal el registro de arranque que se encuentra en el primer sector del
disco y se le cede el control al programa de inicio del registro de arranque. Recordemos que el
registro de arranque contiene entre otras cosas código de arranque y la tabla de particiones. El
código de arranque busca la partición configurada para arrancar el sistema consultando el flag
de cada entrada de la tabla de particiones. Una vez encontrada la partición, carga el sector de
arranque de dicha partición en memoria principal y le pasa el control al programa de inicio del
sector de arranque. Éste programa busca los archivos de arranque del sistema operativo, los
carga en memoria principal y el ordenador queda arrancado.
23
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
5.- SISTEMAS DE ARCHIVOS
5.1.- INTRODUCCIÓN
A lo largo del siguiente apartado veremos los conceptos relacionados con los sistemas
de archivos. En primer lugar revisaremos los conceptos y las características de archivo y
directorio. Posteriormente diferenciaremos las visiones física y lógica a la hora de tratar los
archivos. A continuación analizaremos los sistemas de archivos, haciendo especial hincapié
en las diferentes estructuras que se utilizan para implementarlos. Haremos referencias también
a la administración del espacio libre, la protección y la semántica de consistencia. Finalmente
veremos la relación del sistema de archivos como componente del sistema operativo
encargado de hacer la correcta gestión de la información de usuarios y procesos almacenada
en memoria.
5.2.- CONCEPTO DE ARCHIVO
5.2.1.- Definición
Son numerosas las definiciones que podemos encontrar del término archivo. Cuando
se habla de archivos [STALLINGS 1997] se habla de cuatro términos comunes: campo,
registro, archivo y base de datos. Se puede considerar un campo como un elemento de datos
básico. El registro, como una colección de campos relacionados que también puede tratarse
como una unidad en algunas aplicaciones. El archivo como una colección de registros
similares. Y finalmente, la base de datos como una colección de datos relacionados.
El concepto de archivo [SILBERSCHATZ 1999] también se define como una
colección de información relacionada que se graba en almacenamiento secundario y a la cual
se le asigna un nombre.
Como se puede observar, ambas definiciones hablan de información relacionada. Se
podría definir un archivo como una entidad lógica que permite a los usuarios almacenar
información en un dispositivo de memoria secundaria de forma persistente y a su vez, de
forma sencilla, dándole un nombre típicamente relacionado con la información que éste
contiene. Como veremos más adelante, el sistema operativo mediante el sistema de archivos
será el encargado de abstraer las propiedades físicas de los dispositivos de almacenamiento
para ofrecer esta sencillez al usuario.
5.2.2.- Atributos
Todos los archivos tienen atributos que caracterizan a los mismos. Los atributos de un
archivo no tienen porqué ser los mismos en todos los sistemas operativos, pero generalmente
todos contienen los siguientes:
-
Nombre: identificador, normalmente una combinación de caracteres alfanuméricos
y caracteres especiales, que facilita la localización y el uso de
24
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
los archivos a los usuarios. El nombre asignado a un archivo en el momento de su
creación tiene que representar inequívocamente a ese archivo mientras exista.
Algunos sistemas permiten añadir extensiones a los archivos, bien
para facilitar la identificación de archivos de una aplicación al usuario, bien para
ser interpretadas por el sistema operativo para dar a esos archivos un tratamiento
especial.
-
Identificador único de archivo: identificador único fijado por el sistema operativo
para su uso interno.
-
Tipo: relación con el contenido del archivo.
-
Ubicación: referencia al lugar donde está almacenado el contenido del archivo en
el dispositivo de almacenamiento.
-
Tamaño: tamaño en bytes del archivo y en algunos sistemas, máximo tamaño que
puede tener el archivo.
-
Protección: permisos de lectura, escritura, ejecución u otros que tienen los
diferentes usuarios o aplicaciones. Propietario del archivo. Compartición.
-
Hora, fecha de creación, acceso y/o modificación: datos temporales relativos a la
creación, acceso y/o modificación de un archivo.
-
Información de control: características especiales que pueden tener los archivos,
como ser de sólo lectura, ocultos o de sistema.
5.2.3.- Tipos de archivos
Los tipos de archivos pueden clasificarse según su contenido como archivos ASCII o
como archivos binarios. Los primeros son usados por los usuarios para almacenar textos u
otra información. Las principales características que ofrecen estos tipos de archivos es que
permiten un manejo sencillo de la información que contienen. Lo que se ve es lo que
contienen, o al menos así lo capta el usuario. Los archivos binarios tienen una estructura
propia según el sistema y no son inteligibles para un usuario doméstico. Generalmente, los
archivos binarios son ejecutables de aplicaciones o procesos del sistema.
Pero esta no es la única clasificación que se puede hacer. Los archivos también pueden
clasificarse según su función dentro de un sistema de archivos. Se pueden distinguir así entre
archivos normales, que son los que contienen la información del usuario, o los directorios,
que contienen información relacionada con la estructura del sistema de archivos. Algunos
sistemas también distinguen archivos especiales, que están relacionados con dispositivos de
entrada y salida.
Es conveniente destacar que el sistema operativo tiene que definir la estructura de un
archivo ejecutable, por razones de arquitectura.
25
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
5.2.4.- Operaciones y métodos de acceso
Las principales operaciones que se realizan sobre archivos y que tiene que permitir
cualquier sistema son las que siguen:
-
Crear archivo: verificando que hay espacio dentro del sistema de archivos tanto
para el archivo, como para la entrada de directorio. El sistema tendrá que verificar
también que no existe un archivo con el mismo identificador único.
-
Borrar archivo: lo que implicará liberar tanto la entrada de directorio como el
espacio de disco ocupado por ese archivo.
-
Abrir archivo: para otras operaciones como lectura o escritura es preciso abrir en
primer lugar el archivo. El sistema tendrá que verificar que el usuario o proceso
que requiere el archivo tiene los permisos adecuados para su uso.
-
Cerrar archivo: cuando acaba de utilizarse el archivo se tendrá que actualizar su
contenido en el dispositivo donde se encuentre. Por razones de eficiencia, dada la
lentitud de los dispositivos de entrada y salida, se intentará acceder al dispositivo
el menor número de veces. Para ello, puede almacenarse la información que se va
modificando de forma temporal y pasarla en última instancia al disco.
-
Leer archivo: esta operación permite extraer datos de disco y llevarlos a memoria
para su posterior uso.
-
Escribir archivo: esta operación permite llevar datos de memoria a disco. Como se
ha dicho con anterioridad es importante minimizar las escrituras en disco.
-
Posicionarse dentro del archivo: esta operación permite ubicar un puntero en una
posición concreta del archivo. Las operaciones de lectura y escritura podrán
realizarse a partir de la posición de este puntero. Por defecto, el puntero está
ubicado al principio del archivo.
-
Modificar y consultar los atributos: esta operación permite consultar y modificar
ciertos atributos de los archivos. Tanto el usuario como el sistema pueden tener
necesidad de llevar a cabo esta operación. Un ejemplo de modificación de atributos
por parte del usuario podría ser cambiar los permisos de un archivo para permitir
su acceso a nuevos usuarios. El sistema podría requerir la fecha de la última
modificación de los archivos cuando se quiere hacer una copia de seguridad.
-
Copiar archivo: esta operación permite hacer una copia de un archivo en otra
ubicación del disco.
-
Renombrar archivo: esta operación permite cambiarle el nombre a un archivo. El
sistema tendrá que verificar que no exista un archivo con el nuevo nombre en la
misma ubicación.
Mover archivo: esta operación consiste en cambiar de ubicación un archivo.
Generalmente basta con mover la entrada de directorio del archivo deseado a la
ubicación de destino.
-
26
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Los sistemas operativos implementan diferentes métodos de acceso a los archivos. Los
más habituales son:
- Acceso secuencial
Se trata del método de acceso más sencillo. Consiste en el procesamiento ordenado de
la información contenida en un archivo, registro tras registro. Cada vez que es leído un
registro se adelanta el puntero de lectura al siguiente registro a leer. Del mismo modo, si se
quiere escribir información el puntero se sitúa al final de los registros actuales para poder
escribir allí un nuevo registro. Este acceso es propio de las unidades de cinta.
- Acceso directo o relativo
Este modo de acceso consiste en acceder directamente a los bloques que contienen los
datos que nos interesan, sin necesidad de recorrer todos los anteriores. Este acceso es propio
de los discos duros.
Dado el gran coste que supone realizar operaciones sobre discos, es recomendable
utilizar en la medida de lo posible el acceso secuencial, mucho menos costoso que el directo.
5.3.- CONCEPTO DE DIRECTORIO
5.3.1.- Definición
La gran cantidad de archivos que puede almacenar un dispositivo de disco requiere de
una cierta organización. En un nivel físico, como se ha visto anteriormente, se puede dividir el
disco en particiones o volúmenes. En un nivel lógico, la división se hace mediante el concepto
de directorio. Un directorio, también llamado directorio de dispositivo o tabla de contenido
del volumen, registra la información de todos los archivos que se encuentran en una cierta
partición. Cada entrada de directorio contiene nombre y atributos de un archivo. Los
directorios [CARRETERO 2001] sirven para organizar y proporcionar información acerca de
la estructuración de los archivos en los sistemas de archivos.
5.3.2.- Estructura de directorios
Para la posterior implementación de los directorios, en primer lugar tenemos que
analizar los diferentes tipos de estructuras. La elección de una estructura adecuada nos
facilitará las operaciones habituales para el tratamiento de directorios.
Las operaciones que pueden realizarse con un directorio son las siguientes:
-
Buscar un archivo
Crear un archivo
Eliminar un archivo
Listar un directorio
Renombrar un archivo
Recorrer el sistema de archivos
27
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Vistas las operaciones más habituales sobre los directorios, analicemos las ventajas e
inconvenientes que ofrecen los diferentes tipos de estructuras:
I. Directorios de un nivel
FIGURA 5.1. Estructura de directorios de un nivel [SILBERSCHATZ 1999]
En los directorios de un nivel, todos los archivos del sistema se guardan en un solo
directorio. Los nombres de estos archivos no pueden estar repetidos. A medida que el número
de archivos del sistema aumenta el usuario se verá afectado para poner nombres a sus
archivos. Esta estructura también presenta un gran inconveniente cuando se quiere utilizar en
sistemas multiusuarios porque no presenta ninguna característica estructural para separar los
archivos de los diferentes usuarios. A medida que aumenta el número de archivos también
aumentará el tiempo de búsqueda de un archivo concreto.
II. Directorios de dos niveles
FIGURA 5.2. Estructura de directorios de dos niveles [SILBERSCHATZ 1999]
Tal y como su nombre indica este tipo de directorios está formado por un directorio de
archivos maestro (MFD, Master File Directory) y un directorio de archivos de usuario (UFD,
User File Directory). La idea es simple. Cada usuario dispone de una entrada en el MFD. Esta
entrada apunta al UFD del usuario. Cuando un usuario accede al sistema, automáticamente se
le da acceso a su directorio dentro del sistema de archivos.
Los directorios de dos niveles, a diferencia de los de un nivel, permiten nombres
repetidos tal y como se puede observar en el gráfico anterior. Puede haber nombres repetidos
entre los diferentes UFDs pero nunca en un mismo UFD ni tampoco en el MFD.
En este tipo de estructura aparece el concepto de ruta. Puesto que los nombres ya no
son identificadores, habrá que ir referenciando la secuencia de nombres de los diferentes
niveles hasta el archivo deseado.
28
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Esta estructura mejora la protección del sistema ya que separa los archivos de los
diferentes usuarios. Ahora bien, no soluciona el problema de la compartición de recursos. Un
usuario puede acceder a la información de su directorio pero no a la información de los demás
usuarios. Una posible solución es copiar los archivos que requieran ser compartidos en los
diferentes directorios de los usuarios implicados. Esta técnica no es del todo buena porque
podrían producirse inconsistencias a la hora de realizar la copia de los archivos. Otra posible
solución, es crear directorios especiales con aquellos archivos que son compartidos y dar
acceso a estos directorios a los usuarios que lo requieran.
Otro inconveniente que tiene esta estructura es que no existe ningún tipo de
organización en el interior del directorio de un cierto usuario.
III. Directorios con estructura de árbol
FIGURA 5.3. Estructura de directorios en árbol [SILBERSCHATZ 1999]
Este tipo de estructura es una generalización de los directorios de dos niveles. Cuenta
con una estructura de n niveles. Como se puede observar en la figura hay una mejora
sustancial en la organización para el usuario, que puede crear diferentes subdirectorios dentro
de su directorio, y así puede distribuir su información atendiendo a una temática concreta o
cualquier disposición que desee.
Aparece el concepto de directorio actual. Distinguiremos así pues dos tipos de ruta. La
ruta completa nos dará la referencia completa de un archivo desde la raíz. La ruta relativa nos
dará la referencia a un archivo desde el directorio actual.
Esta estructura por construcción no permite la compartición de archivos entre
diferentes usuarios. Además cabe plantear qué acciones se llevarán a cabo en caso de querer
borrar un directorio. Sería conveniente que al borrar un directorio se borraran en cascada
todos los archivos y directorios que el primero contiene. Esta solución la adoptan algunos
sistemas. Otra opción es borrar primero el contenido de los subdirectorios e ir subiendo por el
árbol hasta eliminar el directorio deseado.
29
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
IV. Directorios de grafo acíclico
FIGURA 5.4. Estructura de directorios en grafo acíclico [SILBERSCHATZ 1999]
La principal característica de los directorios de grafo acíclico es que su estructura por
construcción ofrece compartición de archivos y directorios.
El caso es simple. Dos o más usuarios quieren acceder y modificar el contenido de un
archivo y quieren que esos cambios los vean reflejados los demás usuarios. Con esta idea se
elimina la tendencia a hacer varias copias de un archivo, ya que aunque cada usuario podría
modificar el contenido de un mismo archivo, sus cambios no serían vistos por los demás
usuarios.
La implementación de archivos y directorios compartidos contemplan varias formas.
Una de las más extendidas, que utilizan generalmente los sistemas operativos UNIX, es la
creación de los denominados enlaces. Un enlace no es más que un puntero a otro archivo o
directorio. El enlace podría ser una ruta completa o relativa. Se crea una entrada de directorio
con un atributo que marca que se trata de un enlace. Cuando queramos acceder al archivo real
desde el enlace lo que tendremos que hacer será seguir esa ruta que marca el enlace. Otra
posible forma de implementación es la de realizar una copia exacta de las entradas de los dos
archivos que son compartidos. De este modo, cuando se realice una modificación sobre
cualquiera de los dos archivos se verá reflejada en ambos. El problema de esta forma de
implementación es la dificultad para mantener la consistencia de los archivos implicados
cuando se quieren modificar.
La eliminación de un enlace como parece obvio no tiene que conllevar la eliminación
del archivo al que hace referencia. El caso anterior puede ser más problemático porque si
borramos un archivo que está siendo referenciado, esas referencias quedaran sueltas con los
consiguientes problemas que esto puede suponer. Existen dos alternativas que tienen en
cuenta este problema. La primera consiste en buscar todas las referencias al archivo que
queremos borrar y eliminarlas. La segunda consiste en mantener algún tipo de contador de
referencias de un archivo concreto, y eliminar realmente ese archivo únicamente cuando ese
contador indique que el archivo no está siendo referenciado por ningún otro.
30
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
V. Directorios de grafo general
FIGURA 5.5. Estructura de directorios en grafo general [SILBERSCHATZ 1999]
Aunque este tipo de grafos ofrecen una gran flexibilidad, normalmente no se hace uso
de ellos debido a su complejidad de implementación y gestión. Los directorios implementados
con estos grafos requieren de algoritmos que detecten posibles ciclos. La existencia de estos
ciclos podría suponer un alto coste a la hora de hacer búsquedas, llegando a la situación de no
acabarla nunca. Además necesitan de algoritmos que indiquen cuando se han eliminado todas
las referencias de un determinado archivo para poder ser borrado. La técnica que se utiliza
para este hecho es la denominada recolección de basura.
En resumen, como se ha podido ver en esta sección son numerosas las estructuras que
pueden diseñarse para la implementación de los directorios. La elección de una u otra
dependerá en gran medida del uso que vayamos a darle a nuestro sistema de archivos y la
complejidad de implementación que estamos dispuestos a soportar. Cabe decir que la
estructura más utilizada es la de directorios con estructura de árbol. Son los que ofrecen
mayor consistencia y a la vez no requieren un alto coste a la hora de implementar sus
estructuras y sus operaciones.
5.4.- Visión física y lógica de archivos y directorios
Hasta ahora hemos visto las diferentes estructuras lógicas que puede implementar un
sistema de archivos. Los usuarios [CARRETERO 2001] ven los archivos como un conjunto
de información estructurada según sus necesidades o la de sus aplicaciones, mientras que el
sistema operativo los contempla como conjuntos de datos estructurados según sus necesidades
de almacenamiento y representación. La diferencia es obvia. A un usuario le interesa saber
como tiene o puede organizar su información. El procedimiento que siga el sistema
internamente para hacerlo es algo para él indiferente. El sistema tiene que ser capaz de
abstraer las propiedades y operaciones que permitan esta organización y ofrecérselas al
usuario de un modo amigable para su posterior uso. Podemos concluir, que la visión lógica de
los ficheros los define como conjuntos de información relacionada que ha sido definida por su
creador. Del mismo modo, la visión lógica de los directorios los define como un simple
31
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
esquema de nombrado jerárquico. La visión física de ambos componentes queda definida
como un conjunto de bloques ubicados en diferentes dispositivos.
A continuación veremos como se implementan físicamente los archivos y los
directorios, así como quien lleva a cabo la gestión de los mismos en el sistema operativo.
5.5.- ¿QUÉ ES UN SISTEMA DE ARCHIVOS?
5.5.1.- Definición y funciones
El sistema de archivos no es más que el encargado de organizar la información dentro
de los dispositivos de almacenamiento de manera que el sistema operativo pueda entender esa
organización.
En un planteamiento en un nivel un poco más físico, un sistema de archivos es una
forma de organizar los archivos dentro de una partición. Ya hemos visto el concepto de
partición anteriormente.
Se define el sistema de gestión de archivos [CARRETERO 2001] como aquel sistema
software que proporciona a los usuarios unos servicios relativos al empleo de archivos.
El sistema de archivos es por tanto un intermediario entre el tratamiento lógico de los
archivos, que es el que permite que los usuarios puedan utilizarlos, y el tratamiento físico que
es el que se encarga de organizarlos en disco.
Las principales funciones que tiene que llevar a cabo el sistema de archivos son:
-
Mantener los archivos y directorios.
Llevar un seguimiento del espacio de la partición asignado a ficheros y el espacio
no asignado o libre.
Garantizar si es posible que la información de los archivos es válida.
Ofrecer soporte de E/S para los distintos dispositivos de almacenamiento.
Hacer un seguimiento de dónde está físicamente situado cada fichero.
Optimizar el rendimiento de la gestión de ficheros y directorios.
Ofrecer un conjunto de rutinas estándar de interfaz de E/S.
Recordemos también algunas de las operaciones que tiene que permitir un sistema de
archivos para su uso por parte del usuario o administrador del sistema:
-
Crear, borrar y modificar los archivos.
Acceso a archivos de otros usuarios.
Controlar qué accesos están permitidos para los distintos archivos.
Mover datos de un archivo a otro.
32
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
5.5.2.- Arquitectura de un sistema de archivos
Una vez visto qué es y que funciones realiza un sistema de archivos, vamos a ver cuál
es su arquitectura básica:
PROGRAMA DE USUARIO
MÉTODO DE ACCESO
E/S LÓGICA
SUBSISTEMA E/S
SISTEMA DE ARCHIVOS
MANEJADOR DE DISCO
FIGURA 5.6. Arquitectura básica de un sistema de archivos
Como se puede observar en el nivel más bajo se encuentra el manejador de disco que
se comunica directamente con el disco. Por encima se encuentra el sistema de archivos básico.
Este sistema interactúa con los bloques de disco. Se encargará entre otras cosas de ubicar los
bloques de archivo en el dispositivo de almacenamiento. El subsistema de entrada y salida es
el responsable de la iniciación y terminación de toda la E/S con archivos. En este nivel se
mantienen unas estructuras de control que se encargan de la E/S con los dispositivos, la
planificación y el estado de los archivos. La E/S lógica permite a los usuarios interactuar con
los registros de información. Se ve clara la diferencia entre la E/S física o sistema de archivos
y la E/S lógica. En el primer caso se trabaja a nivel de bloque mientras que en el segundo, se
trabaja a nivel de registro. Finalmente, el método de acceso ofrece a la aplicación de usuario
una interfaz para interactuar con el sistema de archivos y los dispositivos de almacenamiento.
5.5.3.- Asignación de bloques de disco a archivos
5.5.3.1.- Bloques de disco
Teniendo en cuenta la estructura interna que tienen los discos tenemos que plantearnos
como almacenaremos los archivos en el disco. Podríamos hacerlo a nivel de byte o a nivel de
bloque. Un bloque no es más que un trozo de un archivo. Esta es la técnica más utilizada.
Consiste en dividir el archivo en grupos de bytes de tamaño fijo. Se puede comparar con los
métodos de paginación que ofrecen los sistemas de memoria, aunque se debe ser consciente
de que no es lo mismo manejar bloques de un disco que páginas de memoria, es mucho más
rápida la gestión de estas últimas. Los sistemas de ficheros trabajan con unidades de
asignación. Ésta es la unidad mínima de información que leen o escriben de disco.
Utilizando la estrategia de dividir el archivo en bloques de tamaño fijo tenemos que
plantearnos de qué tamaño tienen que ser los bloques. ¿Cuál será la unidad de asignación más
óptima? Si tenemos una unidad de asignación muy grande todos los archivos ocuparán el
33
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
espacio de esa unidad, aunque se trate de archivos de tamaño pequeño. Esto supone un gran
desperdicio de disco. Si por el contrario, la unidad de asignación es pequeña, los archivos
pueden llegar a ocupar un gran número de bloques, lo que implicará que su lectura de disco
también será más lenta, puesto que habrá que hacer varias lecturas.
Los tamaños de bloque escogidos normalmente son 512, 1K o 2K bytes.
5.5.3.2.- Estrategias de asignación
Con el fin de definir el aspecto que debe presentar el sistema de archivos al usuario,
así como de mapear el sistema de archivos lógico sobre los equipos físicos, hay que elegir una
implementación de las estructuras de datos y algoritmos que lo permitan.
El objetivo de estas alternativas es la de proporcionar espacio a los archivos de modo
que, la capacidad de los dispositivos de almacenamiento se aproveche eficazmente y que el
acceso a los archivos sea lo más rápido posible.
Para la explicación de las diferentes alternativas consideraremos que el disco está partido
en bloques de datos. Las alternativas para ubicar los archivos en disco son las que siguen:
I.
Asignación contigua
Todo el archivo se almacena en bloques contiguos de disco. Un ejemplo de este tipo
de asignación se observa en el siguiente gráfico:
FIGURA 5.7. Asignación contigua de archivos [SILBERSCHATZ 1999]
En el ejemplo se ve como el archivo ‘correo’ en su entrada de directorio contiene el
bloque de inicio de los datos que contiene así como el número de bloques que ocupa en disco.
En este caso el archivo empieza en el bloque 19 de disco y ocupa los siguientes bloques
contiguos a éste hasta el 24.
34
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Las principales ventajas que supone este tipo de asignación de espacio de disco es la
facilidad para realizar búsquedas de un archivo. También es muy ventajoso si se quieren
acceder secuencial o directamente los datos de un archivo, dado que toda su información está
contigua. Las principales desventajas son la fragmentación externa que podemos llegar a tener
en el disco, así como los problemas que tenemos en caso de querer ampliar el contenido de un
archivo.
En caso de borrar un archivo, nos quedarán bloques de disco sin ocupar. Al querer
crear un archivo de una cierta longitud posteriormente podríamos necesitar un número de
bloques superior al que ha dejado libres el primer archivo. Podría darse el caso que no
pudiéramos ocupar estos bloques dado que siempre creamos archivos de mayor longitud. Este
hecho requerirá que se apliquen reglas de compactación que “eliminen” los bloques libres que
hay entre bloques asignados a archivos. Un ejemplo de fragmentación externa son los bloques
2, 3, 4 y 5 del ejemplo anterior.
El otro problema lo encontramos cuando queremos aumentar el contenido de un
archivo en disco. El problema será mínimo si tenemos suficientes bloques para realizar esta
ampliación contiguos a los bloques del archivo que queremos ampliar. Pero, podría darse el
caso que este archivo no tuviera estos bloques contiguos. En este caso, tendríamos que
reubicar todo el archivo con el coste que esto supone. Una posible solución a este problema es
dejar en el momento de la creación del archivo un número de bloques mayor del que
realmente necesita tal archivo. ¿Qué número de bloques deberíamos dejar? Esta cuestión es
difícil de contestar. La aplicación de esta solución implica también que haya fragmentación
interna.
II.
Asignación enlazada
La asignación enlazada es una técnica que establece un enlace entre los diferentes
bloques que ocupa un archivo en disco. Las dos principales ventajas de este tipo de asignación
es que permiten una fácil ampliación de un archivo, ya que los bloques no tienen que ser
contiguos, y eliminan la fragmentación externa por el mismo hecho. Este es un dibujo
ilustrativo de esta técnica de asignación:
FIGURA 5.8. Asignación enlazada de archivos [SILBERSCHATZ 1999]
35
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
El archivo ‘jeep’, en su entrada de directorio tiene del mismo modo que en el caso de
asignación el bloque de disco donde empieza. Tal y como se ha citado anteriormente, los
bloques que utiliza no son contiguos. Por ello, en la entrada de directorio también tiene el
último bloque de disco que ocupa. Tener la longitud en este caso es innecesario. La secuencia
de bloques del archivo tal y como se puede deducir siguiendo el enlace es: 9, 16, 1, 10, 25. El
último bloque indica que es el último puesto que su apuntador tiene un valor de -1.
Los principales inconvenientes que presenta este modo de asignación son dos. En
primer lugar, los accesos son más costosos, tanto el directo como el secuencial. Esto se debe a
que los bloques no son contiguos. En segundo lugar, se desaprovecha espacio de bloques de
datos puesto que cada bloque necesita un puntero hacia el siguiente bloque del archivo. Esta
pérdida de espacio puede mejorarse si se realiza agrupación de bloques (clústeres). Con esta
agrupación cada clúster tendrá un puntero al siguiente clúster de datos. La reducción de
punteros será proporcional al número de bloques que formen un clúster.
Para finalizar hay qué plantearse que ocurriría si perdiéramos la referencia o puntero a
un bloque de datos de un archivo. Obviamente su recuperación sería muy compleja. Este
hecho se puede considerar un inconveniente más de este tipo de asignación.
Este tipo de asignación es la que utilizan los sistemas MS-DOS.
III.
Asignación indexada
La asignación indexada es en parte una combinación de las dos anteriores. La idea de
este tipo de asignación es utilizar un conjunto de bloques como bloques de información de la
estructura de un archivo. Estos bloques de información contienen la secuencia de bloques que
ocupa el archivo. Este gráfico representa este tipo de asignación:
FIGURA 5.9. Asignación indexada de archivos [SILBERSCHATZ 1999]
Como se puede ver, en este caso el archivo ‘jeep’ en su entrada de directorio tiene un
apuntador al bloque que contiene un listado de los bloques que ocupa este archivo. El bloque,
denominado bloque índice, es el 19. Los bloques de datos del archivo son: 9, 16, 1, 10 y 25.
36
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
La cuestión que deberíamos formularnos llegados a este punto es de qué tamaño tiene
que ser el bloque índice. Un tamaño de bloque grande podría hacernos perder mucho espacio
si los archivos que tenemos ocupan un número pequeño de bloques. Ahora bien, si el tamaño
del bloque es pequeño podría ser insuficiente para albergar todas las referencias a los bloques
de un archivo.
Para solventar estos problemas existen diferentes variantes de este tipo de asignación:
III.1 Asignación indexada con estructura enlazada
La idea de esta técnica es enlazar diferentes bloques índice para poder mantener todas
las referencias a los bloques de un archivo en caso de que este sea muy grande.
Como parece obvio si el archivo es pequeño no tendremos que hacer este enlace.
Simplemente en el único bloque índice marcaremos que no existe ningún bloque índice más.
BLOQUES
BLOQUE
Í
BLOQUE
Í
BLOQUE
Í
FIGURA 5.10. Asignación indexada con estructura enlazada
III.2 Asignación indexada con estructura multinivel
Esta técnica pretende utilizar un primer bloque índice como referenciador de bloques
índice de segundo nivel. Los bloques de este segundo nivel contendrán las referencias a los
bloques de datos del archivo en disco. Aunque se está hablando únicamente de dos niveles, la
estructura multinivel permite tener más de dos.
BLOQUE ÍNDICE
NIVEL 2
BLOQUE ÍNDICE
NIVEL 1
BLOQUE ÍNDICE
NIVEL 2
BLOQUES DATOS
FIGURA 5.11. Asignación indexada con estructura multinivel
37
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
III.3 Asignación indexada con estructura combinada
Este tipo de asignación pretende combinar diferentes técnicas de asignación de
archivos. Es la asignación que utiliza el sistema BSD UNIX. Este sistema consiste en dividir
un bloque índice en punteros de diferente índole. Podemos tener, por un lado, punteros
directos, que apuntan directamente a bloques de datos de disco, y por otro lado punteros
indirectos que apuntan a otros bloques índice que a su vez pueden apuntar a más bloques
índice, dependiendo del nivel de la estructura multinivel, o a bloques de datos.
En el caso de BSD UNIX, un bloque tiene 15 punteros directos y 3 punteros
indirectos. El primer puntero indirecto se utiliza para conseguir una estructura multinivel con
un único bloque índice. El segundo para conseguir una estructura multinivel con dos niveles
de bloques índice. Finalmente, el tercer puntero permite tener una estructura multinivel con
tres niveles de bloques índice.
I-NODO
ATRIBUTOS
PUNTEROS A BLOQUES DE DATOS
PUNTEROS A BLOQUES ÍNDICE
FIGURA 5.12. Asignación indexada con estructura combinada
5.5.4.- Gestión del espacio libre
Para poder llevar a cabo la creación de archivos, el sistema tiene que ser consciente de
la cantidad de espacio libre que tiene, o dicho de otra forma, el número de bloques de disco
que no están ocupados por ningún otro archivo.
Se implementan estructuras para tener constancia del espacio libre. Éstas son algunas
de las que utilizan los sistemas para administrar dicho espacio:
I. Mapa de bits
Esta representación del espacio libre consiste en mantener una lista de bits que indican
qué bloques están ocupados y qué bloques están libres. Cada bit representa un bloque de
disco. Si el bit tiene un valor de ‘1’ el bloque representado estará libre. Por el contrario si su
valor es ‘0’ se considerará ocupado.
Como se puede ver este tipo de representación es muy simple. El coste de búsqueda de un
bloque libre es muy bajo. La búsqueda consiste en el recorrido del mapa hasta encontrar uno o
38
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
varios bloques libres, consecutivos o no dependiendo del algoritmo de asignación de bloques
utilizado. La gran mayoría de arquitecturas de los computadores actuales disponen de
instrucciones capaces de devolver cuál es el primer bit a ‘1’ de una palabra.
Para gestionar eficientemente el espacio libre de disco idealmente tendríamos que
tener esta lista de bits en memoria principal. Si el número de bloques de disco es muy
elevado, la lista crecerá y quizá no sea conveniente tenerla en memoria principal.
Una manera de hacer que la lista sea más pequeña es mantener un mapa de bits a nivel
de clúster, es decir, un bit para un grupo de un cierto número de bloques.
Un ejemplo de mapa de bits es:
0011000110011111010…
Los bloques libres de este ejemplo, empezando por el 0 son: 2, 3, 7, 8, 11, 12, 13, 14,
15 y 17.
II. Lista enlazada
Este método consiste en mantener enlazados a modo de lista los bloques de disco
libres. Un puntero inicial nos dirá cuál es el primer bloque de la lista y a continuación cada
bloque apuntará al siguiente libre.
Esta figura ilustra el método:
FIGURA 5.13. Gestión de espacio libre con lista enlazada [SILBERSCHATZ 1999]
III. Agrupación de bloques
La estrategia de agrupación de bloques consiste en mantener en el primer bloque libre un
listado de direcciones de un conjunto de bloques libres. La última dirección de este bloque
apunta a otro bloque que contiene más direcciones de bloques libres y así sucesivamente. Este
39
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
método de gestión de espacio libre es útil cuando se quiere buscar espacio para archivos que
ocupan un alto número de bloques de disco.
IV. Recuento
Esta estrategia consiste en mantener una lista con una relación dirección – contador. La
dirección se refiere al primer bloque libre de disco. El contador nos dice cuántos bloques
están libres a partir de ésta dirección. Estos bloques podrían estar contiguos en disco o
podrían no estarlo, en cuyo caso tendrán que estar enlazados. Habrá que escoger una de estas
dos políticas en caso de querer implementar esta técnica.
5.5.5.- Implementación de directorios
Son dos las alternativas principales para la implementación de las estructuras de
gestión de directorios. Veamos que características tienen cada una de ellas y que ventajas e
inconvenientes incorporan.
I.
Lista lineal
Si consideramos la estructura de directorios como un conjunto de entradas que
contienen una cierta de información sobre los archivos que contiene el sistema de archivos, la
primera opción que podríamos plantearnos es la de una lista lineal de estas entradas. Para
escoger una alternativa en la implementación de los directorios es conveniente mirar qué
rendimiento ofrecen al querer realizar algunas operaciones sobre éstos. Analicemos su
respuesta para dos de las principales operaciones:
-
Crear archivo:
Si queremos crear un archivo utilizando esta estructura necesitaremos hacer un
recorrido por todas las entradas para verificar que no existe ningún otro archivo con el
nombre del que queremos crear. Esta búsqueda tiene coste lineal. Si el número de
entradas de directorio es elevado puede ser costoso.
-
Borrar archivo:
Para borrar un archivo concreto, tendremos que realizar una búsqueda de la entrada de
dicho archivo. Una vez encontrada, eliminaremos los bloques de disco que ocupaba el
archivo y marcaremos su entrada como libre o bien realizaremos una reorganización
de las entradas.
Estas y otras posibles operaciones requerirán generalmente de una búsqueda de una
entrada de directorio. Así pues, la problemática de esta estructura es que querer efectuar una
operación puede suponer un alto coste de búsqueda. Una posible solución sería mantener estas
entradas con un cierto orden. De este modo podríamos hacer búsquedas dicotómicas
reduciendo su coste considerablemente. El coste de este tipo de búsquedas es logarítmico.
Aún así, esta mejora de búsqueda podría suponer un alto coste al querer crear o borrar un
40
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
archivo. Quizá tendríamos que hacer un gran movimiento de datos. Una posible solución sería
utilizar un árbol B.
II.
Tablas de hash
Cuando hablamos de tablas de hash como estructura de directorios nos referimos a una
lista de entradas de directorio que pueden ser referenciadas por un valor calculado a partir de
una función de hash. En este caso, la función de hash realiza un cálculo a partir del nombre
del archivo. Este cálculo nos da la posición de la entrada de directorio que estamos buscando.
Así pues el acceso a una entrada deseada es prácticamente directo. El problema que presenta
este tipo de tablas es que generalmente tienen un tamaño fijo. La voluntad de querer ampliarla
en un momento dado supondría un alto coste. Otro problema son las colisiones. Habrá que
realizar una correcta gestión de éstas para evitar que dos mismos nombres de archivos nos
direccione a la misma entrada de directorio.
5.5.6.- Protección
Cuando hablamos de protección en un sistema de archivos nos referimos tanto a la
protección de los dispositivos que albergan el sistema de archivos (nivel físico) como a la
protección de los archivos y directorios que estos contienen con la información de los
usuarios.
En un plano meramente físico, la solución más eficaz es la de mantener copias de
seguridad de los datos que están almacenados en un dispositivo. Se trata de una medida de
prevención que permite recuperar la información en caso de que se dañen los discos. Nos
referiremos a esta recuperación de datos en una sección posterior.
El otro tipo de protección que debe tener cualquier sistema de archivos se puede
resumir de la siguiente forma: un usuario o aplicación tiene que tener únicamente acceso a un
espacio limitado de archivos, los propios y/o los definidos por el administrador del sistema y
debe tener definidas las operaciones que puede realizar con estos archivos. De este modo
evitaremos accesos a información restringida de usuarios que no deben conocer dicha
información.
Hay diferentes técnicas que se encargan de restringir el acceso a ciertos archivos del
sistema. Estas técnicas tienen que ser definidas por el administrador del sistema para
conseguir una coherencia de uso del sistema. Las principales son las listas y grupos de acceso
y el uso de contraseñas.
A nivel de operación deberán quedar claras las acciones que pueden realizar los
distintos usuarios con los archivos. Se definen diferentes permisos para los archivos. Los más
extendidos son: lectura, escritura, ejecución y borrado.
41
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
5.5.7.- Consistencia y recuperación de un sistema de archivos
Podría darse el caso de que el sistema de archivos de una computadora tuviera
inconsistencias si se ha producido algún hecho no deseado, ya sea físico o estructural. La
recuperación de la información estructural así como los datos de un sistema de archivos son
complejos y costosos.
Con tal de evitar inconsistencias, los sistemas de archivos incorporan utilidades para
verificar que tanto la estructura del sistema como la información son correctas. Estas
utilidades se ejecutan al iniciar la computadora después de un mal apagado. Generalmente,
verificar la consistencia implica comparar los datos de la estructura de directorios con los
bloques de datos en disco y tratar de corregir inconsistencias que encuentra. Esta verificación
dependerá obviamente de la estrategia de asignación de archivos, así como de la estrategia de
gestión de espacio libre.
Por otra parte, es muy recomendable realizar copias de seguridad de las aplicaciones y
la información cada cierto tiempo en medios de almacenamiento capaces de soportar una gran
cantidad de datos, como por ejemplo cintas. Las copias de seguridad pueden realizarse de
forma completa o incremental. Una copia completa implica copiar en otro medio la totalidad
de datos de las unidades de almacenamiento utilizadas. Una copia incremental implica copiar
únicamente aquella información que ha sido modificada desde la última copia.
5.6.- ALGUNOS EJEMPLOS DE SISTEMAS DE ARCHIVOS
Veamos para acabar esta sección algunos ejemplos de sistemas de archivos de dos de
los sistemas operativos más extendidos en la actualidad, UNIX y Windows.
Los sistemas de archivos más comunes en Windows son:
I.
FAT (File Allocation Table)
FAT fue el sistema de archivos de DOS y la primera versión de Windows 95, aunque
es soportado por prácticamente todas las versiones posteriores de Windows. En la versión de
Windows 95 y posteriores se llamaba VFAT (Virtual FAT) porque utilizaba otro modo de
acceso al sistema de archivos. Esta última versión también aceptaba nombres largos, de
longitud mayor a 11 caracteres que era lo que permitía FAT: 8 caracteres para el nombre y 3
para la extensión. El sistema de archivos se llama FAT porque su estructura principal es una
tabla de asignación de archivos a clústeres. Un clúster se considera la unidad física mínima de
disco que se puede asignar a un archivo y se corresponde con un número fijo de sectores de
disco. Esta tabla indica qué clústeres están ocupados, qué clústeres están libres y qué clústeres
están asignados a los diferentes archivos del sistema. Generalmente, este sistema mantiene
una o más copias de la tabla por si la tabla principal se viera dañada. Las limitaciones que
tiene este sistema es que puede tener un número máximo de entradas en el directorio raíz.
Existen 3 variantes de este sistema: FAT12, FAT16 y FAT32. La diferencia principal
entre ambas es el número de bits utilizados para direccionar una entrada de la tabla: 12, 16 y
42
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
32 (aunque sólo se utilizan 28) bits respectivamente. Esta diferencia limita el tamaño de las
particiones de las diferentes variantes.
Estudiaremos con más detalle este sistema de archivos en la siguiente sección.
II.
HPFS (High Performance File System)
El sistema de archivos HPFS fue diseñado para permitir un mejor acceso a los discos
duros de gran capacidad que fueron apareciendo en el mercado. HPFS mejora a FAT en
aspectos de nomenclatura, organización y seguridad. Una nueva característica que ofrece este
tipo de sistema es la realización de una ordenación automática del directorio basada en los
nombres de archivo. Ya discutimos sobre esta característica en la sección 5.5 cuando
hablamos de las alternativas de implementación de los directorios.
La unidad de asignación de disco en este sistema es el sector físico y no el clúster.
HPFS intenta asignar la mayor cantidad de datos de un archivo en sectores contiguos. De esta
forma consigue incrementar la velocidad al procesar secuencialmente un archivo. La
organización que hace HPFS de una unidad consta de una serie de bandas de 8 MB e intentará
en la medida de lo posible asignar un archivo a estas bandas. Entre banda y banda existen
mapas de bits que llevan constancia de los sectores ocupados y libres en cada banda.
III.
NTFS (New Technology File System)
Es el sistema de archivos utilizado por Windows NT y es compatible con versiones
posteriores del sistema operativo Windows. La estructura más importante de este sistema es la
tabla de archivos maestra (MFT, Master File Table). Se analizará con detalle dicha estructura
más adelante. NTFS utiliza clústeres como unidad de asignación pero no limita su número por
partición. Dos de las principales características de este sistema es que permite asignar
diferentes permisos a los archivos para los distintos usuarios, así como no limitar el tamaño de
los archivos siempre que el tamaño de la partición lo permita.
Los sistemas de archivos más comunes en UNIX serán citados a continuación.
Veamos primero la estructura de estos sistemas.
Los sistemas de archivos UNIX están formados por cuatro zonas:
SECTOR
DE
ARRANQUE
SUPERBLOQUE
LISTA
I-NODOS
BLOQUES DE DATOS
FIGURA 5.14. Estructura sistema de archivos en UNIX
La zona de arranque contiene información para llevar a cabo el arranque del sistema
operativo. El superbloque contiene información de la estructura del sistema de archivos. Los
i-nodos contienen información de los archivos y directorios almacenados en el sistema.
43
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
La estructura de estos i-nodos se muestra en la siguiente figura:
FIGURA 5.15. Estructura de directorios en UNIX
Como se puede observar un i-nodo almacena las propiedades de un archivo o
directorio y tiene punteros que apuntan a bloques de datos que a su vez pueden contener
referencias a otros i-nodos. La estructura de directorios es una estructura en árbol y el modo
de asignación de archivos es de tipo indexada con estructura combinada.
Finalmente, los bloques de datos almacenan los datos de los archivos.
Los sistemas más comunes son ext2, ext3, XFS, JFS y ReiserFS.
44
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
6.- WINDOWS Y LOS SISTEMAS DE ARCHIVOS
6.1.- INTRODUCCIÓN
Una vez tratadas las características y funcionamiento de los sistemas de archivos desde
un punto de vista genérico, vamos a tratar ahora los sistemas de archivos que implementa el
sistema operativo Windows para el tratamiento de archivos y directorios.
En esta sección veremos los sistemas de archivos FAT, NTFS y HPFS. Se intentará
dar una visión exhaustiva de dichos sistemas, analizando las diferentes estructuras que los
conforman, así como su funcionamiento y el tratamiento que realiza el sistema operativo para
llevar a cabo su gestión. Aunque este tratamiento depende en gran medida de la versión del
sistema operativo que se analice, se intentará dar una visión lo más general posible.
Para finalizar, veremos cuál es el proceso de arranque del sistema operativo Windows
y cuál es su relación con los sistemas de archivos.
6.2.- SISTEMAS DE ARCHIVOS WINDOWS
6.2.1.- FAT 12/16/32
6.2.1.1.- Introducción
El sistema de archivos FAT es uno de los sistemas más simples que se implementan
por los sistemas operativos. Esta sencillez viene dada por el reducido número de estructuras
que lo conforman. FAT nació como una solución a la gestión de archivos y directorios para
los sistemas DOS. Posteriormente su uso fue extendido a los sistemas operativos Windows en
sus diferentes versiones, así como para sistemas UNIX.
El nombre de FAT viene dado porque su principal estructura es precisamente una tabla
de asignación de archivos (FAT, File Allocation Table). Dependiendo del tamaño de las
entradas de esta tabla distinguiremos tres variantes de este sistema. Si las entradas son de 12
bits nos estaremos refiriendo a FAT12. Si las entradas son de 16 bits hablaremos de FAT16.
Finalmente, si las entradas son de 32 bits (realmente se utilizan 28) nos dirigiremos a FAT32.
Ésta es la principal diferencia entre las tres versiones de FAT. Aunque no es la única. FAT32
incorpora por ejemplo mecanismos que facilitan la gestión de los archivos, además de
permitir trabajar con discos de una capacidad superior a los que permiten los otros dos
sistemas.
El uso de las dos primeras variantes de FAT, dada la limitada capacidad para datos que
ofrecen, se ha extendido para dispositivos que requieren poca capacidad de almacenamiento,
como podrían ser las tarjetas de memoria que incorporan las cámaras digitales.
A continuación veremos en detalle las estructuras que conforman estos sistemas, así
como las diferentes mejoras que ofrecen cada uno de ellos, especialmente FAT32 respecto los
otros dos.
45
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
6.2.1.2.- Estructura de partición
Un disco formateado físicamente requiere en primer lugar, si interesa, una división en
zonas o particiones. Ésta división es necesaria si se desea mantener en un mismo disco
diferentes sistemas operativos. Una vez el disco está particionado, es necesario formatearlo
lógicamente. El formateado lógico de una partición pone en la misma un sistema de archivos
para que el sistema operativo pueda gestionar la información de disco ubicada en archivos y
directorios.
Al ubicar un sistema de archivos FAT en una partición la estructura resultante es la
que se muestra en la siguiente figura:
FIGURA 6.1. Estructura de particiones con FAT [CARRIER 2005]
Como se puede observar, la partición queda perfectamente dividida en 4 zonas. Todas
estas zonas componen el sistema de archivos y son las partes necesarias para poder gestionar
la información.
Aunque ahora entraremos en detalle, conviene dar una visión global de las funciones
que tienen las diferentes zonas:
-
Sector de arranque: ésta zona contiene información acerca del código de arranque
del sistema, así como de características físicas y lógicas del sistema de archivos.
FAT: ésta zona no es más que la tabla que ya se ha citado anteriormente. Su
función es mantener la relación de los diferentes conjuntos de sectores o clústeres
asignados a los archivos.
46
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
-
Directorio raíz: estructura con entradas que mantienen la información de todos los
archivos del sistema.
Zona de datos: formada por clústeres que guardan la información contenida en los
archivos.
6.2.1.3.- Sector de arranque
El sector de arranque o sector reservado es el primer sector de cada partición o
volumen. Este sector contiene información del arranque del sistema así como ciertos
parámetros que afectan al sistema de archivos. Dichos parámetros se encuentran en una
estructura denominada comúnmente Bloque de Parámetros BIOS (BPB, Bios Parameter
Block). Los parámetros definidos en este sector son básicos para poder gestionar y entender la
estructura y el funcionamiento del sistema de archivos, así como el modo de asignación de
archivos a disco.
Cómo podrá observarse a continuación los sectores de arranque de las diferentes
versiones de FAT son prácticamente iguales. FAT32 se diferencia en algunos parámetros con
el resto. Lo comentaremos cuando llegue el caso. Los parámetros que contiene el sector de
arranque según las especificaciones de Microsoft [3] son:
1) Instrucción de código de arranque
Se utilizan 3 bytes (del 0 al 2) para especificar la instrucción de salto a la zona donde se
encuentra el código de arranque del sistema operativo. Se pueden distinguir dos formatos de
este tipo de instrucción:
Byte 0: 0xEB
Byte 1: 0x?? (cualquier valor es válido)
Byte 2: 0x90
ó bien
Byte 0: 0xE9
Byte 1: 0x?? (cualquier valor es válido)
Byte 2: 0x?? (cualquier valor es válido)
Generalmente se usa el primer formato. El código asociado al arranque del sistema se
encuentra generalmente en el primer sector ubicado después del BPB, aunque puede
extenderse a más sectores.
Así pues una posible instrucción de este tipo sería: 0x EB 3E 90
[3]
MICROSOFT
CORPORATION,
Download
Page
for
FAT32
“www.microsoft.com/whdc/system/platform/firmware/fatgendown.mspx?”, julio 2006.
47
File
System
Specification.
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
2) Nombre del OEM (Original Equipment Manufacturer)
Se utilizan 8 bytes (del 3 al 10 inclusive) para especificar que sistema ha llevado a cabo el
formateo del volumen.
Un posible ejemplo de este campo podría ser: “MSWIN4.0”.
3) Número de bytes por sector
Éste es el primer campo del BPB. Su tamaño es de 2 bytes (bytes 11 y 12) e indica el número
de bytes que tiene un sector. Su valor por razones de compatibilidad es de 512. También son
permitidos tamaños de 1024, 2048 y 4096 bytes por sector.
•
Comentario:
Al analizar un volumen formateado con cualquier variante del sistema de archivos
FAT tenemos que ser conscientes de que el formato de los datos es ‘little endian’. Esto se
debe a qué fue IBM quién desarrolló este sistema de archivos y su arquitectura trabajaba
con este formato.
Veamos esto con un ejemplo de número de bytes por sector. El campo ocupa dos bytes
y queremos codificar un valor de 512. Su valor en hexadecimal es 0x0200. Al analizarlo
veremos que su valor es 0x0020.
4) Número de sectores por clúster
Este campo ocupa 1 byte (byte 13) e indica el número de sectores que forman una unidad
mínima de asignación, es decir, un clúster. Un clúster es el mínimo espacio de disco que
ocupará cualquier archivo. Su valor puede ser cualquier número que sea potencia de 2 y sea
mayor que 0. Aún así, de nuevo por razones de compatibilidad y correcto funcionamiento, se
impone una limitación. El número de bytes por clúster, es decir, el producto del número de
bytes por sector y el número de sectores por clúster, tiene que ser inferior a 32K.
Tamaño de volumen
0 MB – 31 MB
32 MB – 63 MB
64 MB – 127 MB
128 MB – 255 MB
256 MB – 511 MB
512 MB – 1 GB
1 GB – 2 GB
Sectores por clúster
1
2
4
8
16
32
64
Tamaño sector (bytes)
512
1K
2K
4K
8K
16K
32K
TABLA 6.1. Capacidad volúmenes FAT12/16
48
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Tamaño de volumen
256 MB – 511 MB
512 MB – 1 GB
1GB – 2 GB
2 GB – 8 GB
8 GB – 16 GB
16 GB – 32 GB
32 GB – 2 TB
Sectores por clúster
2
8
8
8
16
32
64
Tamaño sector (bytes)
1K
4K
4K
4K
8K
16K
32K
TABLA 6.2. Capacidad volúmenes FAT32
5) Número de sectores reservados
Este campo ocupa 2 bytes (bytes 14 y 15) e indica el número de sectores reservados desde el
primer sector del volumen. Este valor no puede ser 0. En los sistemas FAT12 y FAT16 tiene
un valor de 1, mientras que en el sistema FAT32 su valor es 32.
6) Número de FATs
Este campo ocupa 1 byte (byte 16) y especifica el número de FATs del volumen. La
existencia de más de una tabla en el volumen se justifica en caso de qué una de las tablas
contenga un error en algún sector. En este caso, nos podremos recuperar de este error
consultando otra tabla. El número de FATs por volumen tendría que ser 2. Aún así, también
son permitidos otros valores mayores o iguales a 1.
7) Número de entradas en el directorio raíz
Este campo ocupa 2 bytes (bytes 17 y 18) e indica el número máximo de entradas del
directorio raíz. Una entrada de directorio es de 32 bytes. En FAT12 y FAT16, el producto del
número de entradas y 32 es múltiplo del número de bytes por sector. En FAT32 su valor es 0,
ya que el número de entradas es ilimitado, dentro de la capacidad del volumen.
8) Número de sectores del volumen
Este campo ocupa 2 bytes (bytes 19 y 20) e indica el número total de sectores que contiene el
volumen, siempre que su valor sea inferior a 0x10000. En FAT32, el valor de este campo es 0.
El número de sectores en este caso será dado en otro campo.
9) Descriptor de medio
Este campo ocupa 1 byte (byte 21) y especifica información sobre el dispositivo utilizado. Los
dos valores más comunes son 0xF8 para discos magnéticos y 0xF0 para discos flexibles.
49
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
BYTE
0xF9
0xF0
0xF0
0xF8
TIPO DE DISCO
3,5”
3,5”
3,5”
Disco duro
SECTORES
9
18
36
Variable
CABEZAS
2
2
2
Variable
PISTAS
80
80
80
Variable
CAPACIDAD
720 KB
1440 KB
2880 KB
Variable
TABLA 6.3. Descriptores de medio [4]
10) Número de sectores por FAT
Este campo ocupa 2 bytes (bytes 22 y 23) e indica el número de sectores que ocupa cada una
de las tablas FAT en el volumen. En FAT32, el valor de este campo es 0. Este valor será dado
en otro campo para este sistema.
11) Número de sectores por pista
Este campo ocupa 2 bytes (bytes 24 y 25) e indica el número de sectores que contiene cada
pista en un disco. Ya vimos en apartados anteriores la geometría de una unidad de disco. Este
valor es utilizado por la interrupción 13h, vista también anteriormente cuando hablamos de
direccionamiento de bloques de disco.
12) Número de cabezales
Este campo ocupa 2 bytes (bytes 26 y 27) e indica el número de cabezales de una unidad de
almacenamiento. Este valor, igual que el anterior, es utilizado por la interrupción 13h.
13) Número de sectores ocultos
Este campo ocupa 4 bytes (del 28 al 31 inclusive) y especifica el número de sectores de disco
que se encuentran antes de la partición que contiene el sistema de archivos FAT. El valor de
este campo dependerá del sistema operativo y será 0 cuando el disco no esté particionado.
14) Número de sectores del volumen
Este campo ocupa 4 bytes (del 32 al 35 inclusive). En él se indica el número total de sectores
del volumen en el sistema FAT32, pero también en los sistemas FAT12 y FAT16 si el número
de sectores es igual o superior a 0x10000.
[4] FOX, JONATHAN, FOXy2K: FAT System Guide. “http://home.freeuk.net/foxy2k/disk/disk3.htm”, julio 2006.
50
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Hasta aquí la estructura del BPB es idéntica para las tres versiones de FAT. A partir
del byte 36 empiezan las diferencias. Analizaremos en primer lugar, como es la estructura
para FAT12 y FAT16. En segundo lugar veremos el BPB para FAT32.
Estructura del BPB para FAT12 y FAT16 (a partir del byte 36):
15) Número de dispositivo físico
Este campo ocupa 1 byte (byte 36) e indica el número asociado al dispositivo físico. Su valor
es 0x00 para los discos flexibles y 0x80 para los discos duros.
16) Reservado
Este campo ocupa 1 byte (byte 37) y en el sistema FAT su valor siempre es 0x00.
17) Firma extendida
Este campo ocupa 1 byte (byte 38) e indica que los siguientes tres campos contienen un valor.
Su valor es 0x29.
18) Identificador de volumen
Este campo ocupa 4 bytes (del 39 al 42 inclusive) y especifica el número de serie del
volumen. Este número permite a los dispositivos saber cuando se ha introducido un disco
incorrecto en una unidad. El identificador se genera mediante una combinación de fecha y
hora actual.
19) Etiqueta de volumen
Este campo ocupa 11 bytes (del 43 al 53 inclusive) e indica el nombre de la etiqueta de
volumen. El valor de esta etiqueta, que suele ser una cadena de caracteres, coincide con el
nombre de una entrada del directorio raíz.
20) Tipo de sistema de archivos
Este campo ocupa 8 bytes (del 54 al 61 inclusive) e indica el tipo de sistema de ficheros de la
partición. El valor de este campo no tiene porqué indicar exactamente que variante de FAT se
está utilizando. No será pues un campo que nos dé información detallada del sistema
utilizado.
Un ejemplo de este campo podría ser: “FAT16 “.
51
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Estructura del BPB para FAT32 (a partir del byte 36):
15) Número de sectores por FAT
Este campo ocupa 4 bytes (del 36 al 39 inclusive) e indica el número de sectores que ocupa
cada una de las tablas FAT en el volumen.
16) Flags
Este campo ocupa 2 bytes (bytes 40 y 41) e indica diferentes características del dispositivo de
almacenamiento.
17) Versión del sistema de archivos
Este campo ocupa 2 bytes (bytes 42 y 43) e indica el número de versión de FAT32 del
volumen.
18) Clúster del directorio raíz
Este campo ocupa 4 bytes (del 44 al 47 inclusive) e indica cuál es el clúster donde está situado
el directorio raíz. Cuando vimos la estructura de una partición con un sistema FAT32
pudimos observar que el directorio raíz no tiene una ubicación fija dentro de la partición. Por
convenio, se utilizará el primer cluster que no esté dañado. Típicamente su valor es 2.
19) Información del sistema de archivos
Este campo ocupa 2 bytes (bytes 48 y 49 inclusive) y da información sobre el sistema de
archivos. Contiene entre otros el número de clústeres libres en el volumen, así como el valor
del siguiente clúster libre.
20) Sector de recuperación de arranque
Este campo ocupa 2 bytes (bytes 50 y 51) e indica en qué sector de la zona reservada se
encuentra una copia del sector de arranque.
21) Reservado
Este campo ocupa 12 bytes (del 52 al 63 inclusive) y está reservado para futuras ampliaciones
del sistema.
52
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
22) Número de dispositivo físico
Este campo ocupa 1 byte (byte 64) e indica el número asociado al dispositivo físico. Su valor
es 0x00 para los discos flexibles y 0x80 para los discos duros.
23) Reservado
Este campo ocupa 1 byte (byte 65) y en el sistema FAT su valor siempre es 0x00.
24) Firma extendida
Este campo ocupa 1 byte (byte 66) e indica que los siguientes tres campos contienen un valor.
Su valor es 0x29.
25) Identificador de volumen
Este campo ocupa 4 bytes (del 67 al 70 inclusive) y especifica el número de serie del
volumen. Este número permite a los dispositivos saber cuando se ha introducido un disco
incorrecto en una unidad. El identificador se genera mediante una combinación de fecha y
hora actual.
26) Etiqueta de volumen
Este campo ocupa 11 bytes (del 71 al 81 inclusive) e indica el nombre de la etiqueta de
volumen. El valor de esta etiqueta, que suele ser una cadena de caracteres, coincide con el
nombre de una entrada del directorio raíz.
27) Tipo de sistema de archivos
Este campo ocupa 8 bytes (del 82 al 89 inclusive) e indica el tipo de sistema de ficheros de la
partición. El valor de este campo no tiene porqué indicar exactamente que variante de FAT se
está utilizando. No será pues un campo que nos dé información válida del sistema utilizado.
Un ejemplo de este campo podría ser: “FAT32 “.
6.2.1.4.- FAT – Tabla de asignación de archivos
La tabla de asignación de archivos (FAT) es la estructura más importante del sistema
de archivos que estamos analizando. Esta estructura hace las veces de un modo de asignación
de archivos con estructura enlazada. Mediante el número de clúster inicial de un archivo
podemos acceder a la FAT y mirar si ese archivo consta de más clústeres de información.
53
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
FIGURA 6.2. Tabla de asignación de archivos [5]
Dependiendo de la variante de FAT utilizada tendremos un tamaño diferente de
entrada. En FAT12 el tamaño de la entrada es de 12 bits (1,5 bytes). En FAT16 el tamaño de
la entrada es de 16 bits (2 bytes). Finalmente en FAT32 el tamaño de la entrada es de 32 bits
(4 bytes), aunque en la práctica sólo se utilizan 28 bits. Ésta es la principal diferencia entre las
diferentes versiones del sistema FAT.
La tabla de asignación de archivos permite una serie de valores para señalar si un
clúster es el último de un archivo, si un clúster está dañado o bien si una entrada contiene el
siguiente clúster de un archivo. El rango de valores permitido para cada uno de estas
funciones es el siguiente:
En FAT12 el valor que se usa para señalar que un clúster está libre es 0x000. Si un
clúster está ocupado y el archivo tiene más clústeres, se indicará el siguiente clúster con un
valor del rango 0x002 – 0xFEF. Para indicar que un clúster está ocupado pero es el último del
archivo se usa el rango 0xFF8 – 0xFFF. Si un clúster está dañado su valor en la FAT será
0xFF7. Finalmente, los valores del rango 0xFF0 – 0xFF6 están reservados.
En las otras dos variantes de FAT los valores son similares. Simplemente se tiene que
tener en cuenta que los tamaños de entrada son de un mayor número de bits. Los rangos
quedan definidos en la siguiente tabla:
Clúster libre
Ocupado. Siguiente clúster
Clúster dañado
Último clúster de archivo
Clústeres reservados
FAT16
0x0000
0x0002 – 0xFFEF
0xFFF7
0xFFF8 – 0xFFFF
0xFFF0 – 0xFFF6
FAT32
0x00000000
0x00000002 – 0xFFFFFFEF
0xFFFFFFF7
0xFFFFFFF8 – 0xFFFFFFFF
0xFFFFFFF0 – 0xFFFFFFF6
TABLA 6.4. Valores de la tabla de asignación de archivos para FAT16/32 [6]
Cómo se puede observar en esta tabla el primer clúster de la zona de datos que puede
contener información, ya sea el contenido de un archivo o más entradas de directorio, es el
clúster 2.
[5] DD.AA. NTFS.com FAT32 FAT16 File Allocation Table. “www.ntfs.com/fat-allocation.htm”, julio 2006.
[6] DOBIASH, JACK, Dobiash Realms, “http://home.teleport.com/~brainy”, julio 2006.
54
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Podríamos pensar que se puede determinar el tipo de FAT que estamos utilizando
mediante el campo del BPB que indica el tipo de sistema de archivos. Pero, esto no es así.
Para determinar el tipo de FAT necesitamos realizar el cálculo del número de clústeres de la
zona de datos. Este cálculo vendrá dado al dividir el número de sectores de datos y el número
de sectores por clúster. El número de sectores de datos vendrá dado a su vez por la diferencia
del número total de sectores del volumen y aquellos sectores que no se consideran
explícitamente sectores de la zona de datos. Estos sectores son los que contienen la
información de arranque, las diversas tablas FAT así como las entradas del directorio raíz.
Para determinar el tipo de FAT tendremos que tener en cuenta lo siguiente. Si el número de
clústeres de la zona de datos es menor a 4085 consideraremos que estamos trabajando con
FAT12. Si el número de clústeres es menor que 65525 lo estaremos haciendo con FAT16.
Mientras que si el número es mayor o igual a este último valor se tratará de un volumen con
FAT32. Dado que un archivo ocupa como mínimo un clúster, este valor indica el número
máximo de archivos que pueden almacenarse con cada uno de los sistemas.
Cabe resaltar para acabar la existencia de más de una FAT en un volumen. Esto se
hace como medida de prevención en caso de que una tabla esté dañada o debido a algún
problema contenga información incorrecta. En este caso, se puede consultar otra tabla para
restaurar la información.
6.2.1.5.- Directorio raíz
La estructura de directorios utilizada por FAT es la de árbol. La raíz de este árbol es
conocida como directorio raíz. Para su implementación, FAT utiliza una lista de entradas de
directorio. Cada entrada hace referencia a un archivo o directorio del sistema de archivos.
Para conseguir la estructura arbórea antes citada, a partir de una entrada de directorio raíz se
referencia a otro nivel que contiene más entradas. Este otro nivel es el contenido de dicho
directorio y contiene más entradas de directorio. Estas entradas estarán ubicadas en clústeres
de la zona de datos. En FAT12 y FAT16 las entradas del directorio raíz están limitadas,
mientras que en FAT32 no. El número de entradas del directorio raíz viene dado en el primer
sector del volumen como parámetro en el BPB.
El directorio raíz también contiene una entrada con la etiqueta de volumen. Esta
etiqueta es la misma que la que se encuentra en el BPB.
Cada entrada de directorio consta de 32 bytes. Estas entradas dan información sobre cada
archivo y directorio. Todas las versiones de FAT utilizan la misma estructura para estas
entradas. Analicemos qué atributos contienen:
1) Nombre
Este campo ocupa 11 bytes (del 0 al 10 inclusive). Generalmente este campo queda dividido
en dos partes. La primera parte, los primeros 8 bytes, es el nombre del archivo, directorio o
etiqueta de volumen. La segunda, propia de los archivos, es una extensión de 3 bytes que
indica el tipo del archivo. Ésta extensión puede ser útil para algunas aplicaciones. Los
directorios no tienen extensión.
55
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
En las primeras versiones de FAT era suficiente con 11 bytes para almacenar el
nombre de un archivo. Las entradas con el formato 8.3 son entradas SFN (Short File Name).
Posteriormente, se vio que este tamaño era insuficiente. Así pues, se ideó una estructura que
fuera compatible con la ya existente y permitiera nombres largos. A este nuevo tipo de
entradas se las denominó entradas LFN (Long File Name). Para almacenar más de 11
caracteres con una entrada no es suficiente así que se utilizan varias entradas de directorio.
Cada entrada LFN es de 32 bytes y puede contener un máximo de 13 caracteres. Es
importante resaltar que las entradas LFN siempre están asociadas a una entrada SFN. Las
entradas LFN sólo contienen información sobre el nombre y la extensión y se utiliza el
formato UNICODE para cada carácter. Los nombres en este tipo de entradas pueden tener un
máximo de 255 caracteres. Las entradas SFN nos darán la restante información del archivo en
cuestión. El formato de una entrada LFN se verá más adelante una vez tengamos todos los
atributos.
Es importante indicar que el primer carácter de una entrada de directorio puede dar
información adicional. Si el primer byte de esta entrada tiene un valor de 0xE5 o 0x05 querrá
decir que esa entrada está libre y no habrá que tenerla en cuenta. Si el primer byte es 0x00
querrá decir que esa entrada es la primera entrada libre del directorio (más allá no
encontraremos ninguna entrada).
Los caracteres válidos para un nombre correspondiente a una entrada SFN son todos a
excepción de los que siguen:
-
Valores de carácter menores a 0x20 (excepto 0x05). El primer carácter de la
entrada no podrá ser 0x20.
Otros caracteres: 0x22 ( “ ), 0x2A ( * ), 0x2B ( + ), 0x2C ( , ), 0x2E ( . ), 0x2F ( / ),
0x3A ( : ), 0x3B ( ; ), 0x3C ( < ), 0x3D ( = ), 0x3E ( > ), 0x3F ( ¿ ), 0x5B ( [ ),
0x5C ( \ ), 0x5D ( ] ) y 0x7C ( | ).
Las entradas LFN sí permiten a diferencia de las anteriores los siguientes caracteres:
- 0x2B ( + ), 0x2C ( , ), 0x3B ( ; ), 0x3D ( = ), 0x5B ( [ ) y 0x5D ( ] ).
2) Atributos
Este campo ocupa 1 byte (byte 11) e indica de qué tipo de archivo se trata así como alguna
característica que puede cumplir ese archivo. Los posibles valores de este campo son:
TIPO
Archivo de sólo lectura
Archivo oculto
Archivo de sistema
Etiqueta de volumen
Archivo con nombre largo
Directorio
Archivo
VALOR
0x01
0x02
0x04
0x08
0x0F
0x10
0x20
TABLA 6.5. Atributos en una entrada de directorio [CARRIER 2005]
56
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
3) Reservado
Este campo ocupa 1 byte (byte 12) y está reservado.
4) Marca de creación
Este campo ocupa 1 byte (byte 13) y contiene una marca de décimas de segundo que se
establece cuando se crea un archivo. Su rango es de 0 a 199.
5) Hora de creación
Este campo ocupa 2 bytes (bytes 14 y 15) e indica la hora en qué se creó el archivo. Para
poder representar la hora con 2 bytes se utiliza el siguiente formato:
FIGURA 6.3. Formato de hora de creación [CARRIER 2005]
6) Fecha de creación
Este campo ocupa 2 bytes (bytes 16 y 17) e indica la fecha en qué se creó el archivo. Para
poder representar la fecha con 2 bytes se utiliza el siguiente formato:
FIGURA 6.4. Formato de fecha de creación [CARRIER 2005]
7) Fecha del último acceso
Este campo ocupa 2 bytes (bytes 18 y 19) e indica la fecha del último acceso, ya sea para
lectura o para escritura, al archivo. El formato es el mismo que el del campo anterior.
Inicialmente su valor equivale al de la fecha de creación. En caso de que se produzca una
escritura, esta fecha será equivalente a la fecha de la última escritura, campo que se verá más
adelante.
57
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
8) Dirección del primer clúster (parte alta)
Este campo ocupa 2 bytes (bytes 20 y 21) e indica la parte alta de la dirección del primer
clúster de un archivo. Para los sistemas FAT12 y FAT16 es 0. Su valor estará ubicado en el
campo que contiene la parte baja. Se utilizará en FAT32, donde pueden requerirse hasta 4
bytes para direccionar un clúster.
9) Hora de la última escritura
Este campo ocupa 2 bytes (bytes 22 y 23) e indica la hora de la última escritura en un archivo.
Inicialmente, equivale a la hora de creación, puesto que la creación de un archivo se considera
una escritura. Su formato es equivalente al del campo hora de creación antes citado.
10) Fecha de la última escritura
Este campo ocupa 2 bytes (bytes 24 y 25) e indica la fecha de la última escritura en un
archivo. Inicialmente, equivale a la fecha de creación, puesto que la creación de un archivo se
considera una escritura. Su formato es equivalente al del campo fecha de creación antes
citado.
11) Dirección del primer clúster (parte baja)
Este campo ocupa 2 bytes (bytes 26 y 27) e indica la parte baja de la dirección del primer
clúster de un archivo. Lo utilizan las tres variantes de FAT para conocer a qué clúster deben
dirigirse para leer el contenido de un archivo o directorio.
12) Tamaño de archivo
Este campo ocupa 4 bytes (del 28 al 31 inclusive) e indica el tamaño de un archivo en bytes.
Especifica también el tamaño máximo que puede tener un archivo: 4 GB. El tamaño de un
directorio es 0.
58
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Veamos un ejemplo completo de una entrada de directorio para un archivo de nombre
largo. Aprovecharemos para comentar con este ejemplo los atributos que contiene una entrada
LFN.
32 bytes
4ª ENTRADA
0x44
a
x
r
t
g
o
.
0x0F 0x00 0x2F
0x0000 0xFFFF 0xFFFF 0x0000
0xFFFF
t
0xFFFF
3ª ENTRADA
0x03
b
r
y
e
m
m
u
y
0x0F 0x00 0x2F
0x0000
u
l
2ª ENTRADA
0x02
c
c
h
o
i
v
n
o
n
0x0F 0x00 0x2F
0x0000
o
m
1ª ENTRADA
0x41
E
s
s
t
u
o
0x0F 0x00 0x2F
n
0x0000
a
e
r
ENTRADA SFN
E S T
O E S
~
1
T X T
0x20 0x00 0x00 0x295B
0x3335 0x3335 0x0000 0x295B 0x3335 0x0500
0x08000000
FIGURA 6.5. Formato de entrada de directorio LFN
El archivo que vamos a tratar tiene como nombre “Esto es un archivo con nombre muy
muy largo.txt”.
Como se puede ver este archivo está formado por una entrada corta (SFN) y cuatro
entradas largas (LFN).
La entrada corta contiene un nombre y una extensión en los primeros 11 bytes. Se
corresponde con “ESTOES~1.TXT”. Más adelante veremos de dónde sale este nombre
especial. El ‘.’ no aparece implícito en la entrada. Posteriormente el atributo 0x20 indica que
se trata de un archivo. Los siguientes 2 bytes están reservados. A continuación está la hora de
creación del archivo. Es importante recordar que el formato de los datos es ‘little endian’ por
tanto el valor 0x295B tendrá que ser leído como 0x5B29. Descomponiendo el valor 0x5B29 y
recordando el formato que tiene la hora obtenemos:
0x295B Æ 0101 1011 0010 1001
Los 5 bytes de más peso corresponden a la hora, en este caso las 11.
Los siguientes 6 bytes corresponden al minuto, en este caso 25.
Los últimos 5 bytes corresponden a los segundos, en este caso 9.
Así pues la hora de creación del archivo es: 11:25:09.
59
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
El siguiente campo de 2 bytes (bytes 16 y 17) que encontramos es el de la fecha de
creación. Volvemos a realizar el proceso anterior pero esta vez teniendo en cuenta el formato
de fecha. En este caso, obtenemos la fecha: 19 de septiembre de 2006.
El siguiente campo (bytes 18 y 19) es idéntico al anterior puesto que este archivo aún
no ha sido accedido después de su creación.
Los bytes que vienen a continuación, bytes 20 y 21 tienen un 0 por valor, puesto que el
volumen tratado es FAT12.
Los siguientes dos campos vuelven a mostrar la fecha y hora de creación. Como la
creación de un archivo se considera una escritura y este archivo no ha sido modificado
posteriormente, estos campos repiten valor.
El siguiente campo corresponde al primer clúster de datos del archivo. En este caso el
primer clúster es el 5.
Para acabar se muestra el tamaño del archivo que en este caso es de 8 bytes.
Veamos a continuación el formato que presentan las entradas LFN. Cada entrada LFN
permite almacenar un máximo de 13 caracteres para el nombre del archivo. El formato de este
tipo de entradas es el siguiente:
1) Número de secuencia
Este campo ocupa un byte (byte 0) e indica cuántas entradas LFN tiene el archivo o bien en
qué entrada nos encontramos. La primera entrada mediante la máscara 0x40 nos da el número
total de entradas. En el ejemplo es 4. Este byte también puede indicar que se trata de una
entrada de directorio libre mediante el valor 0xE5.
2) Nombre del archivo (UNICODE)
Este campo ocupa 10 bytes (del 1 al 10 inclusive) y contiene parte del nombre largo del
archivo en formato Unicode. Cada carácter ocupa dos bytes.
3) Atributos
Este campo ocupa 1 byte (byte 11) e indica que se trata de una entrada de nombre largo
mediante el valor 0x0F.
4) Reservado
Este campo ocupa 1 byte (byte 12) y está reservado.
60
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
5) Checksum
Este campo ocupa 1 byte (byte 13) y contiene un valor que permite comprobar si una cierta
entrada LFN es correcta. Todas las entradas LFN que están asociadas a una
SFN tienen que tener el mismo valor en este campo. El cálculo de este valor se hace a partir
del nombre de la entrada SFN. Lo veremos más adelante después de explicar el cálculo de
nombres de una entrada SFN para archivos con nombre largo.
6) Nombre del archivo (UNICODE)
Este campo ocupa 12 bytes (del 14 al 25 inclusive) y contiene otra parte del nombre del
archivo.
7) Reservado
Los bytes 26 y 27 están reservados.
8) Nombre del archivo (UNICODE)
Este campo ocupa los 4 bytes restantes (del 28 al 31 inclusive) y contiene otra parte del
nombre del archivo.
Hemos dejado dos puntos pendientes que vamos a tratar ahora. En primer lugar,
veremos cómo se forman nombres para las entradas SFN a partir de un nombre largo de
archivo. En segundo lugar, veremos un ejemplo de cálculo del checksum a partir del nombre
calculado anteriormente.
Dado que una entrada SFN sólo puede tener un nombre de 8 caracteres más una
extensión de 3, cuando tenemos un nombre de archivo largo tenemos que aplicar algún
método para reducirlo a este formato.
Para realizar la conversión se siguen los siguientes pasos:
1) En primer lugar, se transforma el nombre introducido a mayúsculas.
2) Si el nombre contiene caracteres no permitidos en nombres cortos, se sustituyen
dichos caracteres por el carácter ‘_’.
3) Se eliminan los espacios en blanco que contenga el nombre.
4) Se almacenan los 8 primeros caracteres del nombre resultante en una estructura y
se añade un ‘.’.
5) A continuación se añade la extensión.
6) Si el nombre de archivo inicial contenía caracteres no válidos en nombres cortos o
bien, si se trata de un archivo de nombre largo, se tendrá que reducir el nombre n
caracteres. Inicialmente se deja un nombre de 6 caracteres, se le añade el carácter
‘~’ y un número. Se mira si el nombre ya existe en cuyo
61
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
caso habrá que darle un número mayor. Y así sucesivamente. El rango de números
que pueden ir después del carácter especial ‘~’ es 1-999999.
En el ejemplo partíamos del nombre largo “Esto es un archivo con nombre muy muy
largo.txt” y hemos obtenido el nombre “ESTOES~1.TXT”. Conviene decir que los nombres
cortos son almacenados en las entradas de directorio en mayúsculas.
A partir de este nombre formateado podemos calcular el checksum de cada una de las
entradas LFN. El algoritmo [7] es el siguiente:
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);
}
Veamos el funcionamiento de este algoritmo paso a paso para el nombre del ejemplo.
Partimos del nombre “ESTOES~1.TXT”. El carácter ‘.’ no se utiliza para hacer el cálculo.
En primer lugar pasemos a binario todos los caracteres que intervendrán en el cálculo:
E Æ 0x45 Æ 0100 0101
S Æ 0x53 Æ 0101 0011
T Æ 0x54 Æ 0101 0100
O Æ 0x4F Æ 0100 1111
E Æ 0x45 Æ 0100 0101
S Æ 0x53 Æ 0101 0011
~ Æ 0x7E Æ 0111 1110
1 Æ 0x31 Æ 0011 0001
T Æ 0x54 Æ 0101 0100
X Æ 0x58 Æ 0101 1000
T Æ 0x54 Æ 0101 0100
Empezamos con el primer valor:
Sum = 0100 0101
[7]
MICROSOFT
CORPORATION,
Download
Page
for
FAT32
“www.microsoft.com/whdc/system/platform/firmware/fatgendown.mspx?”, julio 2006.
62
File
System
Specification.
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Rotamos un bit a la derecha y sumamos el siguiente carácter (la ‘S’):
Sum = 1010 0010
Sum = 1010 0010 + 0101 0011 = 1111 0101
Realizamos el mismo proceso para el resto de caracteres:
Sum = 1111 1010
Sum = 1111 1010 + 0101 0100 = 0100 1110
Sum = 0010 0111
Sum = 0010 0111 + 0100 1111 = 0111 0110
Sum = 0011 1011
Sum = 0011 1011 + 0100 0101 = 1000 0000
Sum = 0100 0000
Sum = 0100 0000 + 0101 0011 = 1001 0011
Sum = 1100 1001
Sum = 1100 1001 + 0111 1110 = 0100 0111
Sum = 1010 0011
Sum = 1010 0011 + 0011 0001 = 1101 0100
Sum = 0110 1010
Sum = 0110 1010 + 0101 0100 = 1011 1110
Sum = 0101 1111
Sum = 0101 1111 + 0101 1000 = 1011 0111
Sum = 1101 1011
Sum = 1101 1011 + 0101 0100 = 0010 1111
El valor final es 0x2F.
6.2.1.6.- Zona de datos
La zona de datos está formada por un número de clústeres que dependerá del sistema
de archivos que estemos utilizando. Ya hemos visto cuántos clústeres podemos direccional
con cada variante de FAT. La zona de datos estará limitada por este hecho y por el tamaño del
volumen donde tengamos el sistema de archivos.
Los clústeres de la zona de datos pueden almacenar el contenido de los archivos o bien
el contenido de los directorios. Un clúster que contenga a un directorio estará formado por
más archivos y directorios. Conviene comentar que todos los directorios
63
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
tienen dos entradas por defecto. Estas dos entradas se crean en el momento de la creación del
directorio y tienen referencias al directorio actual y al directorio padre.
El formato de estas entradas es idéntico al formato de las entradas de nombre corto. La
entrada que se refiere al directorio actual tiene por nombre “.” y en el campo que señala el
primer clúster del directorio contiene el mismo clúster donde están ubicadas estas dos
entradas, pues se trata del directorio actual. Por el contrario, la entrada que referencia al
directorio anterior o padre tiene por nombre “..” y el clúster indicado en el campo
correspondiente es el del directorio padre. El resto de campos son idénticos al de la entrada de
directorio principal.
6.2.1.7.- Estructuras y características de FAT32
Ya se han comentado algunas diferencias entre las diferentes versiones del sistema
FAT. Aunque la principal diferencia entre las distintas versiones es el tamaño de las entradas
de la tabla de asignación de archivos existen otras diferencias. FAT32 es la versión que difiere
más de las otras dos y por ello, en esta sección, analizaremos cuáles son las principales
diferencias de ésta respecto las dos anteriores, así como estructuras adicionales que incorpora
este sistema. No haremos referencia en esta sección de las diferencias en el sector de arranque
puesto que ya las vimos en la sección 6.2.1.3.
FAT32 incorpora una estructura con información adicional sobre el sistema de
archivos denominada FSInfo Sector Structure. La localización de esta estructura está indicada
en el sector de arranque para FAT32 en los bytes 48 y 49. La estructura está contenida en un
sector de 512 bytes.
La información que ofrece esta estructura es la siguiente:
1) Firma inicial
Este campo ocupa 4 bytes (del 0 al 3 inclusive) y se usa para verificar que el sector se
corresponde al sector FSInfo. Su valor es 0x41615252.
2) Reservado
Este campo ocupa 480 bytes (del 4 al 483 inclusive) y está reservado para posibles
ampliaciones del sistema. En FAT32 se inicializa a 0.
3) Firma
Este campo ocupa 4 bytes (del 484 al 487 inclusive) y es una firma del sector FSInfo. Su
valor es 0x61417272.
64
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
4) Número de clústeres libres
Este campo ocupa 4 bytes (del 488 al 491 inclusive) e indica el número de clústeres libres en
un momento determinado en la tabla de asignación de archivos. Si su valor es 0xFFFFFFFF el
sistema tendrá que realizar el cálculo.
5) Siguiente clúster libre
Este campo ocupa 4 bytes (del 492 al 495 inclusive) e indica el siguiente clúster libre. Aún así
debido al gran tamaño de la FAT en esta versión, este valor también podría contener el último
clúster que ha sido asignado. De este modo, si se pide un nuevo clúster se podría buscar a
partir del valor almacenado en este campo sin recorrer las entradas anteriores.
6) Reservado
Este campo ocupa 12 bytes (del 496 al 507 inclusive) y está reservado para futuras
ampliaciones. FAT32 inicializa su valor a 0.
7) Firma final
Este campo ocupa 4 bytes (del 508 al 511 inclusive) e indica una firma que verifica que
efectivamente este sector es el sector FSInfo. Su valor es 0xAA550000.
Otra estructura que incorpora FAT32 es la que contiene una copia de respaldo del sector
de arranque. Esta copia podría ser útil en caso de que se produjera alguna inconsistencia en el
primer sector del volumen. Si se produjera dicha inconsistencia, el sistema intentaría arrancar
mediante la información del sector 6 que es donde se encuentra esta copia.
Para finalizar, resumimos otras diferencias que ya se citaron anteriormente:
-
El tamaño de una entrada de la tabla de asignación de archivos es de 32 bits.
El número de entradas en el directorio raíz es variable y está limitado por el
tamaño del volumen. Además, el directorio raíz no tiene una posición fija en el
volumen.
6.2.2.- HPFS
Los sistemas de archivos HPFS o sistemas de archivos de alto rendimiento fueron
diseñados para gestionar volúmenes de alta capacidad. El sistema FAT no cubría las
necesidades así que surgió este nuevo sistema.
65
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
La estructura principal de un volumen con sistema de archivos HPFS es la siguiente:
FIGURA 6.6. Estructura del sistema de archivos HPFS [CARRETERO 2001]
Como se puede observar en la figura anterior, el volumen contiene inicialmente un
bloque de carga, así como un superbloque y un superbloque de repuesto. La ocupación de
estas tres zonas es de 18 sectores. Posteriormente, se sitúan las bandas que son zonas de 16
MB para almacenar información. Estas bandas disponen de mapas de bits de 2K que indican
qué bloques están ocupados y qué bloques están libres. Los mapas de bits se sitúan en los
extremos de dos bandas para que las zonas de datos antes citadas sean zonas contiguas de 16
MB.
Las principales características que tiene el sistema HPFS son:
- Permite nombres de archivos de hasta 256 caracteres.
- El volumen está estructurado en bandas.
- La estructura de directorios es una estructura de árbol binario cuyos nodos se
denominan Fondees. Estas estructuras contienen un nombre de archivo, su longitud,
atributos, ACL (Access Control List) y situación de los datos del archivo, es decir, el
número de banda en el que se encuentran.
HPFS tiene dos problemas importantes:
-
Fragmentación externa. Depende del tamaño del archivo de los usuarios y de su
disposición en las bandas.
Uso de sectores de disco como unidad de asignación. Si se quiere usar bloques
compuestos por un conjunto de sectores tendrá que ser gestionado por la capa del
gestor de archivos, con el coste que esto supone.
6.2.3.- NTFS
NTFS surge como solución a las limitaciones tanto de las diferentes versiones del
sistema FAT como las del sistema HPFS. Un sistema de archivos NTFS [CARRETERO
2001] es una organización lógica que permite almacenar archivos de tipo NTFS en un
volumen de disco. La característica principal de NTFS es que todas sus estructuras son
archivos o son tratadas como tales. La capacidad máxima de un volumen con NTFS es de
2^64 bytes. La unidad mínima de asignación de archivos es el clúster. La siguiente tabla
muestra la relación entre el número de sectores que forman un clúster y el tamaño de un
clúster para diferentes tamaños de volumen:
66
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Tamaño de volumen
<= 512 MB
512 MB – 1 GB
1 GB – 2 GB
2 GB – 4 GB
4 GB – 8 GB
8 GB – 16 GB
16 GB – 32 GB
> 32 GB
Sectores por clúster
1
2
4
8
16
32
64
128
Tamaño de clúster
512 bytes
1K
2K
4K
8K
16K
32K
64K
TABLA 6.6. Capacidad volúmenes NTFS [RUSSINOVICH 2005]
Las principales características de este sistema son:
-
-
-
-
Gestión de discos y archivos de gran capacidad.
Alta capacidad de recuperación. Contiene copias de respaldo de las estructuras más
importantes. Utiliza además un modelo transaccional cuando tiene que realizar
algún cambio en el sistema.
Mayor seguridad. NTFS utiliza listas de control de acceso discrecional (DACL) así
como listas de control de acceso de sistema (SACL) que permiten controlar quién
manipula un archivo.
Múltiples flujos de datos. El contenido de los archivos puede tratarse como un
flujo de bytes lo que permite definir múltiples flujos de datos para un archivo.
Nombres de archivo. Se permiten nombres de archivos largos, de hasta 255
caracteres. Se diferencian también mayúsculas y minúsculas. El formato utilizado
es UNICODE, lo que permite utilizar nombres de archivos en los lenguajes nativos
de los diferentes países.
Utilidad de indexado. NTFS asocia diferentes atributos a cada archivo. Estos
atributos en el sistema de archivos están organizados como una base de datos
relacional, lo que permite indexar archivos por alguno de sus atributos.
Una partición formateada con NTFS tiene la siguiente estructura:
SECTOR
DE
ARRANQUE
MASTER FILE
TABLE (MFT)
ARCHIVOS
DE
SISTEMA
ZONA DE DATOS
FIGURA 6.7. Estructura del sistema de archivos NTFS
Como se puede observar la partición consta de cuatro zonas claramente diferenciadas:
-
Sector de arranque. Esta zona no ocupa generalmente un único sector sino varios.
Contiene información sobre la disposición del volumen así como
67
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
-
-
de las diferentes estructuras que forman el sistema de archivos. También contiene
información para el arranque del sistema.
Master File Table (MFT). Se trata de una tabla, tal y como su nombre indica, que
contiene información de todos los archivos y directorios del sistema.
Archivos de sistema. Los archivos del sistema contienen estructuras útiles para la
gestión del sistema de archivos, así como para la recuperación del mismo en caso
de fallida.
Zona de datos. Zona para la ubicación de los diferentes archivos de datos.
Una vez vista la disposición del sistema de archivos en una partición, veamos algunas
de las estructuras más importantes. No entraremos en detalle a ver el sector de arranque ya
que se asemeja al que vimos en el apartado de FAT.
La estructura de directorios que implementa NTFS es la estructura de árbol. Para
mejorar el rendimiento del sistema utiliza un árbol B, el cuál permite balanceo de carga
en sus diferentes ramas. No analizaremos en detalle esta estructura puesto que no es el
objetivo del trabajo.
Master File Table (MFT)
La tabla MFT está organizada en registros que contienen información de todos los
archivos del volumen. El tamaño de un registro es de 1 KB. La tabla MFT se basa en el
concepto de tabla de una base de datos relacional. Cada registro contiene información de un
archivo, incluyendo la tabla MFT que es tratada como un archivo más. De este modo se
consigue que la tabla sea de tamaño variable.
Los primeros 16 registros están reservados para información especial. Estos registros
contienen la siguiente información:
1) MFT ($MFT – registro 0)
Es la propia tabla MFT o tabla de archivos maestra.
2) MFT2 ($MFTMIRR – registro 1)
Es una copia de respaldo de los primeros 16 registros de la MFT.
3) Registro de log ($LOGFILE – registro 2)
Almacena la información de todas las transacciones que afectan a los metadatos del sistema
de archivos.
68
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
4) Volumen ($VOLUME – registro 3)
Contiene información del volumen. Su nombre, su versión, su creador y algunas fechas son
algunos ejemplos de atributos contenidos en este registro.
5) Tabla de atributos ($ATTRDEF – registro 4)
Contiene la definición de los atributos del sistema de archivos.
6) Directorio raíz (“.” – registro 5)
Contiene una referencia a la ubicación del directorio raíz en el volumen.
7) Mapa de bits ($BITMAP – registro 6)
Se trata de un listado de bits que indica que clústeres están asignados a un archivo y qué
clústeres no lo están.
8) Registro de arranque ($BOOT – registro 7)
Este registro contiene el código de arranque o un puntero que lo referencia.
9) Lista de clústeres defectuosos ($BADCLUS – registro 8)
Contiene un listado de los clústeres dañados de disco.
10) Limitación de disco por usuario ($QUOTA – registro 9)
Contiene información de quota de usuarios.
11) Tabla de conversión ($UPCASE – registro 10)
Contiene información para realizar la conversión de los nombres de archivo a UNICODE.
Los 6 registros restantes están reservados para posibles ampliaciones del sistema de
archivos. Todos estos registros son denominados también archivos del sistema.
Después de estos registros, a partir del registro 17 se incluyen los archivos y
directorios de usuario en el volumen. Éstos son tratados como un conjunto de atributos. Los
atributos pueden dar información sobre el archivo o directorio, o bien ser
69
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
directamente datos de contenido. En el momento de creación de un archivo o directorio se le
asocia uno de estos registros.
Veamos cuáles son los atributos de archivos y directorios:
1) Cabecera (H)
Datos de gestión usados por NTFS. Incluye números de secuencia usados internamente, así
como referencias a los atributos de los archivos o directorios y el espacio libre dentro de un
registro. No es propiamente un atributo pero se incluye en el registro MFT.
2) Información general (SI)
Contiene información general de los archivos y directorios. Esta información pueden ser
fechas y horas de creación o modificación del archivo, características especiales como si se
trata de un archivo de sólo lectura, oculto, o del sistema, etc.
3) Nombre del archivo (FN)
Contiene el nombre del archivo o directorio. Los nombres de archivos en este sistema tienen
las siguientes características:
-
Longitud de hasta 255 caracteres.
Se almacenan en formato UNICODE.
Son sensitivos a mayúsculas y minúsculas.
Permiten cualquier carácter como nombre excepto: ‘?’ , ‘”’, “/”, “\”, “<”, “>”, “*”,
“|” y “:”.
NTFS soporta la existencia de múltiples nombres de archivo en un registro asociado a un
archivo, así como enlaces duros.
4) Descriptor de seguridad (SD)
Contiene información de seguridad para limitar el acceso a los archivos y directorios. Este
descriptor mantiene relación con las ACLs antes citadas.
Los atributos vistos hasta este punto son compartidos por archivos y directorios. Ahora
veremos los propios de los directorios.
Los directorios añaden a estos cuatro atributos dos más. Son los siguientes:
5) Índice de raíz
Contiene el índice de archivos contenidos en el directorio, o parte de este índice en caso de
que sea largo.
70
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
6) Índice de asignación
Si el índice de archivos es muy largo, este campo contiene una referencia a la ubicación del
resto del índice.
Los archivos añaden a los cuatro atributos antes citados el siguiente:
5) Datos
Es el contenido del archivo.
El procedimiento que lleva a cabo NTFS cuando se quiere almacenar un archivo o un
directorio es el siguiente. Se pueden dar dos casos.
Si se quiere almacenar un archivo en el que sus atributos son de poco tamaño, se
coloca automáticamente en un registro MFT. Es importante recordar que los archivos tienen
como atributo a su contenido. Los atributos que son guardados directamente en un registro
MFT son denominados atributos residentes.
Si, por el contrario, el tamaño de los atributos de un archivo supera la capacidad de un
registro, los atributos son almacenados en clústeres de datos contiguos de la zona de datos. En
este caso, el registro MFT contiene referencias a dichos clústeres. El registro también contiene
un identificador denominado número de clúster virtual. Este identificador da información
sobre el primer clúster que ocupa el archivo así como el número de clústeres que ocupa. Dado
que los clústeres que están contiguos no tendremos que realizar consultas de la ubicación del
siguiente clúster del archivo.
Se podría dar la posibilidad de que el número de referencias a los clústeres de un
archivo también fuera elevado. Éstas serían almacenadas también en la zona de datos, y se
mantendría en el registro MFT una referencia al bloque que las contiene. En general, los
atributos que son guardados en la zona de datos se denominan atributos no residentes.
71
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
6.2.4.- Comparativa FAT, HPFS y NTFS
Las principales diferencias entre estos sistemas de archivos pueden verse en la siguiente tabla:
TABLA 6.7. Comparativa FAT, HPFS, NTFS [CARRETERO 2001]
6.3.- PROCESO DE ARRANQUE DE WINDOWS
A medida que ha ido evolucionando la tecnología y han aparecido nuevas versiones de
sistemas operativos, se han producido variaciones en el proceso de arranque de los mismos.
En este apartado veremos es este proceso para los sistemas Windows 2000 y Windows XP.
Las versiones anteriores de este sistema operativo siguen un proceso similar.
El proceso de arranque consta de los siguientes pasos [8]:
Al encender la máquina, se ejecutan las rutinas POST (Power and Self Test) para
determinar la cantidad de memoria física, así como los componentes hardware de que dispone
la máquina.
A continuación, la BIOS localiza el dispositivo de arranque, que suele ser el disco
duro, y carga y ejecuta el registro maestro de arranque (MBR). Este registro contiene un
programa de inicio, una tabla de particiones y un cierto número de bytes de control.
Una vez este registro toma el control, ejecuta el programa que contiene y busca en la
tabla de particiones aquella que esté marcada como activa. Posteriormente, carga el sector de
arranque de aquella partición en memoria y lo ejecuta.
El sector de arranque que contiene igualmente un programa codificado, carga el
archivo NTLDR en memoria y lo ejecuta. Este archivo es el cargador del sistema operativo.
[8] DD.AA. Arranque de Windows 2000/XP. “www.configurarequipos.com/doc137.html”, julio 2006.
72
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
La ejecución del cargador del sistema conlleva una búsqueda de información acerca
del hardware y los controladores para preparar las fases de carga del sistema operativo. A
continuación el cargador realiza las siguientes funciones:
1) Cambia el modo de funcionamiento del procesador pasándolo de modo real a
modo protegido. Posteriormente, NTLDR arranca unos drivers que contiene para
localizar y cargar Windows desde particiones FAT y NTFS.
2) Lee el archivo BOOT.INI para seleccionar el sistema operativo que tiene que
cargar en caso de que este archivo tenga más de una entrada. Si dicho archivo no
existe, el cargador intentará cargar el sistema operativo de la primera partición
activa del primer disco duro.
3) Una vez seleccionado el sistema, el proceso NTDETECT.COM realiza una
detección de hardware y lista todos los componentes del sistema. Esta lista es
devuelta al cargador para su inclusión posterior en el registro.
4) Carga pero no inicializa el proceso NTOSKRNL.EXE.
5) Carga la capa de abstracción del hardware (HAL.DLL).
6) Carga la clave del registro.
7) Carga los drivers de los dispositivos encontrados.
8) Cede el control al proceso NTOSKRNL.EXE.
Se lleva a cabo en este momento la inicialización del núcleo del sistema operativo. En esta
fase se llevan a cabo los siguientes procesos:
1) Se crea la clave del registro de hardware.
2) Se cargan e inicializan los controladores de dispositivos.
3) Se arrancan los servicios del sistema. Los principales servicios son BootExecute
(gestión de arranque), Memory Management Key (gestión del Virtual Memory
Manager), DOS Device Key, SubSystems Key (gestión de E/S mediante el subsistema
Win32) y WinLogon.
Finalmente, el proceso WINLOGON.EXE arranca el proceso LSASS.EXE (Local
Security Authority). Una vez el usuario ha accedido al sistema se concluye el proceso de
arranque del sistema operativo.
73
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
7.- WinFS. UNA MIRADA AL FUTURO
A pesar de que desconoce por ahora la estructura y funcionalidad del nuevo sistema de
archivos de Microsoft, hay tres objetivos claros que se pretenden conseguir con este sistema.
En primer lugar, WinFS pretende mejorar sustancialmente la velocidad y precisión en
la búsqueda de información. La aparición de nuevos tipos de datos, como los datos
multimedia, requiere que el sistema de archivos incluya estos tipos y ofrezca funcionalidades
para trabajar con ellos.
En segundo lugar, el sistema quiere ofrecer a los usuarios un esquema relacional de
sus datos. No importan tanto los datos en sí como unidad de información sino las relaciones
que dichos datos mantienen con otros datos.
En tercer lugar, WinFS busca que el propio sistema ayude a convertir los datos
almacenados en información práctica sobre la que puedan actuar.
Con estos tres principios se quiere conseguir una nueva visión en cuánto al
almacenamiento de información, dando especial relevancia a la gestión de los datos basado en
un modelo relacional.
74
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
8.- APLICACIÓN SalleFAT
8.1.- OBJETIVO DE LA APLICACIÓN
La aplicación tiene como objetivo ser una guía de aprendizaje tanto para alumnos
como para personas interesadas en el funcionamiento del sistema de archivos FAT. El usuario
puede interactuar fácilmente con el sistema gracias a las interfaces, diseñadas para su uso de
un modo intuitivo.
La aplicación comprende dos niveles de dificultad. Un primer nivel, puede
considerarse para usuarios no especializados, en el que se pretende mostrar cómo realiza el
sistema la gestión de diferentes operaciones sobre el sistema de archivos. Operaciones de
creación, modificación, consulta o borrado son algunas de las operaciones que se permiten. La
aplicación mostrará los diferentes pasos que realiza el sistema para llevar a cabo dichas
operaciones.
En un segundo nivel, un usuario ya iniciado en este tipo de sistemas, podrá analizar
exhaustivamente qué modificaciones se producen en el sistema al realizar las operaciones
antes citadas. Para ello dispondrá de un visor hexadecimal.
8.2.- TECNOLOGÍA
La tecnología utilizada para la implementación de la aplicación es Visual C++. La
facilidad que ofrece para la creación de aplicaciones de carácter visual y su uso extendido
fueron dos factores determinantes para su elección. Otra alternativa para el desarrollo de la
aplicación hubiera sido Java.
8.3.- ESTRUCTURA DE LA APLICACIÓN
Existen dos posibles visiones de la aplicación. El siguiente esquema muestra de un
modo genérico los diferentes módulos que intervienen en el uso de la aplicación:
INTERFAZ
APLICACIÓN
ARCHIVO
IMAGEN
FIGURA 8.1. Estructura general de la aplicación
Tal y como se ha dicho el usuario puede interactuar con la aplicación mediante las
interfaces. La aplicación por su parte, para realizar los procesos solicitados utiliza un archivo
que contiene una imagen del sistema de archivos. Dicho archivo podría ser montado
posteriormente sobre un dispositivo. La aplicación permite crear un archivo de este tipo,
dados los parámetros adecuados o bien, cargar uno ya existente.
75
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Otra visión más enfocada a la aplicación en sí podrá verse en los siguientes apartados.
8.3.1.- Modelado estático
Son diversas las funcionalidades que ofrece la aplicación. A continuación se muestra un
diagrama de las operaciones permitidas, así como una especificación a alto nivel de tales
operaciones.
Este es el diagrama de casos de uso de la aplicación:
FIGURA 8.2. Diagrama de casos de uso SalleFAT
76
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Veamos sin entrar en detalle cuál es la misión de cada una de estas operaciones:
CASO DE USO : CREAR IMAGEN
CU1
ID
Crear una nueva imagen
Objetivo
A1 Usuario
Actores
CU relacionados
No existe la imagen
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona él nombre y los parámetros deseados para la imagen a
crear.
2. El sistema crea un nuevo archivo de imagen con el nombre definido y los
parámetros seleccionados.
3. El sistema carga esta imagen en la aplicación para que el usuario pueda
interactuar con ella.
Variaciones
Excepciones
La imagen ha sido creada y cargada en la aplicación
Poscondición
La imagen creada tendrá extensión .bin
Comentarios
TABLA 8.1. Especificación del caso de uso Crear imagen
CASO DE USO : ABRIR IMAGEN
CU2
ID
Abrir una imagen ya existente
Objetivo
A1 Usuario
Actores
CU relacionados
La imagen a abrir existe
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona un archivo de imagen ya existente.
2. El sistema carga dicha imagen en la aplicación para que el usuario pueda
interactuar con ella.
Variaciones
Excepciones
La imagen ha sido abierta y cargada en la aplicación
Poscondición
Comentarios
TABLA 8.2. Especificación del caso de uso Abrir imagen
77
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
CASO DE USO : CREAR ARCHIVO
CU3
ID
Crear un nuevo archivo, directorio o etiqueta de volumen en el
Objetivo
sistema de archivos
A1 Usuario
Actores
CU10 Editar contenido archivo
CU relacionados
El archivo no existe en el sistema de archivos
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona qué tipo de archivo quiere crear: archivo, directorio o
etiqueta de volumen.
2. El usuario introduce un nombre y una extensión para el archivo. También
selecciona si lo desea algún atributo especial para dicho archivo: si será de sólo
lectura, oculto o de sistema.
3. El usuario selecciona el destino del archivo que puede ser la raíz o un
directorio.
4. Opcionalmente, el usuario puede ejecutar el caso de uso Editar contenido
archivo.
5. El sistema trata todos los parámetros introducidos y crea un nuevo archivo.
Variaciones
1. No se puede asignar a un directorio una extensión, así
Excepciones
como los atributos de sólo lectura y oculto. Tampoco se
puede editar su contenido.
2. Si la selección de tipo de archivo es etiqueta de
volumen, su creación se hará automáticamente en la
raíz.
El
sistema
ha creado un archivo, directorio o etiqueta de
Poscondición
volumen
Comentarios
TABLA 8.3. Especificación del caso de uso Crear archivo
CASO DE USO : BORRAR ARCHIVO
CU4
ID
Borrar un archivo o directorio del sistema de archivos
Objetivo
A1 Usuario
Actores
CU relacionados
El archivo o directorio existe
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona el archivo o directorio que quiere borrar.
2. El sistema borra el archivo o directorio seleccionado.
Variaciones
Excepciones
El archivo o directorio queda borrado del sistema
Poscondición
Comentarios
TABLA 8.4. Especificación del caso de uso Borrar archivo
78
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
CASO DE USO : SUBIR ARCHIVO
CU5
ID
Subir un archivo externo al sistema
Objetivo
A1 Usuario
Actores
CU relacionados
El archivo externo existe
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona un archivo de una unidad de disco y el destino del mismo
dentro del sistema de archivos.
2. El sistema sube el archivo y lo ubica en el lugar seleccionado.
Variaciones
No se pueden subir etiquetas de volumen ni directorios
Excepciones
El archivo ha sido subido al sistema
Poscondición
Comentarios
TABLA 8.5. Especificación del caso de uso Subir archivo
CASO DE USO : MOVER ARCHIVO
CU6
ID
Mover un archivo o directorio dentro del sistema de archivos
Objetivo
A1 Usuario
Actores
CU relacionados
El archivo o directorio existe en el sistema
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona un archivo del sistema de archivos.
2. El usuario selecciona la ubicación donde quiere situar el archivo.
3. El sistema ubica el archivo en la localización seleccionada.
Variaciones
No se puede mover una etiqueta de volumen.
Excepciones
El archivo o directorio ha cambiado de ubicación dentro del
Poscondición
sistema de archivos
Comentarios
TABLA 8.6. Especificación del caso de uso Mover archivo
79
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
CASO DE USO : CONSULTAR ATRIBUTOS
CU7
ID
Consultar los atributos de los archivos del sistema
Objetivo
A1 Usuario
Actores
CU relacionados
El archivo existe en el sistema
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona un archivo, directorio o etiqueta de volumen del sistema
2. El sistema consulta los atributos del archivo seleccionado y los muestra al
usuario.
Variaciones
Excepciones
Poscondición
Comentarios
TABLA 8.7. Especificación del caso de uso Consultar atributos
CASO DE USO : MODIFICAR ATRIBUTOS
CU8
ID
Modificar los atributos de un archivo o directorio
Objetivo
A1 Usuario
Actores
CU relacionados
El archivo existe en el sistema
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona un archivo o directorio existente en el sistema.
2. El sistema le muestra el estado actual de los atributos del archivo seleccionado:
nombre, extensión y atributos especiales.
3. El usuario modifica los atributos deseados.
4. El sistema actualiza los atributos del archivo en el sistema de archivos.
Variaciones
Excepciones
Se ha modificado un archivo o directorio
Poscondición
Comentarios
TABLA 8.8. Especificación del caso de uso Modificar atributos
80
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
CASO DE USO : MOSTRAR ARCHIVO
CU9
ID
Mostrar el contenido de un archivo
Objetivo
A1 Usuario
Actores
CU10 Editar contenido archivo
CU relacionados
El archivo existe en el sistema
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona un archivo existente en el sistema de archivos.
2. El sistema muestra el contenido del archivo seleccionado.
Variaciones
No se puede mostrar el contenido de un directorio o una
Excepciones
etiqueta de volumen.
Poscondición
Comentarios
TABLA 8.9. Especificación del caso de uso Mostrar archivo
CASO DE USO : EDITAR CONTENIDO ARCHIVO
CU10
ID
Editar el contenido de un archivo
Objetivo
A1 Usuario
Actores
CU3 Crear archivo, CU9 Mostrar archivo
CU relacionados
El archivo existe en el sistema
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona un archivo existente en el sistema de archivos.
2. El sistema muestra el contenido del archivo y permite al usuario modificarlo.
3. Una vez modificado, el sistema actualiza el contenido del archivo en el sistema
de archivos.
Variaciones
No se puede editar el contenido de un directorio o una etiqueta
Excepciones
de volumen
El contenido del archivo ha sido modificado
Poscondición
Comentarios
TABLA 8.10. Especificación del caso de uso Editar contenido archivo
81
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
CASO DE USO : IMPRIMIR INFORMACIÓN FAT
CU11
ID
Imprimir información básica del sistema de archivos
Objetivo
A1 Usuario
Actores
CU relacionados
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona la opción de imprimir información del sistema de
archivos.
2. El sistema manda un documento con dicha información a la impresora.
Variaciones
Excepciones
Poscondición
Comentarios
TABLA 8.11. Especificación del caso de uso Imprimir información FAT
CASO DE USO : IMPRIMIR ARCHIVO LOG
CU12
ID
Imprimir archivo de log
Objetivo
A1 Usuario
Actores
CU relacionados
Precondición
A discreción de un usuario habilitado
Activación
Flujo principal
1. El usuario selecciona la opción de imprimir el archivo de log.
2. El sistema manda un documento con dicha información a la impresora.
Variaciones
Excepciones
Poscondición
Comentarios
TABLA 8.12. Especificación del caso de uso Imprimir archivo log
82
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Finalmente, veamos la estructura que tiene la aplicación a nivel de clases:
FIGURA 8.3. Diagrama de clases SalleFAT
A continuación se muestra el detalle de las clases implicadas, así como una breve descripción
de cuál es su función en la aplicación:
FIGURA 8.4. Clase SFATDlg
Esta es la clase principal de la aplicación y representa asimismo la interfaz principal. Se
encarga de cargar la imagen del sistema de archivos en la aplicación, así como de la gestión
83
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
del árbol de directorios visual, el visor hexadecimal, el archivo de log e información básica
del sistema de archivos.
FIGURA 8.5. Clase CrearImagen
Esta clase está asociada a la interfaz que permite introducir los parámetros de la imagen que
se quiere crear.
FIGURA 8.6. Clase Parametros
Esta clase está asociada a la interfaz que permite elegir entre crear una imagen nueva o abrir
una ya existente.
84
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
FIGURA 8.7. Clase CrearArch
Esta clase contiene los métodos que permiten crear un archivo, un directorio o una etiqueta de
volumen. Está asociada a la interfaz diseñada para tal propósito.
CRootSector
-m_arbolDir : CTreeCtrl
-m_sNomFit : CString
-m_iDirInicioDatos : int
-m_iNumFich : int
-m_iNumSectRoot : int
-m_iDirInicioRoot : int
-m_CArbDirStr[MAXFICH] : CArbolDir
+CRootSector()
+directorioRecursivo() : void
+construirArbolDir() : bool
+modificaNode() : void
+consultaNode() : CArbolDir
FIGURA 8.8. Clase RootSector
85
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Esta clase contiene la estructura de directorios del sistema.
CSubirArchivo
-longTextoEditado : int
-CSubirArch : CFile
-m_CFunciones* : CFunciones
-m_sNomFitxer : CString
-m_sRuta : CString
-m_CArbolPantalla[100] : CArbolPantalla
-arbItems[100] : HTREEITEM
-m_CRootSector : CRootSector
-m_CBootSector : CBootSector
-m_sExtArchSubir : CString
-m_sRuta : CString
-m_sNomArchSubir : CString
+calculaFechaModificacion() : void
+calculaHoraModificacion() : void
+calculaChkSum() : unsigned char
+calculaHoraActual() : void
+calculaFechaActual() : void
+construirEntradasDir() : void
+construirTrama() : void
+modificaClusterFAT() : void
+nuevoClusterDirectorio() : void
+buscarEntradaNoRoot() : int
+buscarEntradasLFN() : int
+buscarEntrada() : int
+buscaCluster() : int
+numClustersLliures() : bool
+consultaCluster() : int
+buscarArchivo() : bool
+consultaClustersDestinoRec() : void
+consultaClustersDestino() : void
+montaArbol() : void
+initVars() : void
+CSubirArchivo()
FIGURA 8.9. Clase SubirArchivo
Esta clase contiene los métodos para subir un archivo al sistema. Gestiona así mismo la
interfaz apropiada para ello.
FIGURA 8.10. Clase Ficheros
86
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Esta clase se encarga de la carga del archivo de imagen en la aplicación y de recopilar la
información básica del sistema de archivos. Esta información es recopilada para su posterior
gestión por la clase principal. No está asociada a ninguna interfaz.
CMoverArchivo
-f* : FILE
-nomFitxerAMoure : CString
-clusterIniOrigen : int
-m_CFunciones* : CFunciones
-m_CBootSector : CBootSector
-m_CRootSector : CRootSector
-m_CArbolPantalla[100] : CArbolPantalla
-arbItems[100] : HTREEITEM
-m_CArbolPantalla2 : CArbolPantalla
-arbItems2[100] : HTREEITEM
+CMoverArchivo()
+buscaEntradaEnCluster() : bool
+consultaClustersDestinoRec() : void
+consultaClustersDestino() : void
+moverEntrada() : void
+buscarEntradaNoRoot() : int
+buscarEntradasLFN() : int
+buscarEntrada() : int
+buscaEntradaEnRaiz() : bool
+ultimaEntrada() : void
+guardarEntrada() : void
+cuantasEntradas() : int
+consultaClustersMoverRec() : void
+consultaClustersMover() : void
+montaArbol() : void
+initVars() : void
FIGURA 8.11. Clase MoverArchivo
Esta clase contiene los métodos para mover un archivo desde una ubicación origen hasta una
ubicación destino, siempre dentro del sistema. Gestiona así mismo la interfaz apropiada para
ello.
CMostrarArchivo
-numClustesFinal : int
-tamanyInicial : int
-numClustersInicio : int
-m_sSeleccion : CString
-m_CBootSector : CBootSector
-m_CRootSector : CRootSector
-m_sNomFitxer : CString
-f* : FILE
-m_CArbolPantalla[100] : CArbolPantalla
-arbItems[100] : HTREEITEM
-m_CFunciones* : CFunciones
+MostrarArch()
+infoCluster() : void
+borrarClusterFAT() : void
+modificaClusterFAT() : void
+numClustersLliures() : bool
+extraerContenido() : void
+consultaMoverArchivo() : void
+consultaMoverArchivo() : void
+montaArbol() : void
+initVars() : void
FIGURA 8.12. Clase MostrarArchivo
87
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Esta clase contiene los métodos para mostrar el contenido de un archivo del sistema. Gestiona
así mismo la interfaz apropiada para ello.
CModificarAtr
-nomFitxerNou : CString
-clusterIniDestino : int
-eslfnAnt : bool
-bSistemaAnt : bool
-bSoloLectAnt : bool
-bOcultoAnt : bool
-m_sNomFitxer : CString
-m_CBootSector : CBootSector
-m_CRootSector : CRootSector
-f* : FILE
-m_CArbolPantalla[100] : CArbolPantalla
-arbItems[100] : HTREEITEM
-m_CFunciones* : CFunciones
+CModificarAtr()
+calculaChkSum() : unsigned char
+construirTramaLFN() : void
+consultaCluster() : int
+buscarArchivo() : bool
+construirTrama() : void
+ultimaEntrada() : void
+cuantasEntradas() : int
+buscarEntradaNoRoot() : int
+buscarEntrada() : int
+buscarEntradasLFN() : int
+buscaEntradaEnRaiz() : bool
+buscaEntradaEnCluster() : bool
+mostrarAtributos() : void
+consultaModifArchivoRec() : void
+consultaModifArchivo() : void
+montaArbol() : void
+initVars() : void
FIGURA 8.13. Clase ModificarAtr
Esta clase contiene los métodos para modificar los atributos de un archivo del sistema.
Gestiona así mismo la interfaz apropiada para ello.
FIGURA 8.14. Clase ArchEditor
Esta clase está asociada a la interfaz que permite al usuario editar el contenido de un archivo
nuevo. Contiene los métodos necesarios para tal efecto.
88
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
FIGURA 8.15. Clase ConsultaAtr
Esta clase contiene los métodos que permiten consultar los atributos asociados a un archivo.
Está asociada a la interfaz destinada a tal propósito.
FIGURA 8.16. Clase BorrarArch
Esta clase contiene los métodos necesarios para borrar un archivo o un directorio del sistema.
Está asociada a la interfaz destinada a tal propósito.
89
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
FIGURA 8.17. Clase BootSector
Esta clase contiene toda la información contenida en el sector de arranque. No tiene interfaz
asociada. Es utilizada por la mayoría de clases para realizar sus procedimientos.
FIGURA 8.18. Clase ArbolPantalla
90
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Esta clase se utiliza para mostrar la estructura de directorios en forma de árbol por pantalla.
FIGURA 8.19. Clase ArbolDir
Esta clase contiene información de la estructura de directorios y sirve de apoyo a la clase
anterior para mostrar el árbol de directorios.
8.3.2.- Modelado dinámico
Las operaciones que permite el sistema son accionadas por el usuario mediante las diferentes
interfaces. Los siguientes diagramas muestran cuál es el procedimiento para activar estos
procesos:
FIGURA 8.20. Diagrama de secuencia Crear archivo
91
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
NOTA: los procesos de las diferentes operaciones serán analizados en el apartado 8.4, cuando
se realice el análisis de funcionalidades.
FIGURA 8.21. Diagrama de secuencia Borrar archivo
FIGURA 8.22. Diagrama de secuencia Subir archivo
FIGURA 8.23. Diagrama de secuencia Mostrar archivo
92
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
MoverArch
Usuario
1. OnMoverArch()
2. MoverArchivo (archivoOrigen, selecciónDestino)
archivo movido
* 3. Proceso Mover archivo
FIGURA 8.24. Diagrama de secuencia Mover archivo
FIGURA 8.25. Diagrama de secuencia Consultar atributos
FIGURA 8.26. Diagrama de secuencia Modificar atributos
93
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
8.3.3.- Modelado de implementación
La siguiente figura muestra los archivos que componen la aplicación así como las
dependencias que existen entre ellos:
SFATDlg.cpp
ArchEditor.cpp
ArchEditor.h
SFATDlg.h
Ficheros.h
Ficheros.cpp
CrearArch.cpp
CrearArch.h
RootSector.h
RootSector.cpp
MostrarArch.cpp
MostrarArch.h
ArbolDir.h
ArbolDir.cpp
SubirArchivo.cpp
SubirArchivo.h
ArbolPantalla.h
ArbolPantalla.cpp
BorrarArch.cpp
BorrarArch.h
BootSector.h
BootSector.cpp
CrearImagen.cpp
CrearImagen.h
Funciones.h
Funciones.cpp
ModificarAtr.cpp
ModificarAtr.h
ConsultaAtr.cpp
ConsultaAtr.h
MoverArchivo.cpp
MoverArchivo.h
FIGURA 8.27. Diagrama de componentes SalleFAT
8.4.- ALGORITMOS IMPLEMENTADOS
La aplicación permite las siguientes operaciones:
- Crear archivo, directorio y etiqueta de volumen.
- Borrar archivo o directorio.
94
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
- Mover archivo o directorio.
- Subir archivo.
- Consultar atributos de un archivo, directorio o etiqueta de volumen.
- Modificar atributos de un archivo o directorio.
- Mostrar el contenido de un archivo.
Los siguientes diagramas muestran el comportamiento de los procedimientos que
implementan estas operaciones:
1) Crear archivo, directorio y etiqueta de volumen
FIGURA 8.28. Diagrama de flujo Crear archivo
95
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
2) Borrar archivo o directorio
FIGURA 8.29. Diagrama de flujo Borrar archivo
3) Mover archivo
FIGURA 8.30. Diagrama de flujo Mover archivo
96
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
4) Subir archivo
FIGURA 8.31. Diagrama de flujo Subir archivo
97
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
5) Consultar atributos de un archivo, directorio o etiqueta de volumen
FIGURA 8.32. Diagrama de flujo Consultar atributos
6) Modificar atributos de un archivo o directorio
FIGURA 8.33. Diagrama de flujo Modificar atributos
98
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
7) Mostrar el contenido de un archivo
FIGURA 8.34. Diagrama de flujo Mostrar archivo
8.5.- PROBLEMAS EN LA IMPLEMENTACIÓN
Los principales problemas encontrados durante la implementación fueron debidos al
desconocimiento en un principio de la plataforma utilizada para el desarrollo de la aplicación,
es decir, Visual C++. La utilización por primera vez de la MFC (Microsoft Foundation Class)
provocó que los primeros días de desarrollo se centraran en el aprendizaje de ésta.
Durante la implementación también han surgido algunas limitaciones en cuánto a la
gestión de cadenas de caracteres en memoria o el tratamiento de caracteres especiales en las
mismas.
99
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
9.- COSTE DE REALIZACIÓN DEL PROYECTO
Las horas dedicadas a realizar el proyecto han sido unas 500 aproximadamente. El
siguiente gráfico muestra una distribución del tiempo en las diferentes tareas realizadas a lo
largo de la realización del mismo:
Estimación de tiempo
25%
Implementación
50%
Documentación
Diseño
Memoria
15%
10%
FIGURA 9.1. Estimación de tiempo del trabajo
Tal y como se puede observar, la fase de implementación es la que ha requerido más
tiempo. Las fases que quedan, de más a menos tiempo, son: memoria, diseño y
documentación.
100
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
10.- CONCLUSIONES Y LÍNEAS DE FUTURO
A lo largo del proyecto se ha intentado dar una visión exhaustiva de los diferentes
elementos que intervienen en la gestión de archivos y directorios, haciendo especial hincapié
en la estructura y funciones del sistema de archivos. Tal y como se ha observado es
fundamental, a la hora de tomar la decisión de implementar un sistema de archivos, analizar
todos los factores que intervienen directa o indirectamente con el mismo. Al tratarse de una
unidad englobada dentro de un sistema más complejo, se requiere un estudio detallado de las
dependencias con el sistema y los parámetros que influyen de manera determinante en su
rendimiento.
En el estudio realizado se ha profundizado en todos los niveles que afectan al sistema
de archivos. Desde un punto de vista físico, el sistema de archivos necesita interactuar con
dispositivos que almacenan físicamente la información. El conocimiento del funcionamiento
interno de dichos dispositivos ayuda al diseñador a ajustar las características del nuevo
sistema con el objetivo de alcanzar el máximo rendimiento del mismo. Desde un punto de
vista lógico, el sistema de archivos tiene que satisfacer las necesidades de usuarios y
organizaciones para realizar almacenamiento persistente de datos. Valorar en profundidad
dichas necesidades permite modelar el sistema incluyendo las operaciones básicas para un
manejo sencillo e intuitivo de los datos almacenados.
En este hecho radica la principal diferencia entre un usuario y un diseñador de un
sistema de archivos. El primero de ellos tiene que poder operar con sus datos de forma
cómoda viendo el sistema como una caja negra. El segundo, por el contrario, no sólo tiene que
proveer al usuario de esta transparencia sino también conseguir un sistema eficiente.
Una vez analizados todos los factores que intervienen en el diseño de un sistema de
archivos resulta de gran utilidad una aplicación que muestra detalladamente la estructura y el
funcionamiento de un sistema de archivos real, como es el caso de FAT. El hecho de poder
interaccionar directamente con un sistema de este tipo constituye un complemento ideal para
afianzar los conceptos teóricos.
Por otro lado, se hace necesaria una reflexión acerca de si las características y
funcionalidades que ofrecen los sistemas archivos en la actualidad se ajustan a las
características que ofrecen los dispositivos de almacenamiento y las funcionalidades que
requieren los usuarios para el manejo de datos. El crecimiento en capacidad así como en
rapidez de gestión que ofrecen los discos actualmente no es comparable a la que ofrecían años
atrás. Del mismo modo, se tiene que considerar la tendencia de manejar grandes cantidades de
información por parte de los usuarios y la necesidad de tratar dicha información de forma
rápida. Por ello, se hace indispensable estudiar a fondo las nuevas necesidades y adaptarlas a
los nuevos sistemas. Microsoft en su nuevo sistema operativo, Windows Vista, ha cambiado
el modo de ver los archivos, creando una estructura de manejo de datos similar a una base de
datos. Este cambio proporcionará con toda seguridad un mayor rendimiento en su gestión.
Es interesante resaltar que tanto el contenido teórico del trabajo como la aplicación
desarrollada están enfocados tanto para personas no especializadas en la materia, como para
personas que quieren entrar en detalle a nivel estructural y operacional en dicho sistema.
101
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
También cabe decir que el proyecto realizado se considera una base robusta para el
posterior desarrollo de proyectos relacionados con los sistemas de archivos. Mediante el
estudio de diferentes sistemas se pueden comparar términos de funcionalidad y rendimiento, y
desarrollar sistemas más fiables y óptimos. Aunque el trabajo se centra en los sistemas
implementados por Microsoft, hay que analizar del mismo modo sistemas implementados en
otros sistemas, como podría ser UNIX. Algunos sistemas a tratar son: FAT32, NTFS, HPFS,
WFS, ReiserFS, JFS, XFS, ext2 y ext3.
La incorporación de un sistema de journaling en algunos de estos sistemas permite que
sean más consistentes ante caídas del sistema. El análisis estructural y operacional de este
sistema de carácter transaccional requiere de un estudio profundo y detallado. Dicho estudio
queda como pauta a seguir en un futuro.
102
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
BIBLIOGRAFÍA
Libros
[Carretero, 2001]
CARRETERO, J.; GARCÍA, F.; ANASAGASTI, P.M.; PÉREZ, F. (2001). Sistemas
operativos. Una visión aplicada. 1ed. Madrid: McGraw-Hill Interamericana de España,
S.A.U. ISBN 84-481-3001-4
[Carrier, 2005]
2.- CARRIER, B. (2005). File System Forensic Analysis. 1ed. Crawfordsville: Addison
Wesley Professional. ISBN 0-32-126817-2
[Russinovich, 2005]
3.- RUSSINOVICH, M.E.; SOLOMON, D.A. (2005). Microsoft Windows Internals. 4ed.
Redmond: Microsoft Press. ISBN 0-73-561917-4
[Silberschatz, 1999]
4.- SILBERSCHATZ, A.; BAER, P. (1999). Sistemas operativos. 5ed. Mexico D.F.: Addison
Wesley Longman de México S.A. ISBN 968-444-310-2
[Stallings, 1997]
5.- STALLINGS, W. (1997). Sistemas operativos. 2ed. Madrid: Prentice Hall. ISBN 8489660-22-0
[Stallings, 2005]
6.- STALLINGS, W. (2005). Operating Systems: Internals and Design Principles. 5ed. New
Jersey: Prentice Hall. ISBN 0-13-147954-7
[Tanenbaum, 1998]
7.- TANENBAUM, A.S.; WOODHULL A.S. (1998). Sistemas operativos: Diseño e
implementación. 2ed. Mexico D.F.:Prentice Hall Hispanoamericana S.A. ISBN 970-17-01658
Manuales
[Kruglinski, 1999]
8.- KRUGLINSKI, D.J.; SHEPHERD G.; WINGO, S. (1999). Programación avanzada con
Visual C++ 6.0. 1ed. Madrid: McGraw-Hill Interamericana de España S.A.U. ISBN 84-4812265-8
Páginas Web
9.- MICROSOFT CORPORATION, MSDN Home Page.
“http://msdn2.microsoft.com”, agosto 2006.
103
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
10.- DOBIASH, JACK, Dobiash Realms.
“http://home.teleport.com/~brainy”, julio 2006.
11.- DD.AA., PCGuide – Systems and Components Reference Guide.
“www.pcguide.com/ref/index.htm”, julio 2006.
12.- DD.AA., NTFS.com FAT32 FAT16 File Allocation Table.
“www.ntfs.com/fat-allocation.htm”, julio 2006.
13.- DD.AA., Arranque de Windows 2000/XP.
“www.configurarequipos.com/doc137.html”, julio 2006.
14.- MICROSOFT CORPORATION, Download Page for FAT32 File System Specification.
“www.microsoft.com/whdc/system/platform/firmware/fatgendown.mspx?”, julio 2006.
15.- UNIVERSIDAD DE OVIEDO.
“www.atc.uniovi.es/inf_med_gijon/3ingcomp/bd/descarga.php?fichero=Jerarquia%20de%20
memoria.pdf”, julio 2006.
16.- MORENO, I. Apuntes_MEI_5-Almacenamiento_Ver6-2_PW.pdf.
“www2.ubu.es/ingelec/tecelec/inaki/Mequinf/docsmei/Apuntes_MEI_5Almacenamiento_Ver6-2_PW.pdf “, julio 2006
17.- FOX, JONATHAN, FOXy2K: FAT System Guide.
“http://home.freeuk.net/foxy2k/disk/disk3.htm”, julio 2006.
104
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
ANEXO – MANUAL DE USUARIO
A.1.- INICIO DE LA APLICACIÓN Y PANTALLA PRINCIPAL
Al iniciar la aplicación, en primer lugar se da la opción de abrir una imagen ya
existente o crear una nueva imagen introduciendo los parámetros correspondientes. La
ventana correspondiente es la siguiente:
Interfaz de creación o apertura de imagen
En caso de que se quiera crear una imagen nueva se tendrán que introducir los
parámetros de configuración del sistema de archivos. Los parámetros requeridos se pueden
ver en la siguiente pantalla:
105
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Interfaz de parametrización de imagen
Para la creación de una nueva imagen es necesario introducir o seleccionar:
-
nombre de la imagen (archivo binario)
tipo de FAT: FAT12 o FAT16
Número de FATs
Etiqueta del volumen
Número de entradas del directorio raíz
Número de sectores por clúster
Número de bytes por sector
Una vez seleccionada la opción deseada aparecerá la pantalla principal del programa.
La pantalla está dividida en diferentes zonas. Veamos como es dicha pantalla y las zonas que
la componen:
106
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
VISOR IMAGEN
MENÚ
INFORMACIÓN
SISTEMA
ÁRBOL
DIRECTORIOS
OPERACIONES
OPERACIONES
PASO A PASO (LOG)
Interfaz principal de la aplicación
En la parte superior izquierda disponemos de un menú que nos permite realizar las siguientes
operaciones:
Menú Æ Archivo:
-
Crear una imagen nueva o abrir una ya existente (Crear/Abrir Imagen…)
Guardar archivo de registro de operaciones (Guardar archivo log…)
Imprimir información básica del sistema de archivos (Imprimir infoFAT…)
Imprimir archivo de registro de operaciones (Imprimir archivo log…)
Salir de la aplicación (Salir)
Menú Æ Ayuda:
-
Acceso al manual de la aplicación (Manual)
Obtener información de la aplicación (Acerca de…)
Debajo del menú encontramos una zona que contiene información básica del sistema de
archivos. Esta información es extraída del sector de arranque:
-
Nombre OEM
Número de bytes por sector
107
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
-
Número de sectores por clúster
Número de sectores reservados
Número de FATs
Número de serie del volumen
Número de entradas del directorio raíz
Número total de sectores del volumen
Descriptor del soporte
Número de sectores por FAT
Identificador del sistema de archivos
Etiqueta de volumen
A continuación, debajo de la información básica disponemos del árbol de directorios.
Esta zona muestra la estructura de directorios contenida en el archivo de imagen cargado. En
caso de crear un archivo de imagen nuevo esta zona aparecerá vacía.
Opcionalmente podemos indicar a la aplicación si queremos que este árbol contenga o
no los archivos caracterizados como ocultos.
En la parte inferior izquierda encontramos los botones para realizar las operaciones
sobre el sistema de archivos. La aplicación nos permite:
-
Crear un archivo, directorio o etiqueta de volumen (Crear archivo)
Borrar un archivo o directorio (Borrar archivo)
Mover un archivo o directorio (Mover archivo)
Subir un archivo (Subir archivo)
Consultar los atributos de un archivo o directorio (Consultar atributos)
Modificar los atributos de un archivo o directorio (Modificar atributos)
Mostrar el contenido de un archivo (Mostrar archivo)
La parte superior izquierda de la pantalla principal contiene un visor del contenido del
archivo de la imagen. Se da dicho contenido en formato hexadecimal y en formato carácter.
Cada línea contiene 16 bytes.
Los botones Anterior y Siguiente de la parte inferior se utilizan junto al visor y el árbol
de directorios. Para ver el contenido de la imagen paso a paso de los archivos y directorios del
sistema bastará con seleccionar el archivo o directorio deseado en el árbol y a continuación
avanzar y retroceder con estos dos botones. Se nos irán mostrando en el visor las líneas
asociadas con el archivo o directorio seleccionado.
Finalmente, en la parte inferior derecha se nos mostrarán los pasos que realiza la
aplicación cuando se lleva a cabo cualquier operación de las antes citadas. Esto será de
especial ayuda para los usuarios que desconozcan el funcionamiento del sistema de archivos.
108
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
A.2.- OPCIONES DEL MENÚ PRINCIPAL
A.2.1.- Archivo
Crear/Abrir imagen
Esta opción permite crear un archivo de imagen nueva o abrir una imagen ya existente.
Se trata de la misma opción que la que se da al iniciar la aplicación.
Guardar archivo log
Esta opción permite almacenar en un archivo el registro de las operaciones que se han
realizado hasta un cierto momento.
Imprimir infoFAT
Esta opción permite enviar a la impresora un documento que contiene información
básica del sistema de archivos.
Imprimir archivo log
Esta opción permite enviar a la impresora un documento que contiene el registro de
las operaciones que se han realizado hasta un cierto momento.
A.2.2.- Ayuda
Manual
Esta opción nos muestra el manual de la aplicación.
Acerca de…
Esta opción nos da información básica de la aplicación.
109
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
A.3.- OPERACIONES
A.3.1.- Crear archivo
Esta operación permite crear un archivo, directorio o etiqueta de volumen. La pantalla
asociada a esta operación es la siguiente:
Interfaz de creación de archivo
En primer lugar hay que seleccionar que tipo de archivo se quiere crear: archivo,
directorio o etiqueta de volumen.
En segundo lugar, se introduce el nombre y la extensión, en caso de que se quiera
crear un archivo, o sólo el nombre si se quiere crear un directorio o una etiqueta de volumen.
Opcionalmente, se pueden dar atributos especiales al archivo que se va a crear. Para
archivos puede especificarse si serán de sólo lectura, ocultos o del sistema. En el caso de los
directorios sólo se podrá especificar si es oculto, mientras que las etiquetas de volumen no
contendrán atributos especiales.
En tercer lugar, se selecciona el destino del archivo que se quiere crear. Puede
seleccionarse el directorio raíz o bien un directorio interno. Un listado de los directorios es
mostrado en el árbol correspondiente.
De manera opcional también puede editarse el contenido de un archivo pulsando el
botón Editar contenido archivo. Si se selecciona esta opción aparecerá una pantalla como
esta:
110
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
Interfaz de edición de archivo
Se puede escribir en la zona de texto y posteriormente guardar el contenido que se
almacenará posteriormente en el archivo mediante el botón Guardar y salir.
Para llevar a cabo el proceso de creación del archivo basta con pulsar el botón Crear
una vez introducidos todos los parámetros solicitados.
111
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
A.3.2.- Borrar archivo
Esta operación permite borrar un archivo o directorio del sistema. La pantalla que
permite llevar a cabo dicha operación es la siguiente:
Interfaz de eliminación de archivo
Para borrar un archivo o directorio basta con seleccionarlo en el árbol de directorios y
a continuación pulsar el botón Borrar. Una vez seleccionado el archivo o directorio a borrar
podremos ver la ruta de éste en la zona de Selección.
112
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
A.3.3.- Mover archivo
Esta operación permite mover un archivo o directorio desde una ubicación origen
hasta una ubicación destino. La pantalla que permite realizar esta operación se muestra a
continuación:
Interfaz de movimiento de archivo
Para llevar a cabo la operación basta con seleccionar el archivo o directorio deseado en
el árbol de directorios origen (izquierda) y seleccionar el nuevo destino del mismo en el árbol
de directorios destino (derecha). Una vez hechas ambas selecciones bastará con pulsar el
botón ---->. De nuevo podremos revisar las selecciones efectuadas mediante las zonas
correspondientes de Selección.
113
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
A.3.4.- Subir archivo
Esta operación permite subir un archivo de un volumen externo a nuestro sistema de
archivos. La pantalla que permite esta operación es la siguiente:
Interfaz de subida archivo
Para realizar la operación solicitada bastará con escribir la ruta completa del archivo
que queremos subir en el cuadro de texto de Selección de archivo. Opcionalmente se puede
buscar el archivo pulsando el botón Examinar, opción que nos permitirá explorar los
volúmenes existentes en el sistema.
Una vez seleccionado el archivo escogeremos el directorio destino de éste.
Finalmente, para llevar a cabo la operación pulsaremos el botón Subir.
Cabe decir que esta opción no permite subir directorios, únicamente archivos.
114
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
A.3.5.- Consultar atributos de archivo
Esta opción permite consultar los atributos de un archivo, directorio o etiqueta de volumen.
La pantalla que permite realizar esta acción es la que se muestra a continuación:
Interfaz de consulta de atributos
Para llevar a cabo la operación será necesario escoger un archivo, directorio o etiqueta
de volumen del árbol de directorios mostrado. La ruta de dicha selección aparecerá en la zona
de Selección. A continuación al pulsar el botón Consultar se mostrarán los atributos asociados
al archivo seleccionado. En la pantalla anterior pueden verse dichos atributos.
115
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
A.3.6.- Modificar atributos de archivo
Esta opción permite modificar algunos atributos de archivos y directorios. La pantalla
que permite efectuar la operación es la siguiente:
Interfaz de modificación de atributos
Para llevar a cabo la operación hay que seleccionar el archivo o directorio del cuál se
quieren modificar atributos. Dicha selección aparecerá en la zona de Selección. Una vez
seleccionado aparecerán los atributos actuales del archivo. Se podrán modificar el nombre, la
extensión y algunos atributos especiales. Para efectuar la operación basta con pulsar el botón
Modificar.
116
Estudio de un sistema de ficheros Windows e implementación de una aplicación docente para su aprendizaje
A.3.7.- Mostrar archivo
Esta operación permite mostrar el contenido de un archivo. La pantalla que permite
efectuar la operación es la siguiente:
Interfaz de vista del contenido de un archivo
Para llevar a cabo la operación hay que seleccionar el archivo en el árbol de
directorios. Una vez seleccionado al pulsar el botón Mostrar Archivo aparecerá su contenido
en la pantalla de texto de la derecha. Opcionalmente podrán realizarse en esta misma pantalla
de texto modificaciones del texto original y podrán ser guardados pulsando el botón Guardar
y salir.
117
Descargar