Previous Next Table of Contents

1. Introducción al sistema X Window

1.1 Display de mapa de bits

El sistema X Window es un sistema para visualización de mapas de bits. Un visualizador o display de mapa de bits es un conjunto de elementos de visualización de puntos denominados pixels. Todos los objetos gráficos en el display constan de pixels. Cada pixel tiene asociado un valor que representa un color en el display.

1.2 Tamaño de pantalla y coordenadas

Dado que un display de mapa de bits consta de pixels, cada posición en la pantalla puede representarse por unas coordenadas de pixel, y el tamaño de la pantalla puede representarse por la anchura y altura en pixels. Para dibujar un grafico en la pantalla, cada posición de pixel puede especificarse mediante unas coordenadas. Normalmente la esquina superior de la pantalla es el origen de coordenadas. Los sistemas X suelen tener pantallas de al menos 1024 por 768 pixels.

1.3 Memoria de video y planos de bits

Los valores de los pixels para una pantalla se almacenan en una memoria especial denominada frame memory o memoria de video. la memoria de video esta compuesta de uno o mas planos de bits. Cada posición de pixel en la pantalla tiene su correspondiente posición de bit en cada uno de los planos. Los valores de los pixels se calculan tomando los valores de los bits según el peso que le corresponda a cada plano.

1.4 Mapa de colores

El mapa de colores es una tabla de conversión entre valores de pixels y colores. Un mapa de colores típico convierte los valores de los pixels en valores RGB, es decir, números que representan las intensidades del rojo, verde y azul. En el display CRT estos valores se envían al conversor analógico digital (DAC) y se amplifican para cada uno de los cañones de electrones. Como resultado, la correspondiente posición de pixel toma el color especificado.

1.5 Modelo cliente-servidor

X Window es un sistema orientado a red que trabaja mediante la cooperación entre cliente y servidor. El servidor reside en el host (un ordenador de la red) en el que el usuario dispone de un display, ratón y teclado para comunicarse con el sistema X Window. El cliente puede residir en el mismo host que el servidor o en otros hosts de la red. El servidor maneja directamente un display, un ratón y un teclado, mientras que el cliente solicita al servidor que lo haga por el. El programa servidor suele suministrarlo el fabricante de software. Alguno de los programas clientes se incluyen en el software X Window. Los clientes y el servidor son programas separados en la red. Varios clientes distribuidos por la red pueden comunicarse con el servidor al mismo tiempo.

1.6 Estructura del software X Window

El software X Window consta del servidor y los clientes. El servidor lo produce el fabricante de software. Los programas clientes pueden clasificarse como: Aplicaciones: programas desarrollados por el usuario. Clientes X: programas desarrollados por fabricantes de software como clientes X estándar, tales como xclock, xload, etc. Window Managers (gestores de ventana): programas desarrollados por fabricantes de software para gestionar el interfaz de usuario. Para desarrollar aplicaciones pueden usarse las llamadas a la Xlib como el nivel mas bajo de software. Este nivel controla directamente los protocolos X. También puede usarse el X Toolkit como un nivel superior que utiliza las llamadas a Xlib. El X Toolkit se utiliza con los X Widgets, que tienen una estructura orientada a objeto. Cada widget representa un botón, un menú, una scroll bar. etc.

1.7 Protocolo X

La comunicación entre el cliente y el servidor se realiza usando cuatro clases de mensajes formateados que constituyen el protocolo X: request, reply, event, y error. Estos mensajes son procesados por las llamadas a la Xlib, por lo que el programador no necesita usar el protocolo X directamente. Un request es un mensaje de petición de servicio del cliente al servidor. Si necesita una respuesta (reply), el cliente espera la contestación del servidor, sino continua su tarea. Un reply lo envía el servidor al cliente como respuesta a una petición de un cliente. El cliente permanece a la espera hasta que llega el reply. Es el único mensaje síncrono del protocolo. Un event es un mensaje asíncrono que envía el servidor al cliente cuando ocurre un suceso en la estación de trabajo que el servidor gestiona. Un error lo envía el servidor al cliente cuando detecta una situación de error

1.8 Request y buffering

Un request (petición) se envía desde el cliente al servidor, por ejemplo, 'crea una ventana', 'mueve una ventana' o 'dibuja una linea'. La mayoría de las llamadas de la Xlib envían este tipo de mensajes. Las peticiones se procesan en el orden en que se envían. Normalmente estos mensajes no se envían directamente al servidor, sino que se almacenan en el buffer de la Xlib. El buffer se vacia y las peticiones se envían al servidor sólo cuando se satisfacen ciertas condiciones, por ejemplo, que el buffer este lleno o que se requiera un reply (respuesta) del servidor. El cliente no espera a que la petición alcance el servidor y se procese (a menos que necesite respuesta). Este sistema de almacenamiento aumenta la eficiencia por dos razones: El cliente puede proceder al siguiente paso del programa sin esperar a que el servidor procese las peticiones. Aumenta la eficiencia de la transmisión enviando varios mensajes como un solo paquete en vez de enviarlos por separado.

1.9 Request y Reply

Algunas de las peticiones de la Xlib requieren información del servidor, por ejemplo, cual es el tamaño de la ventana, cual es la posición, que tamaño tiene la fuente actual, etc. En estos casos, la Xlib vacía el buffer, envía la petición al servidor y se queda esperando hasta que recibe la respuesta por parte del servidor.

1.10 Ejemplos de eventos

Hay muchos eventos que el servidor detecta, por ejemplo, que se pulsa el botón del ratón, que se suelta el botón del ratón o que se pulsa una tecla. El cliente no puede detectar estos eventos directamente, solo el servidor puede hacerlo. El servidor envía mensajes event a los clientes para notificar estos eventos. Los eventos no solo pueden ser generados por el hardware, tambien se generan por software, como al mover una ventana o cambiar su tamaño. El servidor no envia todos los eventos a los clientes, sino solo aquellos que los clientes especificaron previamente. Sin esa restriccion, los clientes estarian demasiado ocupados procesando los eventos.

1.11 El Window Manager

La pantalla del display de mapa de bits es un lugar público que muchos clientes usan al mismo tiempo. Cada cliente deberia ser un buen ciudadano en la pantalla del sistema X Window. Dado que un usuario puede usar mas de un cliente en la misma pantalla, es necesario un interfase de usuario consistente entre cada cliente. Todos esos problemas los resuelve el window manager (gestor de ventanas). El gestor de ventanas es un cliente especial que contruye el interfase de usuario y ajusta la disposicion de ventanas de cada cliente. Si clientes ordinarios envian peticiones respecto a la disposicion tales como cambiar el tamaño o mover ventanas, el servidor X redirecciona dichas peticiones hacia el gestor de ventanas. Si la peticion no viola las reglas del gestor de ventanas, el servidor llevara a cabo la peticion. Distintos gestores de ventanas pueden tener distintas politicas. El usuario puede puentear al gestor de ventanas controlar el mismo la pantalla. El gestor de ventanas ajusta las peticiones de situacion, proporciona un interfase de usuario, y reenvia las peticiones al servidor. Como resultado, las peticiones de cada cliente se ajustan en su localizacion y se fuerza a tener un interfase de usuario consistente.

1.12 Recursos e identificadores de recursos

Los recursos son las areas en la que se almacena informacion en los servidores. Cada recurso tiene un numero de identificacion denominado identificador de recurso, mediante el cual los clientes acceden a ellos. Los clientes no necesitan dedicar espacio para almacenar estos recursos, ya que el servidor se encarga de hacerlo por ellos. Por ello, tampoco es necesario enviar y recibir los recursos entre clientes y servidores, lo que disminuye el tamaño de los clientes e incrementa el rendimiento de la transmision de la red. Los siguientes son los tipicos recursos en el sistema X Window: atributos de ventana, pixmaps (mapa de bits), mapas de colores, GC's (contexto grafico), cursores y fuentes (tipos de letras).

1.13 Ventanas

Una ventana es una area rectangular mostrada en la pantalla. Las ventanas pueden crearse, moverse y ser cambiadas de tamaño. Se puede superponer una ventana sobre otras ventanas y cambiar el orden de superposicion (o apilamiento). Se pueden dibujar graficos en las ventanas, obtener entradas del teclado y detectar eventos provocados por el raton. Los clientes controlan las ventanas mediante los identificadores de ventana (window IDs).

1.14 Pixmaps

Un pixmap es un area rectangular en la que se pueden dibujar graficos, sin embargo, esta area no se visualiza en la pantalla, ya que un pixmap es un recurso de almacenamiento. El usuario no ve los graficos del pixmap directamente. Los pixmaps se usan como inventario de graficos. Se pueden copiar pixmaps total o parcialmente sobre las ventanas, lo que hace que los graficos sean visibles. Tambien se puede usar un patron en un pixmap como una 'teja'. Se pueden rellenar poligonos en las ventanas con determinados patrones de pixmap. Los clientes controlan los pixmaps mediante los identificadores de pixmaps (pixmap IDs).

1.15 GCs

Un GC o contexto gráfico es un area en la que se almacenan los atributos de los graficos. Los atributos de los graficos son las caracteristicas con que se dibujan. Por ejemplo, cuando se dibuja una linea, sus atributos incluyen anchura y estilo. Cuando se dibujan graficos no es necesario enviar los atributos cada vez. Solo se necesitar especificar que GC de los que estan en el servidor se quiere usar. Esto reduce la informacion redundante sobre la red. Los clientes pueden especificar los GCs mediante los identificadores de GCs (GC IDs).

1.16 Cursores

Un cursor es un simbolo que muestra la posicion actual de un puntero. Un cursor es tambien uno de los recursos que almacena la informacion de tamaño, forma y color del cursor. Se puede especificar el cursor asociado a una ventana mediante el identificador de cursor (cursor ID).

1.17 Fuentes

Una fuente es el recurso en el que la informacion de cada fuente (tipo de letra) se almacena. Especificando el identificador de fuente (font ID), se puede seleccionar la fuente del texto.


Previous Next Table of Contents