CONCEPTO DE SESION

Hasta ahora, cada vez que nos referíamos a un conjunto de Procesos, usábamos el término programa ; si bien algunas veces el uso fue correcto, en otras no fue así, y deberíamos haber usado el término sesión.

Una sesión es un conjunto de procesos, junto con una pantalla, teclado y ratón virtuales. Cada vez que abrimos un programa en modo texto, OS/2 crea para él una sesión, asignándole un LVB en donde escribir los datos de salida, y una cola de teclado y de ratón, en donde se almacenarán las pulsaciones y los movimientos hasta que pueda procesarlos. Si esa sesión se encuentra en primer plano, su VDU, cola de teclado y cola de ratón estarán conectadas directamente a la pantalla física, al teclado físico y al ratón físico, así hasta que el usuario conmute a otra sesión usando el selector de programas, el cual es una parte especial de OS/2 dedicada precisamente a gestionar las sesiones.

Todos los procesos pertenecientes a una sesión acceden al mismo LVB y a la misma cola de teclado y ratón. Esto no es un problema, sino un efecto buscado, pues si es necesario, es posible desde una sesión crear otras nuevas y arrancar en ellas procesos, de modo que no interfieran con el actual. De aquí surje que también existe una jerarquía de sesiones, y ciertas implicaciones entre ellas. Por ejemplo, una sesión padre puede ser notificada de que ha terminado una sesión hijo. También una sesión padre puede traer a primer plano a cualquiera de sus hijos (siempre y cuando ella esté en primer plano), o vincularse a ellos, de modo que cuando uno sea traido a primer plano, el padre también lo haga (y viceversa). Por último, un padre puede parar una sesión hijo, pero solo a ella, y no a sus 'nietos', o a ella misma. Sin embargo, cuando se para una sesión hijo, se paran también todas sus sesiones descendientes.

DosStartSession
DosStopSession
DosSelectSession

A nivel interno, los conceptos de Thread y Proceso están implementados en el núcleo, mientras que el de Sesión lo está en los subsistemas (los cuales no pertenecen al núcleo), pues son ellos los que deciden cuando un conjunto de procesos puede acceder o no a la pantalla física, o al teclado. Por otra parte, el selector de programas es el encargado de gestionar cuando se conmuta de uno a otro.

Normalmente, cada vez que arrancamos un programa, se crea una sesión para él; sin embargo, en algunos casos podemos desear que no se cree una pantalla virtual o una cola de entrada de teclado, por ejemplo si el programa no tiene que interactuar con el usuario. En estos casos, se puede arrancar en una sesión 'muda', a la cual no se podrá conmutar mediante el selector de programas, y que finalizará cuando acabe dicho proceso/procesos. Para arrancar un programa así desde la línea de comandos de OS/2, se usa la orden DETACH nombre de programa.

Pagina anterior  Indice  Pagina siguiente