Sistemas operativos modernos

procesos enlazados al objeto un mensaje con el número consecutivo, el nombre de la operación y el parámetro. Si dos procesos invocan a write al mismo tiempo, se les asignará un número consecutivo distinto. Todos los procesos deben aplicar los métodos que les llegan en orden, se­ gún el número consecutivo, no en el orden de llegada de los mensajes. Si un proceso recibe el número consecutivo 26 y el anterior fue 24, deberá esperar a que llegue el 25 antes de aplicar el 26. Si el 25 no llega antes de que pase cierto tiempo, el proceso deberá tomar medidas para localizarlo y obtenerlo. Este esquema garantiza que todas las escrituras se efectúen en el mis­ mo orden en todas las copias del objeto y asegura la consistencia secuencial. Esta técnica funciona bien de manera razonable, pero no todos los objetos necesitan con­ sistencia secuencial. Consideremos, por ejemplo, un objeto que mantiene precios de acciones. Si la bolsa que maneja las acciones de la empresa 1 emite un precio actualizado para ella, al mismo tiempo que otra bolsa emite una actualización para las acciones de la empresa 2 , no es in­ dispensable que todas las copias del objeto apliquen esas dos actualizaciones en el mismo orden porque son independientes. Tal vez bastará con que todos los procesos apliquen el flujo de ac­ tualizaciones de cada bolsa en el orden en que se enviaron, pero esta meta puede alcanzarse in­ cluyendo un número consecutivo generado por el proceso transmisor. Aquí no se necesita un secuenciador general para todos los objetos. El esquema de replicación anterior, en el que todas las copias de un objeto replicado son igua­ les y en el que se permite que cualquier copia emita actualizaciones si primero obtiene un número consecutivo, es sólo uno de muchos protocolos de replicación. En otro hay una copia maestra de cada objeto y cierto número de copias esclavas. Todas las actualizaciones se envían a la copia maes­ tra del objeto, ia cual aplica la actualización y envía el nuevo estado a todas las copias esclavas. Una tercera estrategia de replicación de objetos consiste en hacer que sólo una copia contenga el estado del objeto, y que todas las demás sean intermediarias sin estado. Cuando se efectúa una operación read o write con un intermediario (es decir, en una máquina cliente), la solicitud se remite a la copia que tiene el estado y se ejecuta ahí. La ventaja de Globe es que cada objeto puede tener su propia política de replicación. Al­ gunos objetos pueden usar replicación activa al mismo tiempo que otros objetos están utilizan­ do replicación maestra-esclava o cualquier otra estrategia que el objeto necesite. Además, cada objeto puede tener su propia política en lo que se refiere a consistencia, creación y eliminación de copias, seguridad, etc. Esto es posible porque todas las políficas se manejan dentro del ob­ jeto. Los usuarios de éste ni siquiera fienen conocimiento de ello, como tampoco lo fienen los administradores del sistema. Este enfoque contrasta con el de CORBA, que no oculta ninguna de estas políticas dentro de los objetos, lo que dificulta tener 1000 objetos distintos con 1000 políficas diferentes. Puede impiementarse un objeto Globe como se muestra en la figura 8-41. Esta figura ilustra los subobjetos de los que se compone el objeto Globe. El objeto de control acepta las invocacio­ nes de métodos que llegan y utiliza los demás subobjetos para ejecutarlas. El subobjeto de semán­ tica es el que se encarga en realidad del trabajo requerido por la interfaz del objeto; es la única parte del código del objeto que el programador debe escribir; todo lo demás puede tomarse de bi­ bliotecas estándar, a menos que el programador quiera usar una estrategia nueva que no esté dis­ ponible en bibliotecas. La tarea del subobjeto de replicación es administrarla. Este módulo puede reemplazarse si se desea cambiar de replicación activa a replicación maestro-esclava o a cualquier

RkJQdWJsaXNoZXIy MjI4NDcx