Por lo general un sistema distribuidos de archivos tiene dos componentes razonablemente distintos: el verdadero servicio de archivos y el servicio de directorios. El primero se encarga de las operaciones en los archivos individuales, como la lectura escritura y adición, mientras que el segundo se encarga de crear y administrar directorios, añadir y eliminar archivos de los directorios, etc.
La interfaz del servicio de archivos
Un aspecto importante del modelo de archivo es si éstos se pueden modificar después de su creación. Existen algunos sistemas distribuidos que permiten únicamente las operaciones de archivos CREATE Y READ. Una vez creado un archivo no se puede modificar. Se dice que tal archivo es inmutable. Estos archivos facilitan el ocultamiento y duplicación de archivos, puesto que esto elimina todos los problemas asociados con la actualización de todas las copias de un archivo cada vez que éste se modifique.
La protección en los sistemas distribuidos utiliza la misma técnica de los procesos con un procesador: posibilidades y listas para control de acceso. En el caso de las posibilidades cada usuario tiene cierto boleto llamado posibilidad, para cada objeto al que tiene acceso. La posibilidad determina los tipos de accesos permitidos ( por ejemplo se permite la lectura pero no la escritura ).
Todos los esquemas de lista para el control de acceso asocian a cada archivo una lista implícita o explícita de los usuarios que pueden tener acceso a los archivos y la forma de dicho acceso. El esquema de UNIX es una lista para control de acceso simplificada, con los bits que controlan la lectura, escritura y ejecución de cada archivo, en forma independiente para el propietario, grupo del propietario y todas las demás personas.
Los servicios de archivos se pueden dividir en dos tipos, según si soportan un modelo carga /descarga o un modelo de acceso remoto. En el modelo carga/descarga el servicio de archivo sólo proporciona la lectura de un archivo y la escritura del mismo. En la lectura transfiere todo un archivo de uno de los servidores de archivos al cliente solicitante. La escritura transfiere todo un archivo en sentido contrario del cliente al servidor. Los archivos se pueden almacenar en memoria o en disco local, como sea necesario.
La ventaja del modelo carga/descarga es la sencillez del concepto. Los programas de aplicación buscan los archivos que necesitan y después lo utilizan de manera local. Los archivos modificados o nuevos se escriben de regreso al terminar el programa.
Además, la transferencia de archivos completos es muy eficiente. Sin embargo el cliente debe disponer de un espacio suficiente de almacenamiento para todos los archivos necesarios. Otra desventaja es que si sólo se necesita una pequeña fracción de un archivo, el traslado del archivo completo es un desperdicio.
El otro tipo de servicios de archivos el de acceso remoto, en este modelo se proporcionan un gran número de operaciones para abrir y cerrar archivos, leer y escribir parte de archivo, moverse a través de un archivo, examinar y modificar los atributos de archivos, etc. Mientras en el modelo carga/descarga el servicio de archivos sólo proporciona el almacenamiento físico y la transferencia, en este caso el sistema de archivos se ejecuta en los servidores y no en los clientes. Su ventaja es que no necesita mucho espacio por parte de los clientes, a la vez que elimina la necesidad de transferir archivo completos cuando sólo se necesita un parte de ellos.
La interfaz del servicio de archivos
Un aspecto importante del modelo de archivo es si éstos se pueden modificar después de su creación. Existen algunos sistemas distribuidos que permiten únicamente las operaciones de archivos CREATE Y READ. Una vez creado un archivo no se puede modificar. Se dice que tal archivo es inmutable. Estos archivos facilitan el ocultamiento y duplicación de archivos, puesto que esto elimina todos los problemas asociados con la actualización de todas las copias de un archivo cada vez que éste se modifique.
La protección en los sistemas distribuidos utiliza la misma técnica de los procesos con un procesador: posibilidades y listas para control de acceso. En el caso de las posibilidades cada usuario tiene cierto boleto llamado posibilidad, para cada objeto al que tiene acceso. La posibilidad determina los tipos de accesos permitidos ( por ejemplo se permite la lectura pero no la escritura ).
Todos los esquemas de lista para el control de acceso asocian a cada archivo una lista implícita o explícita de los usuarios que pueden tener acceso a los archivos y la forma de dicho acceso. El esquema de UNIX es una lista para control de acceso simplificada, con los bits que controlan la lectura, escritura y ejecución de cada archivo, en forma independiente para el propietario, grupo del propietario y todas las demás personas.
Los servicios de archivos se pueden dividir en dos tipos, según si soportan un modelo carga /descarga o un modelo de acceso remoto. En el modelo carga/descarga el servicio de archivo sólo proporciona la lectura de un archivo y la escritura del mismo. En la lectura transfiere todo un archivo de uno de los servidores de archivos al cliente solicitante. La escritura transfiere todo un archivo en sentido contrario del cliente al servidor. Los archivos se pueden almacenar en memoria o en disco local, como sea necesario.
La ventaja del modelo carga/descarga es la sencillez del concepto. Los programas de aplicación buscan los archivos que necesitan y después lo utilizan de manera local. Los archivos modificados o nuevos se escriben de regreso al terminar el programa.
Además, la transferencia de archivos completos es muy eficiente. Sin embargo el cliente debe disponer de un espacio suficiente de almacenamiento para todos los archivos necesarios. Otra desventaja es que si sólo se necesita una pequeña fracción de un archivo, el traslado del archivo completo es un desperdicio.
El otro tipo de servicios de archivos el de acceso remoto, en este modelo se proporcionan un gran número de operaciones para abrir y cerrar archivos, leer y escribir parte de archivo, moverse a través de un archivo, examinar y modificar los atributos de archivos, etc. Mientras en el modelo carga/descarga el servicio de archivos sólo proporciona el almacenamiento físico y la transferencia, en este caso el sistema de archivos se ejecuta en los servidores y no en los clientes. Su ventaja es que no necesita mucho espacio por parte de los clientes, a la vez que elimina la necesidad de transferir archivo completos cuando sólo se necesita un parte de ellos.

La interfaz del servidor de directorios
Proporciona la operaciones para crear y eliminar directorios, nombrar o cambiar el nombre de archivo y mover esto de un directorio a otro.
El servicio de directorios define un alfabeto y una sintaxis para formar los nombres de archivos( y directorio ). Lo usual es que los nombres de archivos tengan de uno hasta un cierto numero de letras, números y ciertos caracteres especiales. Algunos sistemas dividen los nombres de archivo en dos partes, a menudo separada por un punto. La segunda parte del nombre llamada la extensión de archivo identifica el tipo de este. Otros sistemas utilizan un atributo explícito para este fin, en vez de utilizar una extensión dentro del nombre.
Todos los sistemas distribuido permiten que los directorios contengan subdirectorios, para que los usuarios puedan agrupar los archivos relacionados entres si. De acuerdo con esto se dispone para la creación y eliminación de directorios, asi como para introducir, eliminar y buscar archivos en ellos. Por lo general, cada subdirectorio contiene todos los archivos de un proyecto, como un programa o un documento de gran tamaño. Cundo se despliega el (sub)directorio solo se muestra los archivos relevantes, los archivos no relacionados estan en otros (sub)directorios y no agrandan la lista. Los subdirectorios pueden contener sus propios subdirectorios y asi sucesivamente. Lo que conduce a un árbol de directorios, el cual se conoce como sistema jerárquico de archivo.
En ciertos sistemas es posible crear enlace o apuntadores a un directorio arbitrario. Estos se pueden colocar en cualquier directorio, lo que permite construir no solo arboles, sino gráficas arbitrarias de directorios que son mas poderosas. La distinción entre arboles y gráficas es de particular importancia en un sistema distribuido.
El directorio D tiene un enlace con el directorio B. El problema aparece cuando se elimina el enlace de A a B. En una jerarquía de estructura de árbol solo se puede eliminar un enlace con un directorio si el directorio al cual se apunta es vacío. En una gráfica se permite la eliminación de un enlace mientras existan al menos otros enlaces. Mediante un contador de referencias que aparece en la esquina superior derecha de cada directorio se puede determinar si el enlace por eliminar es el ultimo.
Después de eliminar el enlace de A a B, el contador de referencia de B se reduce de 2 a 1. Sin embargo ahora no es posible llegar a B desde la raíz del sistema de archivo A. Los tres directorios B, D y E y todos sus archivos se convierten en huérfanos.
Si todo esta en una máquina, es posible, aunque costoso, descubrir los directorios huérfanos, puesto que toda la información esta en un lugar. Se puede detener toda la actividad de los archivos y recorrer la gráfica desde la raíz, para señalar todos los directorios alcanzables. En un sistema distribuido existen varias máquinas y no se puede detener toda la actividad.
Un aspecto fundamental en el diseño de cualquier sistema distribuido de archivos es si todas las máquinas (y procesos) deben tener con exactitud la misma visión de la jerarquía de los directorios.
Nombre de dos niveles
La mayoría de los sistemas distribuidos utilizan cierta forma de nombres con dos niveles. Los archivos tienen nombres simbólicos, como prog.c, para uso de las personas, pero también pueden tener nombres binarios internos, para uso del propio sistema. Lo que los directorios hacen en realidad es proporcionar una asociación entre estos dos nombres. Para las personas y los programas, es conveniente utilizar nombres simbólicos, pero para el uso dentro del propio sistema, estos nombres son muy grandes y difíciles. Cuando un usuario abre un archivo o hace referencia a un nombre simbólico, el sistema busca de inmediato en el directorio apropiado para obtener el nombre binario, el cual utilizará para localizar en realidad al archivo.
Los nombres binarios varían mucho de un sistema a otro. En ciertos sistemas el nombre binario puede ser sólo un número de un nodo-i , en Unix.
En un esquema general para los nombres es que el nombre binario indique el servidor y un archivo especifico en ese servidor. Este método permite que un directorio en un servidor tenga un archivo en un servidor distinto. Otra alternativa es utilizar un enlace simbólico. Un enlace simbólico es entrada de directorio asociada a una cadena (servidor, nombre de archivo) la cual se puede buscar en el directorio correspondiente para encontrar el nombre binario. El propio enlace simbólico es sólo el nombre de una ruta de acceso.
Otra idea es utilizar las posibilidades como los nombres binarios. En este método la búsqueda de un nombre en ASCII produce una posibilidad, la cual puede tomar una de varias formas, estos nombres pueden contener un número físico o lógico de una máquina o la dirección en la red del servidor apropiado y del archivo específico necesario. Se puede utilizar una dirección física para enviar un mensaje al servidor sin mayor interpretación. Una dirección lógica se puede localizar mediante una transmisión o mediante una búsqueda en un servidor de nombres.
Otra posibilidad es buscar un nombre en ASCII y obtener no uno sino varios nombres binarios. Por lo general estos representan al archivo original y todos sus respaldos. Este método proporciona cierto grado de tolerancia de fallas por medio de la redundancia.
Semántica de los Archivos compartidos .
Si dos o más usuarios comparten el mismo archivo, es necesario definir con precisión la semántica de la lectura y escritura para evitar problemas.
Existe cuatros maneras de compartir archivos :
- Semántica de UNIX: Establece que si una operación READ sigue después de una operación WRITE, READ regresa el valor recién escrito de manera análoga, cuando dos WRITE se realizan en serie y después se ejecuta un READ, el valor que se lee es de la última escritura. Este modelo es fácil de comprender y tiene una implantación directa.
La semántica de UNIX se puede lograr fácilmente en un sistema distribuido mientras exista un servidor de archivos y los clientes no oculten los archivos Cada operación en un archivo es visible a todos los procesos de manera instantánea.
En un sistema distribuido mientras sólo exista un servidor de archivos y los clientes no oculten los archivos. Todas las instrucciones READ y WRITE pasan en forma directa al servidor de archivos, que lo procesa en forma secuencial.
Los retrasos en la red pueden hacer que un READ ejecutado después de un WRITE llegue primero al servidor y obtenga primero el servidor. Este problema se puede resolver si se permite a los clientes que mantengan copias locales de los archivos de uso frecuente en sus cachés particulares, pero si un cliente modifica de forma local un archivo en caché y si poco después otro cliente lee el archivo del servidor obtendría un archivo obsoleto.
Para salir de esta dificultad se debería enviar de inmediato todas las modificaciones de los archivos en caché al servidor. Aunque esto es sencillo desde el punto de vista conceptual el método es ineficiente. Otra solución consiste en que los cambios a un archivo abierto solo pueden ser vistos en un principio por el proceso (o tal vez la máquina) que modificó el archivo. Los cambios serán visibles a los demás procesos (o máquinas) solo cuando se cierre el archivo. Este método es de uso común y se conoce como semántica de sesión. - Semántica de sesión: Al usar este método puede ocurrir que dos o más clientes ocultan y modifican el mismo archivo en forma simultanea. Una solución consiste que al cerrar cada archivo su valor se envíe de regreso al servidor, de modo que el resultado final dependerá del que lo cierre más rápido.
La dificultad con el uso de cachés y la semántica de sesión es que viola otro aspecto de la semántica de UNIX además del hecho de que no todos los READ
regresen el valor de escritura más reciente. En UNIX, a cada archivo abierto se le
asocia un apuntador que indica la posición actual en el archivo. Una instrucción
READ toma los datos a partir de esa posición y WRITE deposita los datos ahí.
Este apuntador es compartido por los procesos que abrieron el archivo.
Ningún cambio es visible a otros procesos hasta que el archivo se cierra. - Archivos inmutables: En este método las únicas operaciones que se permiten son CREATE y READ. Es posible crear un archivo por completo nuevo e introducirlo en el sistema de directorios, con el nombre de un archivo ya existente, el cual se vuelve inaccesible. Aunque es imposible modificar el archivo es posible reemplazarlo por un archivo nuevo. Aunque los archivos no se puedan modificar los directorios sí.
Un problema mas molesto consiste en que hacer si un archivo se reemplaza
mientras otro esta ocupado leyéndolo. Una solución consiste en que el lector
utilice el archivo anterior, aunque este ya no exista en directorio alguno de esta
forma se permite que un proceso con un archivo abierto continua utilizándolo, aún cuando este haya sido eliminado de todos los directorios. otra solución consiste en detectar la modificación del archivo y hacer que fallen los intentos posteriores por leerlos. No existe actualizaciones; es más fácil de compartir y replicar. - Transacciones: Para tener acceso a un archivo o grupo de archivos, un proceso ejecuta en primer lugar cierto tipo de primitiva BEGINTRANSACTION para señalar que lo que sigue debe ejecutarse de manera indivisible. Después vienen las llamadas al sistema para leer o escribir en uno más archivos. Al terminar el trabajo, se ejecuta una primitiva en TRANSACTION, esto garantiza que todas las llamadas contenidas dentro de la transacción se levaran a cabo en orden, sin interferencia de otras transacciones concurrentes. Si dos o más transacciones se realizan al mismo tiempo, el sistema garantiza que el resultado final es el mismo que si se ejecutasen en cierto orden secuencial. Todos los cambios tienen la propiedad del todo o nada.

En la interfaz del servicio de archivos es importante resaltar, que la misma, presenta posibilidades, donde cada usuario tiene un permiso o posibilidad para cada objeto al que tiene acceso, determinando así los tipos de accesos permitidos asociando a cada archivo una lista implícita o explícita de los usuarios que pueden tener acceso al archivo y los tipos de acceso permitidos a cada uno de ellos.
ResponderEliminarAscanio Carmen C.I: 18.406.437
Sección 04