Sistemas operativos modernos

Sin embargo, supongamos que el archivo x es extremadamente grande y no hay mucho es­ pacio en el servidor 1. Supongamos también que hay espacio de sobra en el servidor 2. Es pro­ bable que al sistema le gustaría pasar x al servidor 2 en forma automática. Lo malo es que, si el primer componente de todos los nombres de ruta es el servidor, el sistema no puede cambiar el archivo al otro servidor en forma automática, aunque dirl y dir2 existan en ambos servido­ res. El problema radica en que el cambio de servidor cambia de manera automática el nombre de ruta del archivo, de /servidorl/dirl/dir2/x a /servidor2/dirl/dir2/x. Los programas que hacen referencia al primer nombre de ruta dejarán de funcionar si cambia la ruta. Un sistema en el que los archivos pueden cambiarse de lugar sin que cambie su nombre tiene independencia de ubi­ cación. Es obvio que un sistema distribuido que incorpora los nombres de máquinas o de servi­ dores en los nombres de ruta no es independiente de la ubicación. Uno basado en montaje remoto tampoco lo es, porque no es posible pasar un archivo de un grupo de archivos (la unidad de montaje) a otro y seguir usando el mismo nombre de ruta. No es fácil lograr la independen­ cia de la ubicación, pero es una propiedad deseable de un sistema distribuido. Resumiendo lo dicho, hay tres enfoques comunes para asignar nombres a los archivos y di­ rectorios de un sistema distribuido: 1. Nombres de máquina + ruta, como /máquina/ruta o máquina:ruta. 2. Montar sistemas de archivos remotos en la jerarquía de archivos local. 3. Un solo espacio de nombres que se ve igual desde todas las máquinas. Los dos primeros son fáciles de implementar, sobre todo como mecanismo para conectar sis­ temas existentes que no se diseñaron para uso distribuido. El último es difícil y requiere un di­ seño cuidadoso, pero facilita la vida de programadores y usuarios. Semántica del compartimiento de archivos Cuando dos o más usuarios comparten el mismo archivo, es necesario definir con precisión la se­ mántica de la lectura y la escritura para evitar problemas. En los sistemas uniprocesador, la semántica por lo regular estipula que cuando una llamada al sistema read sigue a una llamada al sistema write, read devuelve el valor que acaba de escribirse, como se muestra en la figura 8-36a. De forma similar, cuando se ejecutan dos write en sucesión rápida, seguidos de un read, el valor leído es el almacenado por la última escritura. En efecto, el sistema impone un orden a todas las llamadas al sistema y todos los procesadores ven el mismo ordenamiento. Llamaremos a este mo­ delo consistencia secuencial. En un sistema distribuido, ia consistencia secuencial puede lograrse con facilidad siempre que sólo haya un servidor de archivos y los clientes no coloquen archivos en caché. Todas las llamadas read y wnte se envían de manera directa al servidor de archivos, que las procesa en orden estrictamente secuencial. En la práctica, empero, el desempeño de un sistema distribuido en el que todas las solici­ tudes deben enviarse al mismo servidor suele ser deficiente. Este problema se resuelve en mu­ chos casos permitiendo a los clientes mantener copias locales de los archivos que usan mucho.

RkJQdWJsaXNoZXIy MjI4NDcx