Se debe a que son operaciones no idempotentes, que no pueden realizarse con servidores sin estado, como es el caso del servidor de ficheros plano. El interés de los servidores sin estado y las operaciones idempotentes radica en que simplifican la recuperación en caso de caídas temporales, tanto de líneas de comunicación como de servidores (y clientes): Basta con reintentar las peticiones de servicio.
Para que en caso de caída del servidor no se pierdan datos que el cliente crea que se han escrito. Es costoso en tiempo y puede soslayarse con un sistema de alimentación ininterrumpida más o menos complejo.
¿Para que sirven las hebras threads en los procesos servidores? ¿Y en los clientes?
En los procesos servidores, las hebras sirven para poder dar servicio a peticiones posteriores, cuando una petición anterior se queda bloqueada esperando que se complete una operación de entrada/salida.En los clientes sirven, combinadas con buzones de comunicación, para desacoplar fácilmente a los flujos de procesamiento, de las peticiones bloqueantes que estos necesiten hacer a servidores.
No se pueden diferenciar sin canales de comunicación alternativos.
Pueden dar lugar a tantos coordinadores como particiones, pudiendo ocasionar un comportamiento incoherente.
Para la computación distribuida que se muestra en la figura adjunta, el corte mostrado,
NO
No es coherente porque corta a un mensaje de tal forma que el origen del mismo queda a la derecha del corte, mientras que su destino (la punta de la flecha) está a la izquierda del corte.
Los sucesos de la ``frontera" del corte tiene horas vectoriales, respectivamente, de (2, 2, 0), (1, 3, 0) y (1, 5, 3). Y sucede que el segundo componente del tercer vector es mayor que el segundo componente del segundo vector, lo cuál es una incoherencia.
Los razonamientos geométricos son difíciles de automatizar para que los realice un computador, pero, en todo caso, requieren que exista una visión global de la computación, la cuál sólo se puede conseguir mediante algoritmos numéricos del tipo de los que utilizan relojes vectoriales.
Cierto sistema operativo mantiene en el núcleo dos variables relacionadas con el tiempo:
Un proceso de sincronización consulta un servidor de tiempos y puede modificar cualquiera de las dos variables. Supongamos que inicialmente se pone la máquina en hora con la del servidor de tiempos y se ajusta i = 1.000.000. Desde ese momento el proceso de sincronización sondea cada 10 segundos al servidor de tiempos y actúa en consecuencia. Supongamos que después de la primera consulta se descubre que nuestro reloj está adelantado 10 milisegundos respecto al servidor de tiempos.
- 1.
- int/seg
- 2.
- Se produce una inversión de tiempo de 10 milisegundos cada 10 segundos. El tiempo local tiene forma de diente de sierra, el reloj local está siempre adelantado un máximo de 10 milisegundos, justo antes de la resincronización.
- 3.
- Obviamente el método tiende a corregir el error, pero no corrige i con exactitud, por lo que el sistema tiene que oscilar permanentemente. En nuestro caso particular, pasados 10 segundos después de la primera corrección, tenemos
seg
Es decir, hemos ajustado casi la frecuencia a la del patrón, con lo que el error se mantiene y ocasiona una segunda corrección al cabo de otros 10 mseg:
seg
Ahora hay un retraso de unos 10 ms, lo que hará que al cabo de otros 10 ms los tiempos casi coincidan. En este caso o no se produce corrección o, aleatoriamente, se corregirá en cualquiera de los dos sentidos. Si no se corrige, al cabo de 10 ms el error será de unos 10 ms y habrá que corregir. Si se corrige equivocadamente, puede llegar a doblarse. No hay pendientes negativas y, a grosso modo, el error de mantendrá dentro de 20 ms por arriba o por abajo.
- 4.
- Corrigiendo proporcionalmente al error, la frecuencia debería irse disciplinando y llegar a tener un error muy bajo. Sin embargo, en nuestro caso estamos rozando la inestabilidad y el comportamiento asemeja al del caso anterior (sin corrección al cruzar). La corrección debería hacerse bastante menor que 100 por milisegundo; el sistema tardaría en disciplinar la frecuencia, pero lo conseguiría.
- 5.
- Deberíamos escribir i en un fichero al apagar. Al encender, hay que consultar al servidor de tiempos para ajustar T y leer el fichero para obtener i.
- 6.
- El doble del error, es decir, 4 milisegundos.
This document was generated using the LaTeX2HTML translator Version 98.1p1 release (March 2nd, 1998)
Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
The command line arguments were:
latex2html -no_navigation -split 0 -html_version 4.0 extra-febrero-98.tex.
The translation was initiated by Joaquin Seoane on 1998-09-22