El Remote Procedure Call (RPC) (del ingls, Llamada a Procedimiento Remoto) es
un protocolo que permite a un programa de ordenador ejecutar cdigo en otra mquina remota sin tener que preocuparse por las comunicaciones entre ambos. El protocolo es un gran avance sobre los sockets usados hasta el momento. De esta manera el programador no tena que estar pendiente de las comunicaciones, estando stas encapsuladas dentro de las RPC.
Tipos de semntica[editar] Semntica tal-vez[editar] Procedimiento remoto puede ejecutarse una vez o ninguna vez. El cliente puede recibir una respuesta o ninguna. Funcionamiento[editar] 1. El cliente enva una peticin y se queda a la espera un tiempo determinado. 2. Si no llega la respuesta dentro del tiempo de espera, contina su ejecucin. 3. El cliente no tiene realimentacin en caso de fallo (no sabe que pas). Slo admisible en aplicaciones donde se tolere la prdida de peticiones y la recepcin de respuestas con retraso (fuera de orden). Semntica al-menos-una-vez[editar] Procedimiento remoto se ejecuta una o ms veces. El cliente puede recibir una o ms respuestas. Funcionamiento[editar] 1. El cliente enva una peticin y queda a la espera un tiempo. 2. Si no llega respuesta o ACK dentro del tiempo de espera, repite la peticin. 3. El servidor no filtra peticiones duplicadas (el procedimiento remoto puede ejecutarse repetidas veces). 4. El cliente puede recibir varias respuestas. Slo es aplicable cuando se usan exclusivamente operaciones idempotentes (repetibles). Nota: Una operacin es idempotente si se puede ejecutar varias veces resultando el mismo efecto que si se hubiera ejecutado slo una. En ocasiones una operacin no idempotente puede implementarse como una secuencia de operaciones idempotentes. Admisible en aplicaciones donde se tolere que se puedan repetir invocaciones sin afectar a su funcionamiento. Semntica como-mximo-una-vez[editar] El procedimiento remoto se ejecuta exactamente una vez o no llega a ejecutarse ninguna. El cliente recibe una respuesta o una indicacin de que no se ha ejecutado el procedimento remoto. Funcionamiento[editar] 1. El cliente enva la peticin y queda a la espera un tiempo. 2. Si no llega respuesta o ACK dentro del tiempo de espera, repite la peticin. 3. El servidor filtra las peticiones duplicadas y guarda historial con las respuestas enviadas (servidor con memoria). El procedimiento remoto slo se ejecuta una vez. 4. El cliente slo recibe una respuesta si la peticin lleg y se ejecut el procedimiento,si no recibe informe del error. Resumen[editar]
Sincronizacion en los Sistemas Distribuidos La sincronizacin es un punto clave para los sistemas operativos distribuidos. Ya que ademas de la comunicacion es fundamental la forma en el que los procesos cooperan y se sincronizan entre si para la utilizacion de los recursos compartidos de la red. El trmino sincronizacin se define como la forma de forzar un orden parcial o total en cualquier conjunto de eventos, y es usado para hacer referencia a tres problemas distintos pero relacionados entre s:` 1. La sincronizacin entre el Emisor y el Receptor. 2. La especificacin y control de la actividad comn entre procesos cooperativos. 3. La serializacin de accesos concurrentes a objetos compartidos por mltiples procesos. En estos Sistema para sincronizar el trabajo comun entre procesos y evitar las complicaciones que puden ir surgiendo con el uso de estos , emplean Algoritmos Distribuidos que cuenta con las siguientes caracteristicas: Como una caracterstica de los sistemas distribuidos, es inaceptable que se concentre en un nodo, a toda aquella informacin que sea relevante para la toma de decisiones que tengan que llevar a cabo los procesos, pues es comn que lo hagan basndose en la informacin almacenada localmente. Se debe contemplar o prever los posibles puntos de fallo del sistema, puesto que en un sistema distribuido el flujo de trabajo no debe verse afectado si el proceso se interrumpe en algn nodo. Debido a que puede existir un gran nmero de nodos de procesamiento, no existe un reloj o fuente de tiempo comn para todos ellos. Esto se simplifica al hecho de en que tiempo ocurre un suceso con respecto de otro. Se utiliza el trmino "reloj" para hacer referencia al dispositivo con que cuentan casi todas las computadoras, y que se encarga de registrar el tiempo. Existen 2 tipos de Relojes Logicos Fisicos
RELOJES FSICOS Y LGICOS
RELOJES FSICOS
Los relojes fsicos son relojes que: Deben ser iguales (estar sincronizados). No deben desviarse del tiempo real ms all de cierta magnitud. En ciertos sistemas es importante la hora real del reloj:
Se precisan relojes fsicos externos (ms de uno). Se deben sincronizar: Con los relojes del mundo real.
RELOJES LGICOS
El software del reloj lgico: El software para el reloj toma generalmente la forma de un manejador de dispositivo, aunque no es un dispositivo de bloque.
La principales funciones del software manejador del reloj son: Mantener la hora del da o tiempo real Evitar que los procesos se ejecuten durante ms tiempo del permitido. Mantener un registro del uso del CPU:
-Controlar llamadas al sistema tipo "alarm" por parte de los procesos del usuario. - Proporcionar cronmetros guardianes de partes del propio sistema - Realizar resmenes, monitoreo y recoleccin de estadsticas.
Ncleo (informtica) Para otros usos de este trmino, vase Ncleo. En informtica, un ncleo o kernel (de la raz germnica Kern, ncleo, hueso) es un software que constituye una parte fundamental del sistema operativo. 1 Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma bsica, es el encargado de gestionar recursos, a travs de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, tambin se encarga de decidir qu programa podr hacer uso de un dispositivo de hardware y durante cunto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los ncleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.
Hilo de ejecucin En sistemas operativos, un hilo de ejecucin, hebra o subproceso es la unidad de procesamiento ms pequea que puede ser planificada por un sistema operativo.
Diferencias entre hilos y procesos[editar] Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente independientes, llevan bastante informacin de estados, e interactan slo a travs de mecanismos de comunicacin dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos de forma directa. En muchos de los sistemas operativos que dan facilidades a los hilos, es ms rpido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro. Este fenmeno se debe a que los hilos comparten datos y espacios de direcciones, mientras que los procesos, al ser independientes, no lo hacen. Al cambiar de un proceso a otro el sistema operativo (mediante el dispatcher) genera lo que se conoce como overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de contexto (context switch), en este caso pasar del estado de ejecucin (running) al estado de espera (waiting) y colocar el nuevo proceso en ejecucin. En los hilos, como pertenecen a un mismo proceso, al realizar un cambio de hilo el tiempo perdido es casi despreciable. Sistemas operativos como Windows NT, OS/2 y Linux (2.5 o superiores) dicen tener hilos "baratos", y procesos "costosos" mientras que en otros sistemas no hay una gran diferencia. Funcionalidad de los hilos[editar] Al igual que los procesos, los hilos poseen un estado de ejecucin y pueden sincronizarse entre ellos para evitar problemas de compartimiento de recursos. Generalmente, cada hilo tiene una tarea especifica y determinada, como forma de aumentar la eficiencia del uso del procesador. Estados de un hilo[editar] Los principales estados de los hilos son: Ejecucin, Listo y Bloqueado. No tiene sentido asociar estados de suspensin de hilos ya que es un concepto de proceso. En todo caso, si un proceso est expulsado de la memoria principal (RAM), todos sus hilos debern estarlo ya que todos comparten el espacio de direcciones del proceso. Cambio de estados[editar] Creacin: Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo puede crear otros hilos dentro del mismo proceso, proporcionando un puntero de instruccin y los argumentos del nuevo hilo. El hilo tendr su propio contexto y su propio espacio de la columna, y pasar al final de los Listos. Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea (salvando sus registros de usuario, contador de programa y punteros de pila). Ahora el procesador podr pasar a ejecutar otro hilo que est en la final de los Listos mientras el anterior permanece bloqueado. Desbloqueo: Cuando el suceso por el que el hilo se bloque se produce, el mismo pasa a la final de los Listos. Terminacin: Cuando un hilo finaliza se liberan tanto su contexto como sus columnas. Ventajas de los hilos contra procesos[editar] Si bien los hilos son generados a partir de la creacin de un proceso, podemos decir que un proceso es un hilo de ejecucin, conocido como Monohilo. Pero las ventajas de los hilos se dan cuando hablamos de Multihilos, que es cuando un proceso tiene mltiples hilos de ejecucin los cuales realizan actividades distintas, que pueden o no ser cooperativas entre s. Los beneficios de los hilos se derivan de las implicaciones de rendimiento. 1. Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que en crear un proceso. Algunas investigaciones llevan al resultado que esto es as en un factor de 10. 2. Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se elimina un proceso se debe eliminar el BCP 1 del mismo, mientras que un hilo se elimina su contexto y pila. 3. Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso. 4. Los hilos aumentan la eficiencia de la comunicacin entre programas en ejecucin. En la mayora de los sistemas en la comunicacin entre procesos debe intervenir el ncleo para ofrecer proteccin de los recursos y realizar la comunicacin misma. En cambio, entre hilos pueden comunicarse entre s sin la invocacin al ncleo. Por lo tanto, si hay una aplicacin que debe implementarse como un conjunto de unidades de ejecucin relacionadas, es ms eficiente hacerlo con una coleccin de hilos que con una coleccin de procesos separados.