Sistemas operativos modernos
La llamada Iseek tiene tres parámetros: el primero es el descriptor del archivo, el segun do es una posición en el archivo y el tercero indica si dicha posición es relativa al principio del archivo, a la posición actual o a la final. El valor devuelto por Iseek es la posición absoluta en el archivo después de haber desplazado el apuntador. Para cada archivo, UNIX se mantiene al tanto del modo de archivo (archivo normal, archivo especial, directorio, etc.), su tamaño, cuándo se modificó por última vez y otra información. Los programas pueden pedir ver esta información con la llamada al sistema stat. El primer paráme tro especifica el archivo a inspeccionar; el segundo es un apuntador a una estructura donde se co locará la información. 1.6.3 Llamadas al sistema para administración de directorios En esta sección veremos algunas llamadas al sistema relacionadas más con directorios o con el sistema de archivos en su totalidad, que con un archivo específico, como en la sección anterior. Las primeras dos llamadas, mkdir y rmdir, crean y eliminan directorios vacíos, respectivamente. La siguiente llamada es link. Su propósito es permitir que el mismo archivo aparezca con dos o más nombres, a menudo en directorios distintos. Un uso típico sería permitir que varios miembros de un equipo de programación compartan un archivo, que aparecerá en el directorio de cada uno, posiblemente con distinto nombre. Compartir un archivo no es lo mismo que proporcionar a ca da miembro del equipo una copia privada, pues implica que todos ellos podrán ver al instante cual quier cambio efectuado por cualquiera; sólo existe un archivo. Cuando se hacen copias de un archivo, los cambios posteriores efectuados en una copia no afectan a las demás. Para ver cómo funciona link, consideremos la situación de la figura l-21a. Hay dos usua rios, ariel y jaime, cada uno con su propio directorio que contiene algunos archivos. Si ahora ariel ejecuta un programa que contiene la llamada al sistema llnk(7usr/jaime/memo”, 7usr/ariel/nota”); el archivo memo del directorio de jaime aparece ahora también en el directorio de ariel con el nombre nota. En adelonlQ,/usr/jaime/memo y /usr/ariel/nota se referirán al mismo archivo. Por cierto, el que los directorios de usuario se guarden en /usr, /user, /home o algún otro lado es puramente una decisión tomada por el administrador del sistema local. Es probable que entender cómo funciona link aclarará su efecto. Todo archivo en UNIX tiene un número único, su número-i, que lo identifica. Este número-i es un índice para buscar en una tabla de nodos-i, uno por archivo, que indica quién es el dueño del archivo, dónde es tán sus bloques de disco, etc. Un directorio no es más que un archivo que contiene un conjun to de pares (número-i, nombre ASCII). En las primeras versiones de UNIX, cada entrada de directorio tenía 16 bytes: dos para el número-i y 14 para el nombre. Ahora se necesita una es tructura más complicada para manejar nombres de archivo largos, pero en lo conceptual un di rectorio sigue siendo un conjunto de pares (número-i, nombre ASCII). En la figura 1-21, mail tiene el número-i 16, por ejemplo. Lo que hace link es simplemente crear una nueva entrada de directorio con un nombre (quizá nuevo) y el número-i de un archivo que ya existe. En la figu ra l-21b, dos entradas tienen el mismo número-i (70) y por tanto se refieren al mismo archivo.
RkJQdWJsaXNoZXIy MjI4NDcx