Bueno, pues bienvenidos a todos a esta nueva videoclase de la asignatura Ampliación de Sistemas Operativos. En ella vamos a empezar a ver el tema 5 del libro y este tema lleva por título Soft Unix, sistemas operativos basados en Unix, como venimos diciendo a lo largo de toda la asignatura y en concreto estudiaremos la gestión de archivos y la gestión de la entrada-salida. Bueno, pues este tema se va a dividir en 5 partes, son las que veis aquí, ¿de acuerdo? Entonces estas 5 partes van a describir, como decíamos, la gestión de archivos y la gestión de entrada y salida por parte de los sistemas operativos basados en Unix. En la primera parte vamos a ver las características de los archivos, las características de los directorios, de los enlaces y también de los sistemas de archivo. Por otro lado veremos también las llamadas al sistema para gestionar todos estos elementos que acabo de mencionar. En la segunda de las partes describiremos la capa Nodo Virtual, Sistema de Archivos Virtual, que es utilizada para soportar diferentes tipos de sistemas de archivo. En la tercera explicaremos cómo se analizan los nombres de rutas en estos sistemas operativos. En la cuarta describiremos el Sistema de Archivos UFS. Y por último, en la última parte, describiremos la gestión que se lleva a cabo en los sistemas operativos en cuanto a la entrada y salida. Bueno, en cuanto a la primera parte, la gestión de archivos, características principales y llamadas al sistema, tenemos los archivos en primer lugar, ¿no? Era uno de los elementos que vamos a analizar en primer lugar. Entonces, en los sistemas operativos basados en Unix, en la información que está contenida en un archivo, se estructura como una secuencia lineal de bytes, ¿vale? El núcleo, digamos, que no interpreta esa información, sino que se limita a leer o escribir a nivel de bytes, ¿vale? Los procesos serían los que se encargan de interpretar la información que está contenida en los archivos y el acceso a ese contenido se realizaría por defecto siempre de forma secuencial, ¿vale? Nunca de forma aleatoria, siempre de forma secuencial. Bueno, también en algunos casos sí, ¿vale? Nunca, no se puede decir siempre y aquí en este caso, pues a veces sí que se puede realizar un acceso directo o aleatorio a una determinada doble de un archivo, pero no siempre, ¿vale? Lo común, a no ser que digamos lo contrario, es que sea de forma secuencial. El nombre de un archivo, tenéis que saber que es una cadena de caracteres, ¿vale? Se pueden usar todos los caracteres, excepto los caracteres barra y barra invertida 0. Estos dos no se podrían utilizar a la hora de nombrar un archivo. ¿La longitud máxima? Pues depende del tipo de sistema de archivos al que pertenezca el archivo, ¿vale? Bueno, pues en cuanto a los tipos de archivos que nos vamos a encontrar, tenemos aquí una serie de tipos. Que vienen descritos en el libro, ¿no? Los archivos regulares, que son los que conocemos como archivos ordinarios, serían los archivos binarios y los archivos ástiles, ¿vale? El archivo binario es el que contiene información de un determinado tipo. Código compilado, texto formateado, imágenes, vídeo, etc. Y que tiene una estructura determinada que únicamente puede ser interpretada por los programas que los utilizan. Un archivo ástil, sin embargo, está compuesto... ...de líneas de caracteres ástiles, que están codificadas en binario, pero que no requieren un programa que los interprete, ¿vale? Otro tipo de archivos serían los directorios. Aunque no lo parezca, un directorio es un tipo de archivo también. En este caso, sus bloques de datos almacenan una lista con los archivos y sus directorios alojados en el directorio, ¿vale? Cada una de estas entradas de la lista... ...contiene el nombre de un archivo, por lo que también denominamos subdirectorio, alojado en el directorio, el número del nodo y asociado a dicho archivo o subdirectorio. Otro tipo, pues los archivos especiales. Son archivos que representan a dispositivos. Existen dos tipos, archivos de dispositivos modo carácter y archivos de dispositivos modo bloque. Los primeros se utilizan para modelar dispositivos de entrada-salida, de tipo serie... ...pueden ser el teclado, el ratón, la impresora o el móvil. Y los segundos se utilizan para modelar la entrada-salida en bruto a particiones de discos duros. ¿Vale? Otro tipo serían las tuberías. Una tubería es un canal de comunicación bidireccional... ...por el que se pueden transmitir flujos de datos no estructurados con un tamaño máximo fijo. Solamente habría una dirección en una tubería. Otro tipo de archivo, pues sería el conector, también denominado socket, ¿vale? Los conectores son uno de los principales mecanismos utilizados en estos sistemas operativos basados en UNIX... ...para implementar las conexiones de red. ¿Vale? Por último, vamos a ver los enlaces simbólicos. Otro tipo de archivo que contiene el nombre de ruta absoluta o relativa de otro archivo. Eso es lo que denominamos enlace simbólico. En cuanto a los atributos de un archivo, hay que saber que el núcleo tiene que mantener esta información, ¿no? No solamente tiene que saber el nombre de un archivo, sino que también va a atribuirle una serie de atributos al mismo. Entonces, los atributos se almacenan en el nodo I asociado a un archivo. Entre los atributos que manejamos o que maneja un sistema operativo basado en UNIX... ...pues tendríamos el notificador... ...del dispositivo donde reside el archivo... ...el número del nodo I asociado al archivo... ...la máscara de modo... ...el número de enlaces duros... ...el UID, ¿vale? Identificador de usuario... ...el GID, identificador de grupo... ...número de dispositivo mayor y número de dispositivo menor... ...¿vale? El tamaño en bytes de ese archivo... ...la fecha del último acceso al archivo... ...la fecha de lectura... ...la fecha de la última modificación del archivo... ...que sería la de escritura... ...y, por último, la fecha de la última modificación de los atributos del archivo. Esta última fecha os pone en el libro que no tiene en cuenta las modificaciones en las fechas del último acceso o modificación del archivo. Los atributos de un archivo se pueden obtener mediante la llamada al sistema que veis aquí... ...estat... ...y también mediante el comando ls-lim... ...se pueden visualizar varios atributos de un archivo. Entonces, tendremos por un lado esta llamada al sistema... ...recordadla bien, stat... ...y por otro lado este comando... ...ls-lim, ¿vale? Entonces, con respecto a ese comando... ...pues vemos aquí un ejemplo, ¿no? Vamos a suponer que en el directorio de trabajo actual... ...existe un archivo que se denomina texto1.txt Si ejecutamos esta orden, la que acabamos de describir... ...ls-lin y el nombre de ese archivo... ...entonces en la pantalla veremos una línea con los atributos de texto1.txt... ...como la que vemos aquí, ¿vale? En este caso, pues hay una serie de atributos... ...asociados a este archivo, ¿no? Tenemos aquí los permisos de lectura, escritura, ejecución, etc. Esto ya lo hemos visto en temas anteriores... ...tenemos las diferentes fechas, ¿vale? Tenemos el nombre... ...y en fin... ...tenéis aquí la descripción de cada uno de esos campos, ¿no? 1024 es el número del nodo i... ...asociado al archivo... ...esto de aquí sería la máscara de modo... ...que lo hemos visto en temas anteriores, como decía antes... ...1 es el número de enlaces duros... ...101 es el UID... ...10 es el CID... ...y 47 es el tamaño del archivo... ...en bytes, ¿no? Luego pues esta es la fecha de la última modificación... ...¿vale? Pues entonces así habéis visto un poco el sentido de utilizar este... ...este command, ¿vale? Bueno, para que un proceso pueda poder operar... ...con un determinado archivo... ...este primero tiene que tener abierto... ...o tiene que ser abierto mediante la invocación... ...de la llamada al sistema open... ...¿vale? Tiene que permanecer abierto gracias a esta llamada al sistema. La rutina del núcleo del sistema operativo... ...que trae esta llamada al sistema... ...crea en el número principal... ...una estructura de datos que se denomina objeto de archivo abierto... ...y asigna a dicha estructura un número entero positivo pequeño... ...que se denomina descriptor de archivo, ¿vale? Esto es lo más importante en cuanto a los descriptores de archivo. Bueno, la llamada al sistema open... ...esa que acabamos de mencionar... ...devolvería en ese caso el descriptor del archivo abierto... ...al proceso que invocó la llamada, ¿vale? Y todos los descriptores de archivos asociados a un proceso... ...se indexarían en una tabla que se denomina... ...tabla de descriptores de archivo. También tenerlo muy en cuenta. ¿Cosa es importante en esta tabla? Pues que es local a cada proceso, ¿no? Cada proceso tiene su propia tabla de descriptores de archivos... ...y saber también que un mismo descriptor de archivo... ...puede referirse en dos procesos distintos a archivos diferentes. También una característica muy importante. En cuanto a las entradas... ...de la tabla de descriptores de archivos... ...he de decir que cada una de ellas contiene un puntero... ...a la estructura de objeto de archivo abierto... ...a la que está asociado el descriptor, ¿vale? Y también una serie de indicadores que especificarían... ...el tratamiento que debe dar al descriptor... ...ante la aparición de determinados eventos. Para construir las tres primeras entradas... ...es decir, de la 0 a la 2... ...digamos que están asociadas esas entradas... ...a los siguientes archivos. Al archivo estándar de entrada, que es el descriptor 0... ...al archivo estándar de salida, sería el descriptor 1... ...y al archivo estándar de salida de errores... ...que sería el descriptor 1, ¿vale? Decir que por defecto... ...el archivo estándar de entrada está asociado al teclado... ...y el de salida estaría asociado a la pantalla, ¿vale? Bueno, también decir que un objeto de archivo abierto... ...contiene la información necesaria para poder operar sobre un archivo. Vemos aquí diferentes informaciones que contiene. El puntero de lectura-escritura indica el byte del archivo... ...donde se realizará la próxima operación de lectura o de escritura. Se especifica, en este caso, como un desplazamiento desde el origen del archivo. El contador de referencias... ...especifica el número de escritores de archivos... ...que hacen referencia al objeto de archivo abierto. El modo de apertura del archivo establece las operaciones... ...que se pueden realizar sobre el archivo abierto. Por ejemplo, solo lectura, solo escritura, lectura y escritura... ...etc. El modo de apertura... ...se especifica como un argumento de la llamada del sistema Open. La llamada del sistema Open tendrá una serie de parámetros... ...que se introducen y uno de ellos es el modo de apertura. Este modo de apertura se puede introducir... ...ya sea en forma de número octal... ...o también en forma de una constante simbólica. Cada vez que se va a realizar una operación sobre el archivo abierto... ...el núcleo comprobaría el modo de apertura del archivo... ...para permitir o denegar la realización de la operación. El punto del nodo virtual del archivo es un modo virtual... ...o nodo V, como lo veréis en el libro a partir de aquí. Es una estructura de datos que el núcleo crea en memoria principal... ...para cada archivo activo. Luego os recomiendo... ...que veáis el ejemplo 5.2 que tenéis aquí en la página 191 del libro... ...que es un ejemplo de Solaris acerca de toda esta parte teórica... ...que hemos visto hasta aquí. Le podéis echar un vistazo por vuestra cuenta a ese ejemplo 5.2... ...para que veáis cómo se trabaja en Solaris. En cuanto a las llamadas al sistema... ...vamos a ver que un proceso para operar sobre un archivo... ...tiene que invocar a la llamada al sistema que corresponda. Los sistemas operativos A2A y UNIX proporcionan a los procesos... ...de los usuarios diferentes llamadas al sistema... ...para que puedan operar sobre los diferentes archivos. El libro os pone a continuación algunas de ellas... ...de las más importantes o de las más utilizadas. La primera de ellas es la CREAD... ...y introduce estos dos argumentos en la llamada. Esta llamada al sistema permite crear y abrir un archivo... ...con el nombre de ruta especificado en ruta... ...en ese argumento, con la máscara de modo octal... ...especificada en el argumento modo. Si la llamada al sistema se ejecuta con éxito... ...entonces en FD se guarda el escritor del archivo. En esta variable de aquí, se guardaría el escritor del archivo. En caso de error, en FD se guarda el valor "-u". Si el archivo que se desea crear ya existe... ...con anterioridad a invocar la llamada CREAD... ...pues entonces se borra su contenido... ...y su longitud se truncaría a 0 bytes. Otra llamada al sistema es la que hemos mencionado ya anteriormente... ...es la llamada al sistema OPEN. También tiene los argumentos que deberemos introducir. Esta llamada lo que hace es permitir que se abra el archivo... ...localizado en el argumento ruta... ...con el modo de apertura especificado en modo A. En este otro argumento. El modo de apertura en este caso... ...se especifica en la forma de un número octal... ...similar en estructura a la máscara de modo de un archivo... ...o en la forma de alguna de las constantes simbólicas... ...definidas en el archivo de cabecera que veis aquí... ...el fcncl.h. Algunas de esas constantes pueden ser las que veis aquí... ...ordonly o wronly... ...que indican que el archivo se debe abrir con permisos... ...de sólo lectura en el primer caso, la primera constante... ...o de sólo escritura en la segunda constante. También por ejemplo tenemos esta constante... ...que indicaría que el archivo se debe abrir con permisos... ...de lectura y también de escritura. En este caso si la llamada al sistema se ejecuta con éxito... ...entonces en FD guardaríamos el descriptor del archivo. Y en caso contrario, que se produjese algún error... ...pues en FD se guardaría el valor menú. Todo esto es referente a la llamada al sistema open. Otra llamada al sistema, pues close. Esta llamada al sistema cierra el archivo con descriptor de archivo FD... ...que es lo que introducimos como argumento... ...y en este caso si la llamada se ejecuta con éxito... ...en R almacenaremos el valor cero. Y en caso de error, en R se guarda el valor menos uno. Otra llamada al sistema es la llamada read. Aquí en este caso tenemos tres argumentos que hay que introducir... ...y esta llamada permite leer n bytes del archivo con descriptor FD... ...y escribirlos en memoria a partir de la posición apuntada... ...por bytes, que es otro argumento. La operación de lectura comienza desde la posición indicada... ...en el puntero de lectura-escritura, almacenando el objeto de archivo abierto... ...al que apunta el descriptor de archivo FD... ...y por último decir que si la llamada se ejecuta con éxito... ...entonces en R guardaríamos el número de bytes que se han podido leer. ¿Vale? Veis por tanto que R puede ser menor o igual a n. Y en caso de error, en R se guardaría el valor menos uno... ...que es lo que suele ser habitual. Otra llamada al sistema es la llamada write. Write permite leer n bytes desde la posición de memoria apuntada por buffer... ...que es uno de sus argumentos, y escribirlos en el archivo descriptor FD. La operación de escritura comienza desde la posición indicada... ...en el puntero de lectura-escritura, almacenando el objeto de archivo abierto... ...al que apunta el descriptor de archivo FD, que es otro de los argumentos. Y por último, pues como siempre, si la llamada se ejecuta con éxito... ...entonces en R guardaríamos el número de bytes que en este caso... ...nos han podido escribir. También veis que R, igual que antes, puede ser menor o igual que n. Y en caso de error, pues en R guardaríamos el valor menos uno. Otra llamada al sistema muy importante es la lsig. Lsig contiene tres argumentos y permite desplazar offset... ...uno de los argumentos, offset bytes, desde el origen... ...que también se introduce como uno de sus argumentos... ...el puntero de lectura-escritura del archivo con descriptor FD, otro de sus argumentos. El argumento origen puede tomar los siguientes valores... ...cero o sigset, esta constante, que indicaría que el desplazamiento... ...se realizará desde el inicio del archivo... ...uno o sigcur, que indicará que el desplazamiento se realizará... ...desde la posición actual del puntero... ...y dos o sigem, que indicaría que el desplazamiento se realizará... ...desde el final del archivo. Por otra parte, el argumento offset puede ser un número entero positivo... ...o negativo. En el caso de que sea positivo, el puntero avanzará. Si estamos aquí, pues avanzará. Y en el caso de que sea negativo, el puntero retrocederá. Si la llamada al sistema se ejecuta con éxito... ...entonces en R se guarda la nueva posición... ...medida en bytes, que toma el puntero de lectura-escritura... ...con respecto al inicio del archivo. En caso de error, pues en R se guardaría el valor menos uno. Esto es lo que viene siendo habitual. Otra llamada al sistema sería la llamada start... ...que veis aquí. En esta llamada introducimos dos argumentos. Lo que hace es copiar en la estructura buffer de tipo predefinido start... ...los atributos del archivo localizado en el argumento ruta. Y si la llamada se ejecuta con éxito, entonces en R guardaríamos el valor cero... ...mientras que en caso contrario se guardaría el valor menos uno. Otra llamada al sistema sería la fstart. También contiene dos argumentos... ...y esta llamada presenta la misma puntualidad que la llamada start. Se diferencia el que recibe como argumento de entrada... ...el descriptor del archivo FD... ...y el lugar del nombre de ruta, como pasaba en la llamada start. Si retrocedemos a start, que es la anterior, aquí metíamos la ruta... ...como uno de los argumentos. Sin embargo, aquí es el único cambio que percibimos. Introducimos como argumento el descriptor del archivo FD. Por último, la última llamada al sistema... ...que vamos a ver es la fcntl. Aquí esta tiene tres argumentos y permite realizar diferentes operaciones... ...de control sobre un archivo abierto con descriptor FD. Las operaciones disponibles se encuentran definidas en el archivo de cabecera... ...que también vimos antes, el fcntl.h. En estas operaciones, una de las más útiles es la posibilidad... ...de desbloquear o desbloquear el acceso a otros procesos... ...aparte o a la totalidad del contenido de un archivo. De esta forma, un proceso puede garantizarse el acceso con exclusión mutua... ...a un archivo usado por múltiples procesos concurrentes... ...sin la necesidad de utilizar mecanismos IPT. Esta operación también se puede realizar utilizando la función de librería logf. Para que lo tengáis en cuenta. Los argumentos necesarios para cada una de estas operaciones... ...los tenéis que introducir en R. Si la llamada se ejecuta con éxito, en R almacenaremos un valor... ...que depende de cada operación que se utilice. En caso de error, como siempre, almacenamos el valor . Hasta aquí todas las llamadas al sistema que aparecen en este apartado. Ahora vamos a ver con un ejemplo algunas de ellas. Suponemos, en este ejemplo, que en el directorio de trabajo actual... ...no existe ningún archivo. Si un proceso A invoca en un instante a la llamada del sistema crear... ...de la forma que veis aquí... ...entonces se creará y se abrirá el archivo datos... ...porque es como lo hemos llamado... ...con la máscara de modo octal que le hemos introducido. En este caso, le hemos puesto la máscara de modo octal 0666. Todos los usuarios pueden leer y escribir en el archivo. El descriptor del archivo, en este caso, se almacenará en R. ¿Vale? Si a continuación el proceso A invoca la llamada al sistema write... ...con el formato que veis aquí y con sus argumentos... ...entonces lo que va a pasar es que se van a leer los 50 primeros bytes... ...desde la posición de memoria apuntada por origen... ...y se escribirán en el archivo con descriptor R. ¿Vale? Entonces, fijaos la importancia del valor de sus argumentos... ...que se introducen en las llamadas al sistema. Supuesto o suponiendo que el proceso A ha terminado de usar el archivo... ...entonces debería invocar una llamada al sistema close... ...¿no? para cerrar ese archivo. ¿Vale? Le llamamos a close R y se cerraría. ¿Vale? Bueno, si posteriormente hace todo esto... ...otro proceso B invocará la llamada al sistema open... ...datos y esta constante que veis aquí... ...entonces el archivo datos se abrirá con permiso de solo lectura... ...y el descriptor del archivo se almacenará en esta otra variable. ¿Vale? La constante R de only se podría haber sustituido por este número tal... ...que es lo mismo. ¿Vale? Pero bueno, así veis también qué uso tiene... ...o qué funcionalidad tiene el uso de las constantes. ¿Vale? Pueden sustituir a los números hostales. Si el proceso B invoca ahora la llamada al sistema lsig... ...que también la hemos descrito en la teoría... ...entonces el puntero de lectura-escritura se desplazará 25 bytes... ...comenzando desde el origen del archivo y suponiendo que los bytes... ...comienzan a numerarse desde el 0... ...el puntero pasaría a apuntar al byte número 25 del archivo. ¿Vale? Si después el proceso B invoca la llamada al sistema read fdestino10... ...pues se leerían 10 bytes en el archivo con descriptor f... ...comenzando desde el byte número 25 y se escribirían en memoria... ...a partir de la posición de memoria apuntada por el argumento destino. ¿Vale? Cuando el proceso B termina de utilizar el archivo... ...entonces invocaría también a la llamada al sistema closef para cerrarlo. ¿Vale? Ese sería pues un poco el funcionamiento que tendría en la práctica... ...el uso de la teoría que acabamos de ver. ¿Vale? Bueno, y entonces ahora en el siguiente apartado... ...lo que vamos a ver son los directorios. Hemos visto los archivos... ...entonces ahora vamos a pasar a ver los directorios. El núcleo, las aplicaciones y los usuarios organizan los archivos en directorios. ¿No? Entonces en los sistemas operativos basados en UNIX... ...un directorio no es más que un archivo en cuyos bloques de datos... ...se almacena una lista con los archivos y directorios contenidos en el directorio. En los sistemas de archivos desarrollados para soft UNIX... ...una entrada o una lista de un directorio contiene... ...el número del nodo I asociado a un archivo... ...y también su nombre. ¿Vale? Además, sabéis que existen dos entradas especiales... ...un punto que se refiere al propio directorio... ...y dos puntos que se refieren al directorio padre. ¿Vale? Al padre de ese directorio actual. Los sistemas operativos basados en UNIX implementan una estructura... ...de directorios de gráfica acíclica. Esto quiere decir que el directorio raíz es el directorio... ...que se nombra con esta barra. Y este carácter también se utiliza para separar cada componente... ...del nombre de ruta absoluta o relativa de un archivo. ¿Vale? Sirve para mencionar o denominar al directorio raíz... ...y también para separar cada componente dentro de una ruta... ...ya sea absoluta o relativa. En los sistemas operativos basados en UNIX existen varias llamadas... ...al sistema que permiten operar a nivel de directorio. ¿Vale? Por ejemplo, algunas de ellas son las que os vienen aquí. Ahora vamos a ver algunas llamadas al sistema para operar con directorio. La primera que vamos a ver es la CHDI que cambia el directorio de trabajo. El nuevo directorio de trabajo sería el que se especifica en el argumento ruta. ¿Vale? Si la llamada al sistema se ejecuta con éxito, en R se almacena el valor 0. En caso de error, se almacenaría el valor menos 1. El comando CD, que todos conocéis, me imagino... ...se utiliza para cambiar de directorio y también invoca internamente... ...a esta llamada al sistema. ¿Vale? Que sepáis que lo que hace este comando CD es invocar a la llamada al sistema CHDI. Aunque no lo veáis vosotros a la hora de utilizarla. Otra llamada al sistema es la MKDI, que lo que permite es crear un directorio... ...en el nombre de ruta especificado en este argumento de aquí. Con la máscara de modo OPTAL introducimos también en otro argumento. Si la llamada se ejecuta con éxito, entonces en R se guarda el valor 0. En caso de error, pues se almacenaría el valor menos 1. Señalar también que el comando MKDI es el que se invoca internamente... ...a la hora de crear un directorio. ¿Vale? Entonces cuando creéis una nueva carpeta, digamos, pues se invoca internamente... ...a esta llamada al sistema. ¿Vale? MKDI. Bueno, otra llamada al sistema sería la RMDI, que permite eliminar el directorio localizado... ...en el argumento ruta. ¿Vale? Para que pueda ser eliminado el directorio, tenéis que saber que tiene que estar vacío. Muy importante. Si no, no se va a poder eliminar. Si la llamada se ejecuta con éxito, entonces en R se guardaría el valor 0 y en caso de error... ...se almacenaría el valor menos 1. El comando RMDI, que nos sirve para borrar un directorio, como decíamos... ...invoca internamente a esta llamada al sistema. ¿Vale? Entonces cuando lo utilicéis en la consola RMDI, realmente pues se está invocando... ...a esta llamada al sistema por detrás. ¿Vale? Otro elemento que vamos a estudiar son los enlaces. ¿No? Entonces una de las características principales de una estructura de directorios... ...de gráfica cíclica, como la que hemos descrito... ...es la posibilidad de compartir archivos o directorios entre varios usuarios... ...utilizando para ello los enlaces. Un enlace permite conectar un directorio origen con un elemento ya existente... ...en otro directorio de destino y se distinguen dos tipos. Los enlaces duros y los enlaces simbólicos. Un enlace duro es una entrada de un directorio. En los sistemas operativos basados en UNIX, un archivo puede ser referenciado... ...por múltiples entradas de directorio. Por ejemplo, en el nodo I asociado al archivo, entre otras informaciones... ...existe un contador de enlaces duros. Cada vez que se crea una entrada de un directorio que referencia al archivo... ...el contador se incrementa en una unidad. Es muy importante que también lo sepáis. Cuando se crea un directorio... ...el contador de enlaces duros de su nodo I toma el valor 2. Un enlace corresponde a la entrada del directorio dentro del subdirectorio padre... ...la cual contiene el nombre del directorio. El otro enlace correspondería a la entrada punto del directorio creado. Cada vez que se crea un subdirectorio dentro de un directorio A... ...el contador de enlaces duros del nodo I del directorio se incrementa en una unidad... ...debido a la entrada dos puntos del subdirectorio creado. La cual referencia, como vimos antes, al directorio padre, que es el directorio. El contador se decrementa cada vez que se borra un subdirectorio. También muy importante tenerlo en cuenta. Y en general, esta formulita es interesante, que la aprendáis... ...el número de enlaces duros de un directorio es igual al número de subdirectorios más 2. Esta fórmula, aprenderla, porque es importante. N sub ET significa número de enlaces duros... ...y NS significa número de subdirectorios. Entonces, número de enlaces duros igual al número de subdirectorios más 2. En la figura 5.3 que tenéis en el libro, en la página 198... ...se muestra en detalle parte de la estructura de directorios... ...del sistema de archivos del ejemplo 5.4. Entonces, se observa aquí en este ejemplo y en la figura... ...que cuatro entradas de directorios apuntan al directorio HOME. Lo voy a poner aquí en la imagen para que lo veáis. Y vemos aquí que cuatro entradas de directorios apuntan al directorio HOME. Y la entrada a dos puntos del subdirectorio HOME, ALEX... ...se observa que cuatro entradas de directorios apuntan al directorio HOME. Que es este de aquí. Por un lado esta. Por otro lado esta de aquí y por otro lado esta de aquí. Tenemos la entrada social al directorio HOME en el directorio RAIZ. La entrada a dos puntos del propio directorio HOME. La entrada a dos puntos del subdirectorio HOME, ALEX. Cuando estamos aquí, pues volver hacia atrás. Y la entrada a dos puntos del subdirectorio HOME, SARA. Cuando estamos aquí, también volver hacia atrás. El contador de enlaces duros del nodo AID del directorio HOME... ...tendrá almacenado el valor 4. Por estos motivos que acabamos de describir. Si un archivo tiene un determinado número de enlaces duros... ...eso implica que tiene... ...n nombres distintos. n enlaces duros, n nombres distintos. Quedamos con eso. A diferencia de los restantes tipos de archivos que hemos visto... ...un directorio solo puede tener un único nombre para evitar la existencia... ...de ciclos en el árbol de directorios. Muy importante. Solamente... ...un nombre. Un enlace simbólico... Vamos a ver los enlaces simbólicos. Un enlace simbólico es un archivo cuyos bloques de datos... ...contienen el nombre de ruta absoluta o relativa de otro archivo o directorio. Si el nombre de ruta ocupa poco espacio... ...entonces éste se puede almacenar directamente... ...en el nodo I del archivo que implementa el enlace simbólico... ...sin necesidad de consumir bloques de datos. La entrada asociada a un enlace simbólico en el directorio origen... ...no contiene un puntero al nodo I del elemento de destino... ...sino que contendría un puntero al nodo I del archivo que implementa... ...el enlace simbólico. La máscara de modo simbólica de cualquier enlace simbólico... ...siempre es la que veis aquí por cuaderno. Esta máscara sólo sería una notación y no transmite la información... ...usual sobre los permisos de acceso del propietario... ...grupo propietario y otros usuarios. Es la máscara de modo de elemento destino la que será consultada... ...para autorizar o alegar los accesos al archivo destino. Cualquier operación de cambio de permisos que se realice sobre el enlace simbólico... ...en realidad se estará realizando sobre el archivo destino. La principal ventaja de los enlaces simbólicos que acabamos de describir... ...es que permiten crear enlaces a directorios. Su principal inconveniente sería que consumen bloques de datos de disco... ...y retardan también el análisis de los nombres de ruta. Otro elemento que vamos a ver para acabar con esta parte... ...serían los sistemas de archivos. Durante el proceso de instalación de un sistema operativo basado en UNIX... ...se realiza un formateo a alto nivel de una partición del disco duro... ...para crear el sistema de archivos principal donde se aloja el directorio RAID. Cada sistema operativo basado en UNIX establece el tipo de sistema de archivos... ...principal que cree. Aparte de este sistema de archivos principal, los soft units son capaces... ...de reconocer y manipular otros sistemas de archivos del mismo o distinto tipo... ...ubicados en memoria secundaria. Los discos duros, los discos ópticos como son los TDs, DVDs, Blu-ray, ThreadDryer, etc. Para poder acceder a los contenidos de un determinado sistema de archivos... ...ubicado en memoria secundaria, éste debe ser previamente montado... ...en algún directorio dentro de la estructura de directorios del sistema principal. A dicho directorio se le denomina punto de montaje. Por ejemplo, el punto de montaje del sistema de archivos principal sería... ...el directorio RAID. El núcleo almacena en un archivo una tabla de montaje con los sistemas de archivos... ...que tiene que montar al arrancar el sistema y desmontar al apagar. Muy importante, al arrancar monta unos sistemas de archivos y al apagar los desmonta. Dicho archivo suele almacenarse en el directorio ETC... ...y su nombre depende de cada sistema operativo basado en UNIX que estemos utilizando. En cada entrada de la tabla de montaje se suelen mantener los siguientes datos... ...dispositivo que se monta, punto de montaje... ...y tipo de sistema de archivos. En SOVIUNIX la estructura de directorios accesible por el usuario... ...quedaría constituida por el sistema de archivos principal... ...y por todos los sistemas de archivos montados sobre éste. El acceso a un directorio o archivo en un sistema de archivos montado... ...sobre el sistema de archivos principal se realiza exactamente igual que a cualquier archivo... ...es decir, especificando su nombre de ruta absoluta o relativa. Por otra parte, los permisos de acceso a un sistema de archivos montado... ...se establecen configurando los permisos de acceso del punto de montaje. Algunos comandos útiles para trabajar con sistemas de archivos... ...son los que os ven aquí en el libro, en la página 200. Uno de ellos es el comando mount... ...que sirve para montar un cierto sistema de archivos en un determinado punto de montaje. Este comando internamente invoca la llamada al sistema mount. Otro comando sería el umount, que desmonta un cierto sistema de archivos. Este comando internamente invoca la llamada al sistema mount... El comando mkfs crea un sistema de archivos de un tipo soportado... ...por el software unix correspondiente en un cierto dispositivo. Este otro comando fcck compruebe y repara la existencia de inconsistencias... ...en un determinado sistema de archivos. El comando df muestra datos sobre la distribución... ...de espacio libre y asignado a un determinado sistema de archivos. Y aquí tendríais un ejemplo en el cual se utilizan algunos de estos comandos. Sería el ejemplo 5.7 que tenéis ahí en la página 201 del libro... ...y que podemos verlo ahora para conectar con la sesión de hoy. En este ejemplo lo que vamos a suponer es que el núcleo de un determinado... ...sistema operativo basado en unix asocia a la unidad de cd-rom, en este caso... ...el archivo de dispositivo dsr0. Lo voy a apuntar aquí. Un sistema operativo asocia a la unidad de cd-rom el archivo de dispositivo dsr0. Insertamos en la unidad de cd-rom un disco con un sistema de archivos... ...de tipo ISO 9660 cuyo contenido es el que se muestra en la figura 5.4... ...que es esta que estamos viendo nosotros aquí en el apartado. Digamos que esto es el contenido que tiene un disco con un sistema de archivos... ...de tipo ISO 9660. Para poder acceder a los contenidos del sistema de archivos del cd-rom... ...primero tiene que ser montado en el sistema de archivos principal... ...en algún punto de montaje. Suponemos que se desea utilizar como punto de montaje el directorio cd-rom. En este caso ese sería el punto de montaje principal. El montaje del sistema de archivos del cd-rom en el punto de montaje seleccionado... ...se puede realizar desde un intérprete de comandos introduciendo la siguiente orden. Mount, que es una de las órdenes que acabamos de ver. Es la que monta un cierto sistema de archivos en un determinado punto de montaje. Entonces nosotros vamos a montar este. Por lo tanto escribimos mount dsr0. En el punto de montaje decíamos cd-rom. Por lo tanto escribimos aquí cd-rom. Tenemos esta línea en nuestro intérprete de comandos. Mount dsr0 cd-rom. Una vez montado se puede listar el contenido del sistema de archivos del cd-rom... ...utilizando el comando ls-l cd-rom. Si escribimos esto podemos listar el contenido del sistema de archivos del cd-rom. El acceso a un archivo o directorio del cd-rom... ...se realiza igual que a cualquier otro archivo del sistema de archivos principal... ...especificando su nombre de ruta. Por ejemplo, vamos a suponer que en el directorio raíz del cd-rom... ...existe el archivo asti-lm.txt. Que es el que tenemos aquí. Entonces, para mostrar su contenido en pantalla... ...podemos utilizar esta orden. more cd-rom dm.txt Cuando se termine de usar el cd-rom para desmontar un sistema de archivos... ...tenemos que utilizar esta otra orden. Un mount y el sistema de archivos dsrc. Fijaos que para montar utilizamos esta de aquí... ...y para desmontar utilizamos esta. Cuando un directorio, por ejemplo un directorio D... ...se utiliza como punto de montaje... ...la lista de archivos que contenía originalmente... ...es sustituida por la lista de archivos del directorio raíz del sistema. En consecuencia, no es posible acceder a los archivos alojados originalmente en D. Por ejemplo, en la figura que estáis viendo aquí... ...en el apartado A, el directorio cd-rom... ...que es este de aquí... ...contiene el archivo datos.txt. Cuando dicho directorio pasa a utilizarse como punto de montaje... ...como veis aquí en el apartado B... ...ya no se puede acceder a datos.txt. Ya que la lista de archivos que contenía originalmente el directorio... ...se ha sustituido por la lista de archivos del directorio raíz del sistema de archivos del cd-rom. ¿Vale? Como veis aquí. Cuando el sistema de archivos del cd-rom se ha desmontado... ...¿vale?, como he estado aquí... ...entonces, se restaurará la lista de archivos original y podrá accederse de nuevo al archivo datos.txt. ¿Vale? Entonces esto lo que quiere decir es que al final tendremos pues una especie de ciclo. ¿No? Cuando se monte el sistema de archivos pues podemos acceder en este caso a datos.txt... ...y en el otro caso pues no podemos. ¿Vale? Tendremos que esperar a que se desmonte para poder volver a acceder a datos.txt. ¿Vale? Bueno, pues todo lo que hemos visto hasta aquí sería la primera parte de este tema 5. ¿Vale? Y en la próxima sesión lo que vamos a hacer es ver desde la parte número 2 hasta la parte número 5. ¿Vale? De este tema número 5. Y vamos a hacer pues algún ejercicio de los que vienen al final del capítulo. En concreto la página 229. ¿Vale? Entonces... La primera parte del tema, que es todo lo que hemos visto hoy, es la más extensa. ¿Vale? Del capítulo. Las otras vais a ver que son más cortas. Y entonces pues voy a dejarlas para ver la segunda parte del tema. Y al acabar pues haremos un par de ejercicios de los que os vienen ahí propuestos... ...para que los podamos hacer juntos. ¿Vale? Esos ejercicios los podéis descargar desde aquí también, desde esta webconferencia. ¿Vale? Podéis descargar las soluciones. Y si no, pues también las tenéis al final del capítulo... O sea, al final del libro. En las soluciones que os proporciona el equipo docente. ¿Vale? Y por mi parte nada más. Los otros ejercicios, aunque no los veamos... ...sí que os recomiendo que los hagáis... ...de que hará una mejor preparación de la asignatura y del tema para el examen. ¿Vale? Entonces, pues como decía por mi parte nada más. En esta primera sesión del tema 5 nos vemos en la siguiente para terminar dicho tema... ...y para practicar un poco con algunos ejercicios. Muchas gracias por vuestra asistencia y seguimos en contacto. Un saludo.