Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


Controlar un programa

§1  Comentario

Los conceptos sinópticamente expuestos en la página anterior ( 1.7) no deben ser tomados de forma absoluta. Por ejemplo, cuando decimos que "en la programación clásica es el propio programa el que decide que se hace y cuando", mientras que en la orientada a eventos "la ejecución está controlada por el SO", puede inducir a confusión al principiante, así que la cuestión quizás merezca un comentario.

§2  Una arquitectura de capas superpuestas

En un ordenador actual, el software está construido por capas (tanto física como conceptualmente). Las capas más profundas son en realidad mitad software, mitad hardware. Son el firmware; programas construidos sobre silicio (precableados como en las primeras computadoras). Este "soft" no puede ser alterado,  está incluido en el propio procesador y en el juego de circuitería asociada (el denominado "chipset"). A continuación se sitúan los "drivers", controladores de dispositivos. Estas piezas de software, verdaderas interlocutoras entre el software y el hardware, son específicas para cada SO y hardware particular.  Una capa más arriba se encuentra el Sistema Operativo (SO); conjunto de programas encargado de gobernar y controlar el funcionamiento del ordenador.

La parte inferior del SO se apoya en los "drivers", a los que traslada diversas peticiones y de los que recibe determinadas señales. Su parte superior sirve a su vez de soporte a la última capa de Software, los programas de aplicación. Estos son los que hacen tareas directamente útiles para el usuario; en esta última categoría se incluyen, por ejemplo un Procesador de textos, un programa de Contabilidad, un Navegador para la Web, etc.

En realidad, el SO es el auténtico director de la "orquesta", el que dirige el funcionamiento del conjunto de forma ordenada y armónica. Todas las decisiones importantes pasan por sus manos;  por supuesto también las Entradas y Salidas (E/S). Todos los programas están gobernados por entradas/salidas (es justamente lo que hace posible que el usuario los controle). Así pues, tanto un programa tradicional (bajo MS DOS por ejemplo) como un programa "moderno" (bajo Windows), están gobernados por E/S, y estas pasan siempre por el control del Sistema. La diferencia entre ambos tipos de sistemas (antiguos y modernos), es en realidad una cuestión de cantidad y de elaboración.

En un entorno tradicional, esta información de E/S pasa por el SO sin apenas intervención. Con raras excepciones las E/S pasan directamente "tal cual" a la aplicación (en realidad no pueden interesar a nadie más, ya que la aplicación es única). Sin embargo, aunque mínimo, este control del Sistema es omnipresente. Por ejemplo, incluso en un entorno MS DOS, la pulsación Ctrl+Break detiene el programa en ejecución, ya que la señal producida por esta combinación de teclas es interceptada por el Sistema que obliga al programa a terminar.

En el caso de los Sistemas multi-programa tipo Windows o Linux, las señales de entrada sufren una mayor elaboración. El Sistema las preprocesa y las envía a la aplicación adecuada. Por ejemplo, si se trata de un clic de ratón, se envía un mensaje al proceso correspondiente a la ventana sobre la que se ha pulsado [3]. Si además (supongamos) el clic se ha efectuado sobre el botón de cerrar la aplicación, este clic es transformado en un mensaje al programa para que termine [1]. A su vez, si la aplicación no sabe que hacer con el mensaje, la devuelve al Sistema para que este ejecute cierta acción por defecto.

Nota:  Esta redirección de las señales de entrada puede ser puesta de manifiesto fácilmente. Por ejemplo, ponemos en marcha un procesador de texto en una ventana y observamos como, mientras tiene foco (es la aplicación activa [2]), las sucesivas pulsaciones de teclas son registradas;  parece que "escribimos" directamente en la ventana, ya que las señales son enviadas por el Sistema a la aplicación. Cuando esta pierde foco, por ejemplo, pulsado con el ratón en un área del escritorio no ocupada por ninguna otra aplicación, la ventana deja de recibir los mensajes de las teclas.  Aunque sigamos "escribiendo" en el teclado parece que las pulsaciones se pierden. En realidad siguen siendo recibidas por el Sistema, pero no las redirecciona a ninguna aplicación. A menos que tengan un sentido específico (sea alguna combinación de teclas de uso definido,  un atajo, "short-cut"), estas señales se pierden.  Son descartadas si el Sistema no sabe que hacer con ellas.

  Inicio.


[1]  Si se trata de una aplicación Windows este mensaje corresponde a una constante manifiesta: WM_QUIT (petición de que termine la aplicación).

[2]  Generalmente la barra de título de la ventana adopta otro color mientras que la aplicación está activa (tiene foco).

[3]  La "ventana" que vemos en pantalla, es la representación gráfica y parte de la interfaz de un proceso.