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