Sistemas Operativos [El sistema de archivos] M. en C. Sergio Luis Pérez Pérez UAM C UAJIMALPA , M ÉXICO, D. F. Trimestre 13-O Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 1 / 79 Archivos Archivos I Un archivo es un mecanismo de abstracción que permite almacenar información en un dispositivo de almacenamiento y leerla después. Es importante distinguir entre archivo fı́sico y archivo lógico. Un archivo fı́sico es una colección de bytes almacenados en algún dispositivo. Un archivo lógico es cómo un programa visualiza un archivo. Dicho programa no tiene por que saber donde son escritos o leı́dos los datos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 2 / 79 Archivos Archivos II La administración de archivos debe ser transparente para el usuario. Las reglas para nombrar archivos varı́an de un sistema a otro. Algunos sistemas permiten nombres de hasta 255 caracteres de longitud. Algunos sistemas de archivos distinguen entre mayúsculas y minúsculas (Unix-Linux) mientras que otros no (Windows). Windows 95 y 98 utilizaban el sistema de archivos de MS-DOS, y las versiones posteriores utilizaban NTFS. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 3 / 79 Archivos Archivos III NTFS (New Technology File System) es un sistema de archivos basado en el sistema de archivos HPFS de IBM/Microsoft usado en el sistema operativo OS/2. NTFS también posee caracterı́sticas del formato de archivos HFS diseñado por Apple. HPFS (High Performance File System) fue un sistema de archivos creado especı́ficamente para el OS/2. El objetivo de HPFS era mejorar las limitaciones del sistema de archivos FAT. HPFS fue escrito por Gordon Letwin. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 4 / 79 Archivos Archivos IV FAT (file allocation table) es un sistema de archivos desarrollado para MS-DOS y, además, el sistema de archivos principal de las ediciones no empresariales de Microsoft Windows. Los sistemas de archivos suelen considerar dos partes para el nombre del archivo, ambas separadas por un punto. La primera parte es el nombre que el usuario desea para el archivo y la segunda parte, llamada extensión, se utiliza para ayudar a determinar el tipo de archivo. En Unix los nombres de archivo son sólo convenciones mientras que en Windows se suele asociar un significado. Algunas formas de estructuras archivos son: Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 5 / 79 Archivos Archivos V Sucesión de bytes. Se cuenta con una sucesión no estructura de bytes y el SO no sabe y no le interesa el contenido del archivo. Sucesión de registros. En este tipo de estructura los archivos son una sucesión de registros de longitud fija. En este modo las operaciones de lectura devuelven un registro y las de escritura sobreescriben o anexan otro. Árboles. El archivo consiste de un árbol de registros no necesariamente de la misma longitud. ¿Qué tipos de estructura de árbol conoce? Algunos tipos de archivos son: Archivos normales. Contienen información de usuario. Pueden ser ASCII o binarios. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 6 / 79 Archivos Archivos VI Directorios. Son archivos del sistema que permiten mantener la estructura del sistema de archivos. Archivos especiales de caracteres. Sirven para modelar los dispositivos E/S en serie. Archivos especiales de bloques. Sirven para modelar discos. Los archivos ASCII tienen la ventaja de que pueden editarse con cualquier editor de texto. ASCII (American Standard Code for Information Interchange es un código de caracteres basado en el alfabeto latino, tal como se usa en el inglés moderno y en otras lenguas occidentales. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 7 / 79 Archivos Archivos VII El código ASCII se creó en 1963 por el ANSI (American National Standards Institute). En 1967 se incluyeron las minúsculas y se redefinieron algunos códigos de control, lo que dio pie al US-ASCII. Los archivos binarios mantienen una estructura que sólo pueden entender los programas que lo usan. Un archivo binario ejecutable tiene la siguiente estructura: Encabezado. Se compone de un identificador de archivo ejecutable, tamaño de texto, tamaño de datos, tamaño de los bits de reubicación, tamaño de tabla de sı́mbolos y punto de ingreso. Texto. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 8 / 79 Archivos Archivos VIII Datos. Bits de reubicación. Tabla de sı́mbolos. Un archivo binario permanente consiste de los siguiente: Encabezado. Se compone del nombre del módulo, la fecha, el propietario, la protección y el tamaño. Módulos que lo conforman. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 9 / 79 Archivos Archivos IX Tipos de acceso a archivos Acceso secuencial. Un archivo es accedido leyendo sus bytes en orden comenzando por el primer byte o registro. Generalmente se utilizaba cuando el dispositivo de almacenamiento era una cinta magnética. Acceso aleatorio. En este tipo de archivo los bytes o registros pueden leerse en cualquier orden. Su uso es fundamental en diversas aplicaciones tales como bases de datos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 10 / 79 Archivos Archivos X Atributos de archivos I Los atributos de archivo permiten asociar alguna información adicional a los archivos. Algunos atributos de archivo son: Protección. Indican quién puede tener acceso al archivo. Contraseña. Es la clave necesaria para tener acceso al archivo. Creador. Es el identificador de la persona que crea el archivo. Dueño. Indica el propietario actual. Indicador de sólo lectura. 0 para leer/escribir. 1 para sólo lectura. Indicador de oculto. 0 para normal. 1 para no mostrarlo en listados. Indicador de sistema. 0 para archivos normales. 1 para archivo de sistema. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 11 / 79 Archivos Archivos XI Atributos de archivos II Indicador de archivado. 0 para ya respaldado. 1 para respaldarse. Indicador de ASCII/binario. 0 para archivo ASCII. 1 para archivo binario. Indicador de acceso aleatorio. 0 para sólo acceso secuencial. 1 para acceso aleatorio. Indicador de temporal. 0 para normal. 1 para borrarlo al terminar el proceso. Indicadores de bloqueo. 0 para sin bloqueo. Distinto de cero si está bloqueado. Longitud de registro. Número de bytes en un registro. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 12 / 79 Archivos Archivos XII Atributos de archivos III Posición de clave. Distancia a la clave, dentro de cada registro. Longitud de clave. Número de bytes en el campo clave. Hora de creación. Fecha y hora en que se creó el archivo. Hora de último acceso. Fecha y hora en que se tuvo acceso por última vez al archivo. Hora de último cambio. Fecha y hora en que se modificó por última vez el archivo. Tamaño actual. Número de bytes en el archivo. Tamaño máximo. Número de bytes que puede alcanzar el archivo. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 13 / 79 Archivos Archivos XIII Operaciones con archivos I La llamadas al sistema más comunes relacionadas con archivos son: Create. Se crea un archivo sin datos con sólo algunos valores iniciales por defecto. Delete. Elimina el archivo para desocupar el espacio en disco. Open. Permite abrir un archivo para luego usarlo. Close. Se utiliza para cerrar el archivo toda vez que se han terminado los accesos. Read. Permite leer los datos del archivo desde una posición actual. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 14 / 79 Archivos Archivos XIV Operaciones con archivos II Write. Se escriben datos en el archivo a partir de una posición actual. Append. Es una forma restrictiva del write pues solo puede agregar datos al final del archivo. Seek. Permite reubicar el apuntador de archivo en algún punto especı́fico de éste. Get attributes. Permite leer los atributos de un archivo. Set attributes. Permite establecer o modificar los atributos de un archivo. Rename. Permite cambiar el nombre de un archivo existente. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 15 / 79 Directorios Directorios I Los directorios permiten llevar el control de los archivos. Algunas formas de organizar el sistema de directorios son: Sistemas de directorios de un sólo nivel. Sistemas de directorios de dos niveles. Sistemas de directorios jerárquicos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 16 / 79 Directorios Directorios II Sistemas de directorios de un sólo nivel Consiste de un sólo directorio que contiene a todos los archivos. Generalmente se denomina directorio raı́z. Es un esquema sencillo y permite la ubicación de los archivos con rapidez. Los problemas ocurren cuando se tienen múltiples usuarios para un solo directorio. Este esquema no se utiliza en sistemas multiusuario pero podrı́a utilizarse en un sistema empotrado. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 17 / 79 Directorios Directorios III Sistemas de directorios de dos niveles En este esquema se da a cada usuario un directorio privado. De este modo se elimina el problema de que varios usuarios utilicen el mismo dispositivo de almacenamiento. Este esquema requerı́a que los usuarios utilizaran un nombre de usuario y password para acceder a sus propios directorios. Sin embargo es posible ejecutar archivos de otros usuarios (en otros directorios). Lo anterior se requiere para poder ejecutar los programas de usuario que todos desean utilizar. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 18 / 79 Directorios Directorios IV Sistemas de directorios jerárquicos I Establece un árbol de directorios tal que cada usuario puede tener tantos directorios como necesite. De este modo los usuarios pueden organizar mejor su trabajo. Casi todos los sistemas de archivos actuales se encuentran organizados de este modo. Para especificar los nombres de archivo pueden utilizarse dos métodos: nombre de ruta absoluta y nombre de ruta relativa. El nombre de ruta absoluta considera el camino que debe seguirse para llegar al archivo desde el directorio raı́z. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 19 / 79 Directorios Directorios V Sistemas de directorios jerárquicos I El nombre de ruta relativa sólo considera el nombre de un archivo sin la ruta desde el directorio raı́z, siempre y cuando se encuentre en el directorio de trabajo. El directorio de trabajo o directorio actual se refiere al directorio en el que un usuario se encuentra ubicado actualmente. En Unix el separador para distinguir entre directorios es ‘/’ mientras que en Windows el separador común es ‘\’ aunque también se puede utilizar el de Unix. El directorio raı́z en Unix se denota con ‘/’, mientras que en Windows se debe especificar primero una unidad de almacenamiento digamos “C:”. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 20 / 79 Directorios Directorios VI Operaciones con directorios I La llamadas al sistema más comunes para administrar directorios son: Create. Crea un directorio el cual está casi vacı́o, pues contiene por defecto los directorios punto y punto punto. Delete. Elimina el directorio siempre y cuando esté vacı́o (aunque contenga los directorios punto y punto punto). Opendir. Permite abrir un directorio para luego usarlo. Closedir. Se utiliza para cerrar el directorio. Readdir. Permite leer la siguiente entrada de un directorio abierto. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 21 / 79 Directorios Directorios VII Operaciones con directorios II Rename. Permite cambiar el nombre de un directorio existente. Link. Se utiliza para permitir que un archivo pueda aparecer en más de un directorio. Esta llamada requiere de un nombre de archivo y el nombre de la ruta que se desea ligar al archivo. Unlink. Borra un archivo del sistema de archivos si es que sólo se encuentra en un directorio, de otro modo sólo elimina la referencia del archivo del directorio actual. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 22 / 79 Construcción del sistema de archivos Construcción del sistema de archivos I El sistema de archivos estará almacenado en el disco. Si el disco se divide en varias particiones entonces cada una de ellas tendrá su propio sistema de archivos. El sector 0 del disco se conoce como registro maestro de arranque MBR (Master Boot Record) y es el que arranca la computadora. Al final del MBR se encuentra una tabla de particiones que contiene las direcciones inicial y final de cada partición. ¿Qué ocurre cuando se enciende la computadora? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 23 / 79 Construcción del sistema de archivos Construcción del sistema de archivos II 1 El BIOS (Basic Input-Output System) lee el MBR del disco y lo ejecuta. 2 El MBR primero localiza la partición activa y lee el primer bloque, también llamado bloque de arranque, y lo ejecuta. 3 Entonces el programa del bloque de arranque carga el SO contenido en esa partición. Todas las particiones cuentan con un bloque de arranque. Algunos métodos para realizar la implementación de archivos son: Asignación contigua. Asignación por lista enlazada. Asignación por lista enlazada mediante una tabla en memoria. Estructura de datos de nodo-ı́ndice. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 24 / 79 Construcción del sistema de archivos Construcción del sistema de archivos III Asignación contigua I Cada archivo es almacenado en una serie contigua de bloques. Este esquema es sencillo de implementar ya que para saber dónde se encuentran los bloques de un archivo sólo se requiere conocer la dirección del primer bloque y el tamaño. Otra ventaja es que la lectura es muy rápida pues se necesita sólo un desplazamiento del brazo y luego leer los bloques contiguos. La desventaja es que al borrar archivos se van creando huecos en el disco y es necesario realizar una compactación. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 25 / 79 Construcción del sistema de archivos Construcción del sistema de archivos IV Asignación contigua II La compactación puede ser ayudada al solicitar al usuario el tamaño del archivo que va a crear para ubicarlo en el mejor hueco y ası́ evitar hasta donde sea posible la compactación. ¿Es esta una buena solución desde el punto de vista del usuario? ¿En qué tipo de hardware puede utilizarse el esquema de asignación contigua sin problemas? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 26 / 79 Construcción del sistema de archivos Construcción del sistema de archivos V Asignación por lista enlazada Se crea una lista enlazada de bloques para cada archivo. La primera palabra de cada bloque se utiliza como apuntador al siguiente bloque del archivo. En este caso no existe pérdida por la fragmentación de disco. El problema es que el acceso se vuelve pseudo-aleatorio y por tanto bastante lento. Otro problema es que los primeros bytes o palabra de cada bloque del archivo contiene información que no es propia del archivo. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 27 / 79 Construcción del sistema de archivos Construcción del sistema de archivos VI Asignación por lista enlazada mediante una tabla en memoria Es igual que el anterior pero en lugar de poner las referencias junto con el bloque, se utiliza una tabla en memoria. Este tipo de asignación con una tabla en memoria se conoce como FAT (File Allocation Table). Dado que la secuencia de referencias de bloques de un archivo se encuentra en memoria, es más fácil ir a una parte en especı́fica del archivo. En el directorio de archivos sólo se almacenarı́a la referencia a la posición en la tabla del primer bloque de un archivo. La desventaja es que para que esto funcione la tabla debe estar en memoria siempre. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 28 / 79 Construcción del sistema de archivos Construcción del sistema de archivos VII Estructura de datos de nodo-ı́ndice Se utiliza una estructura de datos llamada nodo-ı́ndice los atributos y direcciones en disco de los bloques de un archivo. Suele ser de tamaño fijo n. Si k es el número máximo de archivos que pueden estar abiertos al mismo tiempo entonces sólo se requiere n ∗ k espacio en memoria. ¿Qué hacer si un archivo requiere más de n bytes para poder ser referenciado? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 29 / 79 Construcción del sistema de archivos Construcción del sistema de archivos I ¿Qué ocurre con el sistema de archivos cuando se abre un archivo? Al abrirse un archivo el SO utiliza el nombre proporcionado por el usuario para localizar la entrada correspondiente en el directorio. Dicha entrada de directorio provee la información necesaria para encontrar los bloques de disco. El objetivo principal del sistema de directorios es establecer una correspondencia entre el nombre de archivo y la información necesaria para localizar los datos. Algunos sistemas de archivos guardan todos los atributos de un archivo junto con la entrada correspondiente en el directorio (MS-DOS). Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 30 / 79 Construcción del sistema de archivos Construcción del sistema de archivos II También suelen mantener nombres de archivo de longitud fija. Otros sistemas sólo mantienen en la entrada del directorio el nombre del archivo y la referencia al nodo-ı́ndice (UNIX). Otro método es utilizar una porción fija en cada entrada de directorio y una porción variable. La porción fija comienza con una longitud de entrada del archivo y continua con una serie de parámetros de longitud fija. La porción variable es el nombre del archivo y debe terminar con el caracter nulo. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 31 / 79 Construcción del sistema de archivos Construcción del sistema de archivos III Otra alternativa es que todas las porciones fijas de cada entrada de directorio se almacenen de forma consecutiva y en otro lugar los nombres de directorio en una especie de montı́culo (heap). Otra opción es utilizar tablas de dispersión (hash): Supongamos que el tamaño de la tabla es n. 1 2 3 Primero, se utiliza algún criterio para asociar al nombre del archivo un valor entre 0 y n − 1. Luego, se examina la entrada de la tabla correspondiente al código obtenido. Si la ranura ya esta usada se construye una lista ligada que para ahı́ encadenar todas las entradas con el mismo código. Para consultar un archivo se sigue un proceso parecido al anterior. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 32 / 79 Ejemplos de sistemas de archivos Ejemplos de sistemas de archivos I Algunos ejemplos de sistemas de archivos son: Sistemas de archivos de CD-ROM. Sistema de archivos de MS-DOS. Sistema de archivos de Windows 98. Sistema de archivos de Windows 2000. Sistema de archivos de UNIX V7. Sistema de archivos de UNIX. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 33 / 79 Ejemplos de sistemas de archivos Sistemas de archivos de CD-ROM Sistemas de archivos de CD-ROM I Un CD-ROM (Compact Disc - Read Only Memory) es un prensado disco compacto que contiene los datos de acceso, sin permisos de escritura. El CD-ROM estándar fue creado en 1985 por Sony y Philips. Los sistemas de archivos de CD-ROM son sencillos pues trabajan bajo el supuesto de que sólo se escribe una vez. El estándar más común para sistemas de archivos de CD-ROM es el ISO 9660 y fue establecido en 1998. Los CD-ROM se componen de una sola espiral continua que contiene los bits en sucesión lineal. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 34 / 79 Ejemplos de sistemas de archivos Sistemas de archivos de CD-ROM Sistemas de archivos de CD-ROM II Los bits de la espiral se dividen en bloques lógicos, llamados sectores, de 2352 bytes. Algunos de esos bytes se utilizan para la corrección de errores y otros gastos adicionales y sólo 2048 bytes son útiles. Cuando se graba música, para dejar los espacios entre canción y canción, lo que ocurre es que se dejan bloques sin grabar. Esto se logra teniendo en cuenta que cierto número de bloques es igual a un segundo. Bajo el estándar ISO 9660, la función de los primeros 16 bloques de un CD-ROM no están definidos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 35 / 79 Ejemplos de sistemas de archivos Sistemas de archivos de CD-ROM Sistemas de archivos de CD-ROM III Dichos bloques podrı́an utilizarse para crear un disco de arranque. Después de dichos bloques, viene el descriptor de volumen primario que se compone de: Identificador del sistema (32 bytes). Identificador de volumen (32 bytes). Identificador del productor (128 bytes). Identificador del preparador de datos (128 bytes). Archivo de resumen. Archivo de derechos de autor. Información bibliográfica. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 36 / 79 Ejemplos de sistemas de archivos Sistemas de archivos de CD-ROM Sistemas de archivos de CD-ROM IV Tamaño del bloque lógico (potencias de 2, como 2048, 4096 y 8192). Número de bloques del CD-ROM. Fechas de creación y de expiración. Información del contenido del directorio raı́z (donde inicia el sistema de archivos). El directorio raı́z ası́ como los demás directorios constan de un número variable de entradas. Cada entrada de directorio también es de longitud variable y se compone de: Longitud de entrada de directorio (1 byte). Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 37 / 79 Ejemplos de sistemas de archivos Sistemas de archivos de CD-ROM Sistemas de archivos de CD-ROM V Longitud de registro de atributos extendidos (1 byte). Es la longitud de los atributos extendidos pero suelen ser opcionales. Ubicación del archivo (8 bytes). Basta con la ubicación del bloque inicial y el tamaño para determinar la ubicación de todos los bloques. Tamaño del archivo (8 bytes). Fecha y hora (7 bytes). Contiene campos para año, mes, dı́a, hora, minuto, segundo y uso horario. Dado que los años se empezaron a contar de 1900, en el año 2156 habrá problemas, ¿por qué?. Marcadores (1 byte). Contiene bits de significado como: bit de entrada oculta, bit para distinguir entre archivo y directorio, bit para habilitar los atributos extendidos, entre otros. Intercalación (1 byte). Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 38 / 79 Ejemplos de sistemas de archivos Sistemas de archivos de CD-ROM Sistemas de archivos de CD-ROM VI Número de CD (4 bytes). Permite indicar que corresponde a una entrada de directorio de un archivo situado en otro CD-ROM. Nombre del archivo (Longitud variable). Relleno. Permite que toda entrada de directorio tenga un número par de bytes. Es importante mencionar que cada campo binario se encuentra codificado dos veces: big endian (Motorola) y little endian (Intel). Dentro de un directorio las entradas aparecen en orden alfabético con excepción de las dos primeras que representan el directorio en sı́ y su padre (como . y .. de Unix). No hay lı́mite de archivos por directorio. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 39 / 79 Ejemplos de sistemas de archivos Sistemas de archivos de CD-ROM Sistemas de archivos de CD-ROM VII La profundidad lı́mite para los directorios a partir de la raı́z es ocho. ISO 9660 define tres niveles de uso: 1 Nivel 1: Limita el nombre del archivo a 8 caracteres y sólo tres para la extensión. 2 Nivel 2: Permite nombres de archivos de hasta 31 caracteres. 3 Nivel 3: Igual que el nivel 2 para la parte de nombres pero permite que un archivo pueda estar dividido en secciones no necesariamente contiguas. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 40 / 79 Ejemplos de sistemas de archivos Sistema de archivos de MS-DOS Sistema de archivos de MS-DOS I La primera versión de MS-DOS (MS-DOS 1.0) se limitó a un solo directorio. A partir del MS-DOS 2.0 se permitió que la profundidad de los directorio fuera arbitraria. El número de archivos o directorios a crear en cada directorio sólo está limitado por el espacio en disco. Uno de los problemas de MS-DOS es que no existe el concepto de usuario por cada archivo por lo que el que inicie sesión puede tener acceso a todos los archivos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 41 / 79 Ejemplos de sistemas de archivos Sistema de archivos de MS-DOS Sistema de archivos de MS-DOS II La entradas de directorio son de 32 bytes pero la información de directorio es de longitud variable. Una entrada de directorio de MS-DOS contiene la siguiente información: Nombre de archivo (8 bytes). Extensión (3 bytes). Atributos (1 byte). Bit de oculto, bit de sólo lectura, bit de respaldo y bit de archivo de sistema. Reservado (10 bytes). No se usan. Hora (2 bytes). Tiene una exactitud de ±2 segundos pues 2 bytes sólo permiten almacenar hasta 65536 valores mientras que el dı́a tiene 86400 segundos. De modo que para la hora se utilizan 5 bits, 6 para el minuto y 5 para los segundos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 42 / 79 Ejemplos de sistemas de archivos Sistema de archivos de MS-DOS Sistema de archivos de MS-DOS III Fecha (2 bytes). Se utilizan 5 bits para el dı́a, 4 para el mes y 7 para el año contando a partir de 1980. Número del primer bloque (2 bytes). Tamaño de archivo (4 bytes). Dado que la cuenta es de bytes se pueden tener archivos hasta de 4GB (en teorı́a). MS-DOS lleva el control de los bloques de archivo por medio de una tabla de asignación de archivos (FAT) en memoria. El número de primer bloque se utiliza como ı́ndice para consultar la tabla FAT de 64K entradas. El sistema de archivos FAT viene en tres versiones para MS-DOS: FAT-12, FAT-16 y FAT-32. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 43 / 79 Ejemplos de sistemas de archivos Sistema de archivos de MS-DOS Sistema de archivos de MS-DOS IV Con FAT-N, N denota el número de bits que tiene una dirección en disco, aunque FAT-32 en realidad tiene 28 bits. En todas las versiones FAT el bloque de disco debe ser un múltiplo de 512 bytes. Cuando aparecieron los discos duros se comenzaron a manejar tamaños de bloque de 1, 2 y 4 KB. Con tamaños de bloque de 4 KB se podı́an tener particiones de disco de hasta 16 MB para FAT-12 (212 ∗ 212 ). Como MS-DOS reconocı́a cuatro particiones por unidad de disco entonces podı́a utilizarse en discos de hasta 64 MB. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 44 / 79 Ejemplos de sistemas de archivos Sistema de archivos de MS-DOS Sistema de archivos de MS-DOS V La siguiente tabla muestra el tamaño máximo que puede manejar una partición MS-DOS para diferentes versiones FAT y tamaños de bloque. Tamaño de bloque FAT-12 FAT-16 FAT-32 0.5 KB 2 MB 1 KB 4 MB 2 KB 8 MB 128 MB 4 KB 16 MB 256 MB 1 TB 8 KB 512 MB 2 TB 16 KB 1024 MB 2 TB 32 KB 2048 MB 2 TB FAT-32 apareció a partir de la segunda versión de Windows 95. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 45 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 98 Sistema de archivos de Windows 98 I Para que el sistema de archivos de Windows 98 fuera compatible con Windows 95 y Windows 3, Microsoft decidió mantener un tipo de estructura de datos compatible con tales versiones. FAT-32 permitió resolver ese problema y se utilizarı́a también en Windows ME y NT. Las entradas de directorio continuaron siendo de 32 bytes pero se utilizaron los 10 bytes que se tenı́an reservados anteriormente. Una entrada de directorio de Windows 98 contiene la siguiente información: Nombre de archivo (8 bytes). Extensión (3 bytes). Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 46 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 98 Sistema de archivos de Windows 98 II Atributos (1 byte). NT (1 byte). Este campo permite asegurar la compatibilidad con Windows NT, desplegando los nombres de archivo en el caso correcto (para MS-DOS sólo se permitı́an mayúsculas). Seg (1 byte). Es un campo complementario para la fecha y hora de creación lo que permite una precisión de hasta 10 ms. Fecha y hora (4 bytes). Ultimo acceso (2 bytes). Almacena la fecha de ultimo acceso (pero no la hora). 16 bits superiores del bloque inicial (2 bytes) . Con esto se permite que los números de bloque sean de 32 bits. Fecha y hora de última escritura (4 bytes). Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 47 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 98 Sistema de archivos de Windows 98 III 16 bits superiores del bloque inicial (2 bytes). Tamaño de archivo (4 bytes). Dado que la cuenta es de bytes se pueden tener archivos hasta de 4GB (en teorı́a). La solución para que se pudieran crear nombres de archivo largos y se mantuviera la compatibilidad con MS-DOS fue asociar a cada archivo dos nombres. Uno era el nombre largo que permitı́a caracteres Unicode para la compatibilidad con Windows NT y el otro corto para la compatibilidad con MS-DOS. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 48 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 98 Sistema de archivos de Windows 98 IV Para convertir un nombre largo en un nombre corto se tomaban los primero seis caracteres válidos del nombre largo y se anexaba el sufijo ∼ N donde N es un número consecutivo. Si el archivo tenı́a un nombre largo y deseaba almacenarse en MS-DOS entonces se agregaban bloques de entrada que contenı́an el resto del nombre del archivo. Cada bloque adicional al de la entrada principal permitı́a agregar 13 caracteres Unicode del modo siguiente: Secuencia (1 byte). 5 caracteres (10 bytes). Atributos (1 byte). Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 49 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 98 Sistema de archivos de Windows 98 V 0 (1 byte). Suma de comprobación (1 byte). 6 caracteres (12 bytes). 0 (2 bytes). 2 caracteres (4 bytes) . Para que Windows 98 distinguiera entre bloques de entrada y bloques correspondientes a nombres de archivo largos, se utilizaba el valor 0 en los atributos. 0 es un valor inválido para los atributos, por lo que los programas de MS-DOS viejos ignoran tales bloques. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 50 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 98 Sistema de archivos de Windows 98 VI Para llevar la cuenta de bloques que componen el nombre largo se utiliza el primer byte de la entrada (Secuencia). Puesto que el primer campo de Secuencia es de un byte podrı́a pensarse en utilizar nombres tan largos como 28 ∗ 13 caracteres Unicode. Sin embargo sólo se utilizan 6 bits de ese byte y de hecho sólo se permiten nombres de hasta 260 caracteres Unicode. Los nombres largos se almacenan del siguiente modo: Se crea el nombre de archivo MS-DOS y corresponderá a la última entrada de directorio del archivo. Al nombre MS-DOS lo precede la primera parte del nombre largo, que a su vez es precedida por el resto del nombre. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 51 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 98 Sistema de archivos de Windows 98 VII Al principio de todas las entradas se encontrará la ultima parte del archivo. La suma de comprobación se utiliza para que Windows 98 se de cuenta de que el nombre MS-DOS que sigue a un nombre largo en verdad corresponde a dicha entrada. FAT-32 tiene la ventaja (sobre FAT-16) de que sólo crea tantas entradas de archivo como necesite. Además no mantiene todas las entradas siempre en memoria, sino sólo una parte de ellas. ¿Cómo se almacenarı́a el nombre largo “Este es un nombre largo”? Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 52 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 I Windows 2000 reconoce los sistemas de archivos FAT-16, FAT-32 y NTFS. NTFS fue creado especı́ficamente para Windows NT e incorporado en Windows 2000. NTFS utiliza direcciones de disco de 64 bits y puede manejar particiones de hasta 264 bytes (en teorı́a). Las caracterı́sticas principales de NTFS son: Los nombres de archivo están limitados a 255 caracteres y se permite Unicode. Las rutas completas de un archivo están limitadas a 32767 caracteres. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 53 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 II Distingue entre mayúsculas y minúsculas (la API Win32 es la que no reconoce tal diferencia). Un archivo consiste de múltiples atributos representados mediante un flujo de bytes. Todos los archivos contienen algunos flujos cortos y algunos largos. Ejemplos de flujos cortos son el nombre del archivo y su identificador de objeto (de 64 bits). Ejemplos de flujos largos son todos los que contienen los datos del archivo. La longitud máxima de un flujo es 264 bytes. La apertura de archivos devuelve un identificador (que se utiliza para leer y escribir el archivo). Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 54 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 III La idea del uso de flujos se tomó de Apple Macintosh donde los archivos tienen dos flujos: la rama de datos y la rama de recursos. Los flujos de archivo permiten que un archivo pueda utilizarse con mayor eficiencia. Un ejemplo del uso de flujos de archivo es en la edición de texto donde se utilizan dos flujos: uno se utiliza para la versión temporal del archivo (que se esta editando) y el otro para la versión final. Las llamadas a funciones de la API Win32 para manipular archivos y directorios son similares a las equivalentes en Unix. A continuación se presentan las principales funciones API Win32: Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 55 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 IV Principales funciones de la API Win32 para E/S de archivos CreateFile. Devuelve un identificador que permite crear o abrir un archivo. DeleteFile. Destruye un archivo. CloseHandle. Cierra un archivo. ReadFile. Lee los datos de un archivo. WriteFile. Escribe datos en un archivo. SetFilePointer. Coloca el apuntador de archivo en una posición especı́fica. GetFileAttributes. Devuelve las propiedades de archivo. LockFile. Bloquea una región del archivo para exclusión mutua. UnlockFile. Desbloquea una región del archivo. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 56 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 V /*Ejemplo de uso de algunas funciones de la API de Windows*/ void copiarArchivo(){ HANDLE original, copia; DWORD cont; int s; char buffer[TAM BUFFER+1]; original = CreateFile(“APIWindows.c”, GENERIC READ, 0, NULL, OPEN EXISTING, 0, NULL); copia = CreateFile(“APIWindows(copia).c”, GENERIC WRITE, 0, NULL, CREATE ALWAYS, FILE ATTRIBUTE NORMAL, NULL); Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 57 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 VI do{ s = ReadFile(original, buffer, TAM BUFFER, &cont, NULL); printf(“s = %d %d\n”, s, cont); if(s && cont > 0) WriteFile(copia, buffer, cont, &cont, NULL); }while(s > 0 && cont > 0); CloseHandle(original); CloseHandle(copia); return; } Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 58 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 VII Principales funciones de la API Win32 para administrar directorios CreateDirectory. Crea un nuevo directorio. RemoveDirectory. Elimina un directorio siempre y cuando este vacı́o. FindFirstFile. Coloca el apuntador para comenzar a leer las entradas de un directorio. FindNextFile. Lee la siguiente entrada de directorio. MoveFile. Permite cambiar un archivo de directorio. SetCurrentDirectory. Cambia el directorio de trabajo actual. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 59 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 VIII NTFS es un sistema de archivos jerárquico y mantiene los conceptos de directorio de trabajo actual, de ruta absoluta y de ruta relativa. Cada volumen NTFS se conforma de archivos, directorios, mapas de bits y otras estructuras de datos. Cada volumen se organiza como una sucesión lineal de bloques que puede variar entre los 512 bytes y 64 KB. La principal estructura de datos de cada volumen es la tabla maestra de archivos (MFT: Master File Table). La MFT es una sucesión lineal de registros de tamaño fijo (1 KB) y se compone de 13 elementos: Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 60 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 IX 1 Información estándar: contiene los bits indicadores, las marcas de hora, entre otros. 2 Nombre de archivo: en formato Unicode y de ser necesario se duplica para la compatibilidad con MS-DOS. 3 Descriptor de seguridad: ya no se utiliza este campo. 4 Lista de atributos: ubicación de registros MFT adicionales. 5 Identificador de objeto: identificador de archivo de 64 bits único en este volumen. 6 Punto de re-análisis: permite montajes y enlaces simbólicos. 7 Nombre de volumen: nombre del volumen al que pertenece. 8 Información de volumen: versión del volumen al que pertenece. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 61 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 X 9 Raı́z ı́ndice: para directorios. 10 Asignación de ı́ndice: para directorios grandes. 11 Mapa de bits: para directorios grandes. 12 Flujo unitario de registro: permite llevar el control de las entradas. 13 Datos: datos de flujo. Los primeros 16 registros MFT están reservados para archivos de metadatos de NTFS. Cada registro describe un archivo como cualquier otro. El nombre de estos archivos comienza con $ para denotar que son archivos de metadatos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 62 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 XI A continuación se describen los 16 registros reservados de la MFT. 1 $Mft: tabla maestra de archivos. Indica donde están situados los bloques del archivo MFT para que el sistema pueda encontrar el archivo. 2 $MftMirr: es una copia de respaldo del archivo $Mft. 3 $LogFile: es el archivo de registro de recuperación. Permite respaldar la información antes de que se realice un cambio estructural en el sistema de archivos (como borrar o crear directorios). 4 $Volume: contiene información acerca del volumen. 5 $AttrDef: contiene la definición de los atributos. 6 $: es el directorio raı́z. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 63 / 79 Ejemplos de sistemas de archivos Sistema de archivos de Windows 2000 Sistema de archivos de Windows 2000 XII 7 $Bitmap: permite llevar el control del espacio utilizado mediante un mapa de bits. 8 $Boot: es el archivo cargador de auto-arranque. 9 $BadClus: indica cuáles son los bloques defectuosos. 10 $Secure: contiene los descriptores de seguridad para todos los archivos. 11 $Upcase: es la tabla de conversión de mayúsculas a minúsculas. 12 $Extend: es un directorio que contiene archivos para fines diversos. Los últimos cuatro bloques de la MFT están reservados para uso futuro. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 64 / 79 Ejemplos de sistemas de archivos Breve historia de Unix Breve historia de Unix I La primera aproximación a Unix fue el sistema MULTICS (MULTiplexed Information and Computing Service), creado por parcialmente por el MIT, GE y los Bell Labs en los 70’s. Luego Ken Thompson de los Bell Labs decidió escribir por su cuenta una versión sencilla de MULTICS en una PDP-7. Brian Kernighan (en ese entonces también de los Bell Labs) decidió llamar a la versión de Thompson UNICS (UNiplexed Information and Computing Service) que después cambiarı́a su nombre a UNIX. Denis Ritchie comenzó a colaborar con ellos en la creación de un nuevo UNIX para las PDP-11/20, PDP-11/45 y PDP-11/75. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 65 / 79 Ejemplos de sistemas de archivos Breve historia de Unix Breve historia de Unix II Para no estar re-escribiendo el SO para cada nuevo tipo de máquina, Thompson decidió re-escribir Unix en un lenguaje de alto nivel: B . Después Ritchie diseñarı́a el sucesor de B, el lenguaje C, junto con un excelente compilador. Luego Thompson y Ritchie re-escribirı́an Unix en lenguaje C. En 1974 Thompson y Ritchie escribireron un excelente artı́culo acerca de Unix y en 1984 recibirı́an el premio Turing gracias a eso. A partir de ese momento se comenzaron a organizar numerosas reuniones cientı́ficas entorno a Unix. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 66 / 79 Ejemplos de sistemas de archivos Breve historia de Unix Breve historia de Unix III Con el libro de la versión 6 de Unix venı́a el código fuente: 8,200 lı́neas en C y 900 en ensamblador. La versión 7 fue la primer versión portátil de Unix, diseñada para la PDP-11. La versión 7 tenı́a varias mejoras y su código fuente consistı́s de: 18,800 lı́neas en C y 2,100 en ensamblador. A mediados de los 80 Unix se usaba ampliamente en mini-computadoras y estaciones de trabajo. Incluso Microsoft adquirió la licencia de la versión 7 y la re-escribió vendiéndola como XENIX. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 67 / 79 Ejemplos de sistemas de archivos Breve historia de Unix Breve historia de Unix IV Después, la universidad de Berkeley adquirió la versión 6 y escribió una mejora considerable del sistema llamada Berkeley Unix. Para estandarizar las diferentes versiones de Unix que se iban desarrollando se decidió hacer el estándar POSIX (Portable Operating System unIX). En 1987, Tanenbaum escribió MINIX basado en un diseño de microkernel. MINIX pretendı́a proporcionar un mı́nimo de funcionalidad en el Kernel. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 68 / 79 Ejemplos de sistemas de archivos Breve historia de Unix Breve historia de Unix V Los microkernel suelen ser más sencillos de entender que las versiones monolı́ticas de los sistemas. Luego en 1991, el estudiante Finlandés, Linus Torvalds, escribió Linux 0.01 en base a Unix. El código de Linux 0.01 eran: 9,300 lı́neas en C y 950 en ensamblador. En 1994, salió Linux 1.0, con 195,000 lı́neas de código en C y menos de 8,000 en ensamblador. En 1996, salió Linux 120, con 487,000 lı́neas de código en C y 8,000 en ensamblador. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 69 / 79 Ejemplos de sistemas de archivos Breve historia de Unix Breve historia de Unix VI Linux maneja un modelo de negocio de software libre. La licencia de Linux fue desarrollada por Richard Stallman, fundador de Free Software Foundation. Aunque Linux es gratuito, GPL (Licencia Pública de GNU) especifica lo que el usuario puede y no puede hacer al código. Los usuarios pueden usar, copiar, modificar y redistribuirlo. La principal restricción es que Linux no puede venderse o redistribuirse sin incluir el código. Para mas información visite www.linux.org. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 70 / 79 Ejemplos de sistemas de archivos Sistema de archivos de UNIX V7 Sistema de archivos de UNIX V7 I El sistema de archivos V7 fue empleado en la PDP-11. El sistema de archivos tiene la estructura de un árbol que comienza en el directorio raı́z. Este sistema permite agregar enlaces formando una gráfica acı́clica dirigida. Los nombres de archivo pueden medir hasta 14 caracteres ASCII con excepción de / y ’\0’. Una entrada de directorio Unix contiene una entrada para cada archivo de ese directorio. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 71 / 79 Ejemplos de sistemas de archivos Sistema de archivos de UNIX V7 Sistema de archivos de UNIX V7 II Cada entrada de directorio contiene sólo 16 bytes (2 para el número del nodo-ı́ndice y 14 para el nombre). El tamaño del nodo-ı́ndice limita el número de archivos a 64 KB. Los nodos-ı́ndice contienen la información de algunos atributos como: El tamaño del archivo. La hora de creación. La hora del último acceso. La hora de la última modificación. El dueño. El grupo. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 72 / 79 Ejemplos de sistemas de archivos Sistema de archivos de UNIX V7 Sistema de archivos de UNIX V7 III La información de protección. La cuenta del número de entradas del directorio. Los nodos-ı́ndice cuentan con espacio para indicar hasta 10 direcciones de disco donde se encuentra el archivo. Si los archivos requieren más de 10 direcciones entonces se utiliza una de las direcciones para indicar la dirección de un bloque llamado bloque indirecto. Si dicho bloque no es suficiente entonces se utiliza una dirección que permite referenciar a un segundo bloque llamado bloque indirecto doble e incluso hasta un tercer bloque llamado bloque indirecto triple. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 73 / 79 Ejemplos de sistemas de archivos Sistema de archivos de UNIX V7 Sistema de archivos de UNIX V7 IV Figura : Estructura del nodo-ı́ndice de Unix. Tomado de http://es.wikipedia.org/wiki/Inodo . Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 74 / 79 Ejemplos de sistemas de archivos Sistema de archivos de UNIX V7 Sistema de archivos de UNIX V7 V Cuando se abre un archivo el sistema de archivos debe tomar el nombre y localizar los bloques de disco. El algoritmo de localización de nombres de archivo es el siguiente: 1 El sistema de archivos localiza el directorio raı́z. Este es fácil de localizar pues el nodo-ı́ndice de este se encuentra en un lugar fijo. 2 Se comienzan a buscar cada uno de los componentes de la ruta. La localización de los nodos-ı́ndice en el disco es fácil pues todos tienen una posición fija en el disco y siempre se conoce su número. 3 Cuando se llega al archivo deseado se lee el nodo-ı́ndice de éste y se coloca en la memoria. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 75 / 79 Ejemplos de sistemas de archivos Sistema de archivos de UNIX V7 Sistema de archivos de UNIX V7 VI Gracias a que los directorios contienen entradas para los archivos . y .. es fácil obtener los números de nodo-ı́ndice. La entrada . tiene el número de nodo-ı́ndice del directorio actual y .. la del directorio padre. No se requiere manejo especial para los nombres . y .. pues para el sistema son simplemente nombres ordinarios de archivos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 76 / 79 Ejemplos de sistemas de archivos Sistema de archivos de UNIX Sistema de archivos de UNIX I En Unix no se hace distinción entre tipos de archivo (ASCII, binarios, etc.). El tamaño de archivo fue incrementado a 255 caracteres a partir del sistema Berkeley Unix. En este caso, las extensiones de los archivos pueden tener cualquier longitud e incluso puede haber varias extensiones para un mismo archivo. El directorio raı́z también se llama “/”. Los principales directorios del sistema son: bin. Contiene los programas binarios. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 77 / 79 Ejemplos de sistemas de archivos Sistema de archivos de UNIX Sistema de archivos de UNIX II dev. Contiene los archivos especiales para los dispositivos de E/S. etc. Contiene los archivos de sistema diversos. lib. Contiene las bibliotecas. usr. Contiene los directorios de usuarios. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 78 / 79 Ejemplos de sistemas de archivos Sistema de archivos de UNIX Sistema de archivos de UNIX III Principales llamadas al sistema en Unix para E/S create(name, mode): permite crear un archivo nuevo open(file, how, . . . ): abre un archivo para lectura/escritura. close(ref name): cierra un archivo abierto. read(ref name, buffer, nbytes): lee datos de un archivo. write(ref name, buffer, nbytes): escribe datos en un archivo. lseek(ref name, offset, whence): posiciona en otro lugar el apuntador de archivo. stat(name, &buf): obtiene la información de los atributos. pipe(&ref name[0]): crea una canalización. fcntl(ref name, cmd, . . . ): para bloqueos. Sergio Luis Pérez (UAM C UAJIMALPA) Curso de Sistemas Operativos 79 / 79