En el sistema X Window , un administrador de sesiones X es un programa de administración de sesiones , un programa que puede guardar y restaurar el estado actual de un conjunto de aplicaciones en ejecución.
Descripción general
Desde el punto de vista de un administrador de sesiones X, una sesión es un “estado del escritorio” en un momento dado: un conjunto de ventanas con su contenido actual. Más precisamente, una sesión es el conjunto de clientes que gestionan estas ventanas o relacionadas con ellas y la información que permite a estas aplicaciones restaurar el estado de estas ventanas si es necesario.
El efecto más reconocible de usar un administrador de sesiones es la posibilidad de cerrar sesión en una sesión interactiva y luego encontrar exactamente las mismas ventanas en el mismo estado al iniciar sesión nuevamente. Para que esto funcione, el programa administrador de sesiones almacena los nombres de las aplicaciones que se están ejecutando al cerrar la sesión y las vuelve a iniciar al iniciar sesión. Además, para que también se restaure el estado de las aplicaciones (que es necesario para restaurar el contenido de Windows), las aplicaciones deben poder guardar su estado de ejecución cuando lo solicite el administrador de sesiones y volver a cargarlo cuando se inicie de nuevo.
En general, una sesión se puede guardar o cargar en cualquier momento, incluso si el usuario no está iniciando o cerrando sesión. También es posible guardar varias sesiones diferentes y cargar una de ellas a elección del usuario. Las sesiones también se pueden especificar proporcionando la lista de aplicaciones que componen la sesión. Como resultado, el usuario tiene la posibilidad de guardar un conjunto de sesiones diferentes, ya sea almacenando el estado de ejecución de las aplicaciones actualmente en ejecución o enumerando explícitamente las aplicaciones que componen una sesión. De esta forma, el usuario puede decidir posteriormente cargar una determinada sesión.
Protocolo XSMP
Para que una sesión incluya el estado de una aplicación, la aplicación debe poder almacenar y cargar su estado actual cuando sea apropiado. Un protocolo denominado X Session Management Protocol (XSMP) especifica cómo interactúan las aplicaciones y los administradores de sesiones. El formato de mensaje XSMP es el mismo que el formato de mensaje del establecimiento de conectividad interactiva (ICE). [1] Es de particular importancia que el administrador de ventanas pueda comunicarse con el administrador de sesiones, ya que el administrador de ventanas es responsable de la ubicación de las ventanas y la existencia de iconos. Las aplicaciones que no pueden almacenar su estado se pueden incluir en una sesión, pero no conservan su estado entre sesiones.
El sistema X Window incluye un administrador de sesiones predeterminado llamado xsm
. Se han desarrollado otros administradores de sesiones para sistemas de escritorio específicos: por ejemplo, ksmserver
es el administrador de sesiones predeterminado de KDE .
El protocolo
El XSMP es un subprotocolo del Protocolo de intercambio entre clientes . El cliente inicia el protocolo conectándose al administrador de sesiones. La ubicación del administrador de sesiones en la red depende del sistema: en un sistema POSIX , el entorno contiene una variable SESSION_MANAGER
. Por tanto, cuando se lanza un cliente, su entorno debe contener esta variable con un valor adecuado.
Identificadores
El protocolo tiene en cuenta dos hechos:
- para que una sesión se reinicie correctamente, no solo deben reiniciarse las aplicaciones que se ejecutan en ella, sino que también deben reiniciarse de tal manera que restauren su estado anterior;
- la misma aplicación puede estar ejecutándose más de una vez en la misma sesión o en una sesión diferente.
Diferentes instancias de la misma aplicación pueden estar activas al mismo tiempo en la misma sesión o en diferentes sesiones, y estas instancias probablemente tengan diferentes estados de ejecución. Por ejemplo, el usuario puede haber iniciado un editor de texto en el archivo /etc/passwd
, luego en el archivo letter.txt
en la misma sesión y luego en el archivo todo.txt
en otra sesión.
Para que las sesiones se restauren correctamente, el administrador de sesiones debe reconocer como diferentes instancias diferentes de la misma aplicación. Por esta razón, el administrador de sesiones elige un identificador único para cada instancia de cada aplicación. De esta manera, el administrador de sesiones puede distinguir entre el editor de texto que se está ejecutando /etc/passwd
y el editor de texto que se está ejecutando todo.txt
, incluso si son dos instancias del mismo programa.
Los identificadores deben ser únicos. En particular, deben ser únicos en todas las sesiones administradas por el administrador de sesiones: el identificador del editor de texto que se ejecuta /etc/passwd
es diferente no solo del mismo editor de texto que se ejecuta, letter.txt
sino también del editor de texto que se ejecuta todo.txt
en otra sesión. El identificador de un cliente sigue siendo el mismo incluso si la sesión se cierra y se reinicia.
Las partes principales del protocolo.
Las partes principales del protocolo de gestión de sesiones son:
- el administrador de sesiones elige un identificador único para cada cliente
- el administrador de sesiones solicita a los clientes que guarden su estado
- un cliente especifica cómo debe iniciarse de nuevo para que se restaure el estado (por ejemplo, la línea de comando que se utilizará para iniciar el proceso)
El último punto es posible porque el administrador de sesiones mantiene un conjunto de propiedades para cada cliente (en la terminología del sistema X Window, una propiedad es simplemente un contenedor de datos). Estos datos pueden ser modificados por el cliente en cualquier momento. Una de estas propiedades se nombra RestartCommand
y contiene la información sobre cómo se debe iniciar de nuevo el cliente.
Cuando el administrador de sesiones solicita a un cliente que guarde su estado, la aplicación procede de la siguiente manera:
- guarda su estado de tal manera que se pueden distinguir los estados de dos instancias diferentes; esto se puede obtener, por ejemplo, guardando el estado en un archivo cuyo nombre contiene su identificador
- almacena la especificación de cómo debe iniciarse nuevamente en la
RestartCommand
propiedad; esta propiedad debe contener el identificador de cliente porque:- la aplicación debe conservar su identificador cuando se inicia de nuevo
- el identificador es necesario para restaurar el estado (por ejemplo, es necesario para encontrar el archivo donde se almacena su estado)
El administrador de sesiones mantiene otras propiedades al lado RestartCommand
. Por ejemplo, una propiedad especifica cómo ejecutar la aplicación si se destruye la sesión.
Estado local y global
Al pedirle a un cliente que guarde su estado, el administrador de ventanas puede especificar si se debe guardar el estado local o global (o ambos). La diferencia es si el resultado del guardado debe ser visible para las otras aplicaciones o no.
En el caso del editor de texto, guardar el estado global significa guardar el archivo normalmente, para que otras aplicaciones puedan usar la nueva versión del archivo. Guardar el estado local significa que se debe guardar una copia local del archivo, para que otras aplicaciones puedan ver el archivo en su versión original.
Un ejemplo
Los siguientes son los pasos principales en la interacción de un administrador de sesión con el editor de texto hipotético xyz
cuando esta aplicación se inicia por primera vez en una sesión, luego el usuario cierra la sesión y vuelve a entrar:
- la aplicación se conecta al administrador de sesiones a través del Protocolo de intercambio entre clientes
- la aplicación le dice al administrador de sesiones que esta es la primera vez que se inicia y, por lo tanto, no tiene un identificador anterior (y, por lo tanto, no tiene un estado anterior)
- el administrador de la sesión responde enviando al cliente su identificador único, digamos
4324
; - el administrador de sesión pide inmediatamente al cliente que guarde su estado local (solo porque el cliente se ha iniciado por primera vez)
- el cliente almacena la línea de comando
xyz -sid 4324
como propiedadRestartCommand
en el administrador de sesiones (esto también depende del sistema: en un sistema POSIX , esta propiedad realmente contiene la matriz argv ) - el cliente almacena su estado localmente; por ejemplo, puede almacenar el nombre del archivo editado y toda la otra información (como la línea actual) en el archivo local
.temp-4324
- cuando el usuario cierra la sesión, el administrador de la sesión envía un mensaje a todos los clientes notificando que deben guardar su estado
- el cliente
4324
vuelve a cumplir - cuando todos los clientes han comunicado al administrador de sesiones que su estado está guardado, el administrador de sesiones cierra la sesión
Cuando se le dice al cliente que guarde su estado, puede tener la posibilidad de tener una interacción limitada con el usuario o no (por ejemplo, para preguntarle al usuario si se va a guardar el archivo editado). De todos modos, el estado se guarda, le dice al administrador de la sesión enviando un mensaje apropiado).
Cuando la sesión se inicia de nuevo, ocurre lo siguiente:
- el administrador de sesiones reinicia el cliente
4324
ejecutando lo que está almacenado en la propiedadRestartCommand
asociada con el cliente4324
- por tanto, la aplicación se inicia como
xyz -sid 4324
; de esta manera, la aplicación conoce su identificador - la aplicación recupera la información de estado del archivo
.temp-4324
- la aplicación se conecta al administrador de sesiones especificando el identificador
4324
, para que el administrador de sesiones sepa que este no es un cliente nuevo sino uno antiguo reiniciando
Sesiones de gestión de clientes
Según el protocolo XSMP, un administrador de sesiones es un programa arbitrario que se ejecuta y controla el estado de otras aplicaciones. Como resultado, un cliente puede ser él mismo un administrador de sesiones de otros clientes. Por ejemplo, un cliente de correo puede iniciar un editor de texto por el simple hecho de escribir un correo electrónico y comportarse como un administrador de sesiones con respecto al editor. De esta forma, si el cliente de correo se cierra y luego se reinicia nuevamente, puede restaurar el estado del editor de texto.
Historia
Para GNOME, el administrador de sesiones de GNOME reemplazó a XSMP con una interfaz D-Bus en la versión 2.24. [2] Sin embargo, no tiene ninguna característica completa, ni se usa en aplicaciones que no sean GNOME.
Ver también
Referencias
- ^ "Protocolo de gestión de sesiones X" . www.x.org . Consultado el 2 de diciembre de 2020 .
- ^ "Proyectos / Gestión de sesiones / GnomeSession - ¡Wiki de GNOME!" . wiki.gnome.org .
enlaces externos
- El protocolo de gestión de sesiones X
- página de manual xsm
- ksmserver , el administrador de sesiones de KDE
- ROX-Session , el administrador de sesiones de ROX Desktop