Source: http://docplayer.es/2700080-La-web-como-plataforma-de-ejecucion.html
Timestamp: 2017-12-17 03:00:28+00:00

Document:
LA WEB COMO PLATAFORMA DE EJECUCIÓN - PDF
LA WEB COMO PLATAFORMA DE EJECUCIÓN
Download "LA WEB COMO PLATAFORMA DE EJECUCIÓN"
Pascual Ríos Blanco
1 UNIVERSIDAD DE DEUSTO LA WEB COMO PLATAFORMA DE EJECUCIÓN ADECUADA PARA LA PRESENTACIÓN EXACTA Y PRECISA DE CONTENIDOS AUDIOVISUALES Y EL REGISTRO DE LA INTERACCIÓN DEL USUARIO Tesis doctoral presentada por Pablo Garaizar dentro del Programa de Doctorado en Ingeniería Informática y Telecomunicación Dirigida por Dr. Diego López-de-Ipiña y Dr. Miguel Ángel Vadillo
3 UNIVERSIDAD DE DEUSTO LA WEB COMO PLATAFORMA DE EJECUCIÓN ADECUADA PARA LA PRESENTACIÓN EXACTA Y PRECISA DE CONTENIDOS AUDIOVISUALES Y EL REGISTRO DE LA INTERACCIÓN DEL USUARIO Tesis doctoral presentada por Pablo Garaizar dentro del Programa de Doctorado en Ingeniería Informática y Telecomunicación Dirigida por Dr. Diego López-de-Ipiña y Dr. Miguel Ángel Vadillo El doctorando Los directores Los directores Bilbao, Enero de 2013
4 La Web como plataforma de ejecución adecuada para la presentación exacta y precisa de contenidos audiovisuales y el registro de la interacción del usuario Autor: Pablo Garaizar Director: Diego López-de-Ipiña Director: Miguel Ángel Vadillo Puede encontrarse información acerca de esta tesis doctoral y los trabajos derivados de la misma en la siguiente dirección web: Impreso en Bilbao Primera edición, enero de 2013
5 A Silvia, Peio y Lorea. Os debo cada minuto.
7 Abstract During the last decade of the 20 th century and the first decade of the 21 st century, the Web has evolved into the most prominent platform for developing applications. Nowadays, it is difficult to find a service not provided by the Web. The apparent simplicity of an architecture based on a small set of well-known methods has been able to cover a myriad of different scenarios. The maturity of the Web has been made possible by the latests technological advances in its infrastructure and user agents. The real-time, ubiquitous, and constantly updated Web is now a reality for most of the web services. However, not all of them have been properly ported to this new execution environment. There are applications not intended to run as fast as possible or instantaneously, but to meet strict temporal constraints. It is necessary to analyze the accuracy and precision of the timing mechanisms provided by the web techonologies in order to enable real-time computing on the Web. The applications needed to conduct experiments in fields like vision, audition or implicit learning are a particular case of the real-time computing paradigm. Because of their strict temporal constraints in the presentation of multimedia content and the record of user interaction, and because of the lack of evidence for the real-time computing compliancy of the Web, these applications have been traditionally developed using offline technologies. Nevertheless, the recent advances in standarization and performance of web user agents would support the feasibility of developing this kind of applications.
8 With the aim of elucidating this issue, an analysis of the accuracy and precision of the web technologies has been performed. Both proprietary and standard web technologies have been compared with offline specialized software. As a result of this analysis, we conclude that a combination of the appropriate web technologies allows developing web applications under strict temporal constraints. Using this combination of standard technologies we have developed Labclock Web, a web version of the Libet s clock experimental paradigm, very popular among cognitive scientists. In order to have an offline equivalent of Labclock Web, we have developed Labclock, a Windows native application that provides the same functionality. The accuracy and precision of both applications was tested using the proper measurement equipment. Moreover, a large set of participants (N > 300) took part in 6 experiments studying the temporal binding effect conducted using Labclock and Labclock Web. Moreover, a set of tools designed to evaluate the accuracy and precision of extant timing mechanisms in a web execution environment is provided. The insight gathered through the previous analyses and the experiments is summarized in a brief list of best practices to develop web applications under strict temporal constraints.
9 Resumen A lo largo de la última década del siglo XX y la primera del siglo XXI la Web ha evolucionado hasta postularse como la principal plataforma de ejecución de aplicaciones. La aparente sencillez de una arquitectura basada en un conjunto reducido de operaciones bien conocidas ha sido capaz de cubrir un rango tan amplio de escenarios que resulta difícil encontrar un servicio que la Web no pueda proporcionar. Esta evolución ha sido posible gracias a los avances tecnológicos tanto en su infraestructura como en lo que respecta a sus agentes de usuario. La Web en tiempo real, ubicua y permanentemente actualizada es una realidad para la gran mayoría de servicios. Sin embargo, no todos ellos han sido convenientemente portadas a este entorno de ejecución. Existen aplicaciones en las que lo fundamental no es maximizar su velocidad de ejecución, sino cumplir con unos estrictos requisitos de exactitud y precisión temporal. Para que este tipo de aplicaciones pueda desplegarse en la Web, es necesario comprobar que las tecnologías de desarrollo disponibles son capaces de proporcionar los mecanismos de temporización adecuados, que permitan implementar no solo aplicaciones en tiempo real, sino también aplicaciones de tiempo real. Un caso particular de este tipo de aplicaciones lo constituyen las aplicaciones que requieren la presentación exacta y precisa de contenidos audiovisuales y el registro de la interacción del usuario, propias de la experimentación en visión, audición o aprendizaje implícito, entre muchas otras áreas. Debido a la falta de evidencia favorable a su despliegue en la Web hasta la fecha, estas aplicaciones han sido mayoritariamente desarrolladas con tecnologías offline. Sin embargo, los recientes avances tecnológicos permiten plantear la viabilidad de implementar
10 una aplicación con estrictos requisitos de exactitud y precisión temporal mediante tecnologías web estándar. Con el objetivo de dilucidar esta cuestión, se ha llevado a cabo un estudio acerca de la exactitud y precisión de este tipo de tecnologías, comparándolas tanto con las alcanzables a través de software especializado, como mediante el uso de tecnologías web propietarias. Como resultado de este estudio, se concluye que existe una combinación viable de tecnologías estándar que permite el desarrollo de aplicaciones web con estrictos requisitos temporales. Empleando esta combinación de tecnologías web estándar, se ha desarrollado una aplicación que implementa el paradigma experimental del reloj de Libet ampliamente utilizado en ciencias cognitivas, a través del cual es posible medir el efecto de unión temporal. Con el fin de obtener una aplicación equivalente de referencia, se ha hecho lo propio a través de las tecnologías nativas adecuadas. El correcto funcionamiento de ambas aplicaciones se ha evaluado tanto mediante equipamiento de precisión como a través de seis experimentos en los que se contó con la participación de un nutrido grupo de sujetos experimentales (N > 300). A partir de los resultados obtenidos, se corrobora la viabilidad de la Web como plataforma de ejecución adecuada para la presentación exacta y precisa de contenidos audiovisuales y el registro de la interacción del usuario. Fruto de estos desarrollos y de los estudios previos, se proporciona a la comunidad de desarrolladores web un compendio de recomendaciones para el desarrollo de aplicaciones web con estrictos requisitos de exactitud y precisión temporal, así como un conjunto de herramientas destinadas a la evaluación de la exactitud y precisión de los mecanismos de temporización presentes en cada caso.
11 Laburpena XX. mendearen azken hamarkadan eta XXI.aren lehengoaren zehar Web-a aplikazioen egikaritze-plataforma nagusia bilakatu arte garatu da. Oso ezagunak diren eragiketa multzo murriztuan oinarritutako arkitekturaren ageriko sinpletasuna agertoki tarte hain zabala betetzeko gai izan da, ezen Web-ak hornitu ez dezakeen zerbitzuren bat topatzea zaila gertatzen dela. Eboluzio hau, bai azpiegitura zein erabiltzaile agenteei dagokien aurrerakuntza teknologikoei esker izan da. Nonahiko eta etengabe gaurkotutako denbora errealeko Web-a, zerbitzu gehienetarikoentzat errealitatea da. Hala ere, hauek guztiak ez dira egikaritze-ingurune honetara egoki eramanak izan. Bere egikaritzeabiadura maximizatu beharrean, denbora-zehaztasun eta doitasun baldintza zorrotzak betetzea lehenesten duten aplikazioak egon badaude. Aplikazio mota hau Web-ean zehar zabal dadin, garapen-teknologia erabilgarriak denboralizazio-mekanismo egokiak hornitzeko gai direla frogatu behar da, eta denbora errealeko aplikazioak ez ezik, denbora errealerako aplikazioak ere inplementatzea onar dezaketela. Aplikazio mota honen kasu berezietako bat, ikus-entzunezko edukien aurkezpen zehatz eta doia zein erabiltzailearen erregistroa behar duten aplikazioak dira; arlo askoren artean, ikusmen, entzumen edo ikaste inplizituaren esperimentazioari dagozkionak. Orain arte, Web-ean hedatze aldeko nabaritasun eza dela eta, aplikazio hauek, gehienbat, offline teknologiez garatuak izan dira. Hala ere, berriki gertatutako aurrerakuntza teknologikoek, web teknologi estandarren bidezko denborazehaztasun eta doitasun baldintza zorrotzak betetzen dituen aplikazioaren inplementazioaren bideragarritasuna proposatzeko aukera ematen dute.
12 Auzi hau argitzeko asmoz, teknologia mota hauen zehaztasun eta doitasunari buruzko ikerketa burutu da, bai xede bereziko softwarearen bidez lortutakoekin zein web teknologia jabedunen erabilerarekin erkatuz. Ikerketa honen emaitzaren ondorioz, denbora-betekizun hertsidun web aplikazioen garapena ahalbidetzen duten teknologia estandarren eskema bideragarri bat dagoela ondorioztatzen da. Web teknologia estandar hauen eskema erabiliz, zientzia kognitiboetan asko erabiltzen den Libet erlojuaren paradigma esperimentala inplementatzen duen aplikazioa garatu da, zeinaren bidez denbora-lotura efektua neurtzea posiblea da. Erreferentziazko aplikazio baliokidea lortzeko helburuarekin, egokiak diren jatorrizko teknologien bidez berdin jokatu da. Aplikazio biren funtzionamendu zuzena ebaluatu da, bai zehaztasun ekipamenduaren bidez, bai sei esperimentuen bitartez, non subjektu esperimental-talde joriaren (N > 300) parte-hartzea izan zen. Lortutako emaitzetatik abiatuz, Web-a ikus-entzunezko edukien aurkezpen zehatz eta doirako eta erabiltzailearen interakzioaren erregistrorako egikaritze-plataforma egokia bezala bideragarria dela egiaztatzen da. Garapen hauen eta aurretiko ikerketen etekina dela medio, web garatzaileen komunitateari, denbora- zehaztasun eta doitasun baldintza zorrotzak bete behar dituzten web aplikazioen garapenerako gomendio sintesiaz hornitzen zaio, hala nola, kasu bakoitzaren denboralizaziomekanismoen zehaztasun eta doitasunaren ebaluazioari zuzendutako tresna multzoa.
13 Agradecimientos A pesar de que una tesis doctoral pueda parecer un trabajo muy individual, nunca es así. Para poder llegar a rozar las fronteras del conocimiento es necesario que alguien te indique el camino. En la mayoría de casos la ayuda no se limita a la mera indicación, sino que ese camino es compartido y, gracias a la compañía, enriquecido con pequeñas excursiones por los alrededores. Por este motivo, se me hace necesario dedicar unas líneas de agradecimiento a algunas de las personas que han hecho posible este trabajo. En primer lugar, gracias a Diego y Miguel Ángel, mis guías de viaje, siempre dispuestos a discutir cualquier asunto relacionado con la tesis, a corregir y mejorar detalles, a ayudarme a convertirme en un investigador. Una de las pocas certezas que tengo a este respecto es el indudable acierto que supuso solicitar vuestra supervisión. No suelo comentarlo con vosotros, pero os estoy tremendamente agradecido. En segundo lugar, a mis compañeros de viaje. Doctorandos y doctores de Labpsico y DeustoTech Learning que habéis hecho que esto sea realmente divertido. En la medida de lo posible, claro, que el título de doctor exige importantes renuncias y mucha dedicación. Echo la vista atrás y me doy cuenta de que haber coincidido con vosotros ha sido un pequeño regalo que la vida académica me ha hecho. Muchas gracias Helena, por haberme permitido formar parte del mejor grupo de investigación que he conocido. Muchas y divertidas anécdotas con vosotros harán que recuerde estos años con especial cariño. En tercer lugar, a mi familia. Gracias a mi padre, por inculcarme su determinación y el valor del esfuerzo. Gracias a mi madre, por enseñarme
14 todo lo demás, ya que sus ganas de enseñar nunca han distinguido lugares ni momentos. Gracias a Juliana por demostrarme que las únicas fronteras que existen son las que cada uno dibuje en su mente. Gracias a Luzia por haberme acompañado en tantas locuras tecnológicas domésticas, desde Fidonet a GNU/Linux, pasando por el IRC y otras aventuras. El mundo es un lugar mucho más interesante después de todas las claves que me habéis dado para conocerlo mejor. Por último, a Silvia, Peio y Lorea. Os he tenido muy presentes durante todo este tiempo. Las renuncias a las que hacía mención antes han sido compartidas, y eso me apena. La parte buena es que este esfuerzo conjunto nos ha supuesto una prueba y la hemos superado. Podría escribir muchas más cosas para agradeceros toda vuestra dedicación, pero creo que es mejor demostrároslo con hechos y no con palabras. Tenemos toda la vida por delante para ello. Muchas gracias, Pablo Garaizar Enero de 2013
15 Índice general Índice de figuras Índice de tablas Índice de listados XVII XXI XXVI 1. Introducción Motivación y contexto La Web como plataforma La ciencia en la Web Precisión y exactitud en la Web Dominio de aplicación Hipótesis y objetivos Metodología de investigación Estructura del documento Antecedentes Consideraciones acerca de los usuarios de la Web Análisis de la precisión y exactitud del hardware empleado Teclados Ratones Pantallas táctiles Monitores Audio Temporizadores XI
16 ÍNDICE GENERAL 2.3. Análisis de la precisión y exactitud de los mecanismos de temporización disponibles Temporizadores Funciones de tiempo Análisis de la precisión y exactitud del software especializado Análisis de la precisión y exactitud de tecnologías web Conclusiones Análisis de tecnologías para la presentación exacta y precisa de contenidos audiovisuales Análisis del contenido visual Metodología y equipamiento Tecnologías offline Descripción de las tecnologías analizadas Procedimiento Resultados Conclusiones Tecnologías online clásicas Descripción de las tecnologías analizadas Procedimiento Análisis previo para Flash Resultados Conclusiones Tecnologías online modernas Descripción de las tecnologías analizadas Procedimiento Análisis previo de temporizadores Resultados Conclusiones Análisis del contenido auditivo Metodología y equipamiento Procedimiento Resultados XII
17 ÍNDICE GENERAL Conclusiones Conclusiones generales Análisis de tecnologías para el registro preciso de la interacción del usuario Generación de la interacción de usuario Uso de participantes voluntarios Uso de hardware especializado Uso de hardware común Uso de software especializado Procedimiento Metronome LKM Logkeys X-Window Resultados Conclusiones Conclusiones generales Desarrollo de una aplicación experimental con presentación exacta y precisa de contenidos audiovisuales y registro de la interacción del usuario El paradigma experimental del reloj de Libet Metodología Labclock Labclock Web Experimentación cognitiva empleando Labclock y Labclock Web Experimento A: unión temporal con demoras de 1 y 500 ms y juicio de decisión con tecnologías offline Experimento B: unión temporal con demoras de 1 y 500 ms y juicio de acción con tecnologías offline Experimento C: unión temporal con demoras de 1 y 500 ms y juicio de acción con tecnologías web en Internet Experimento D: unión temporal con demoras de 1 y 500 ms y juicio de acción con tecnologías web en el laboratorio 167 XIII
18 ÍNDICE GENERAL Experimento E: unión temporal con demoras de 10 y 1000 ms y juicio de decisión con tecnologías offline Experimento F: unión temporal con demoras de 10 y 1000 ms y juicio de acción con tecnologías web en el laboratorio Conclusiones generales Recomendaciones de desarrollo web para aplicaciones con estrictos requisitos temporales El entorno de ejecución de los agentes de usuario web Recomendaciones de desarrollo web Velocidad frente a exactitud y precisión Recomendaciones genéricas Mejora del uso de la red de comunicaciones Mejoras del acceso al árbol DOM Mejora del código JavaScript Recomendaciones específicas para la presentación exacta y precisa de contenidos audiovisuales y el registro de la interacción del usuario Herramientas Análisis de la exactitud y precisión temporal con TickTackJS y AllanJS Desarrollo dirigido por pruebas o comportamientos Análisis del rendimiento Conclusiones Conclusiones Resumen del proceso de investigación Resultados de la investigación Aplicaciones y limitaciones de la investigación Líneas futuras de trabajo Consideraciones finales A. Metronome LKM 225 XIV
19 ÍNDICE GENERAL B. Propuesta de mejora para marcas temporales en eventos DOM 229 B.1. Propuesta inicial B.2. Casos de uso B.3. Implementación C. Configuración de experimentos con Labclock y Labclock Web 233 C.1. Labclock C.1.1. Fichero de configuración general C.1.2. Ficheros de configuración de experimentos C.1.3. Ficheros de resultados C.2. Labclock Web C.2.1. Ficheros de configuración de experimentos C.2.2. Ficheros de resultados Bibliografía 243 XV
21 Índice de figuras 1.1. Metáfora de la diana para comprender los conceptos de exactitud, precisión y resolución Metodología de investigación Entidades en una situación de interacción entre un usuario y una aplicación web Evolución del porcentaje en cuota de mercado de los principales agentes de usuario web entre 2008 y Tiempo de refresco y señal V-SYNC Proceso de dibujado con doble-buffer Configuración de temporizadores en SuperLab Plan de trabajo para demostrar la hipótesis de partida The Black Box Toolkit, conectores delanteros Resultados del test timebyframes en PsychoPy Elementos de prueba y medición en el análisis del contenido visual a través del Black Box Toolkit Transiciones no graduales de negro a blanco repetidas empleadas en las pruebas para t = 1000, 500, 200, 100, 50 y 16,667 ms Modos de temporización en E-Prime y su efecto en presentaciones con retardos Distribución de los errores de temporización medidos XVII
22 ÍNDICE DE FIGURAS 3.7. Marcos perdidos por cada condición empleando Psychopy sobre Windows 7 Professional 32-bit edition y Ubuntu LTS con un núcleo Linux realtime Evolución del uso de diferentes tecnologías web de cliente en Internet Número de marcos perdidos por serie para las animaciones en Flash con cada mecanismo de temporización Número de marcos perdidos por serie para las animaciones en GIF89a Número de marcos perdidos por serie para las animaciones con SVG y SMIL y con CSS Animations Resumen de los resultados obtenidos en las pruebas con tecnologías web modernas Elementos de prueba y medición en el análisis del contenido auditivo Comparativa entre los resultados obtenidos por la Audio Data API y el elemento estándar de HTML5 en Mozilla Firefox Comparativa entre los resultados obtenidos por la Web Audio API y el elemento estándar de HTML5 en Google Chrome Relación entre los diferentes momentos relevantes dentro del paradigma experimental del reloj de Libet Esfera del reloj de Libet y su punto rotatorio Marcos clave de las animaciones de alta velocidad para Labclock y Labclock Web Flujo de ejecución de Labclock Solicitud al usuario de un juicio de acción tras la presentación de un ensayo en Labclock y Labclock Web Experimento A: comparación entre las estimaciones en los juicios para los ensayos con demora corta (1 ms) frente a los ensayos con demora larga (500 ms) Experimento B: comparación entre las estimaciones en los juicios para los ensayos con demora corta (1 ms) frente a los ensayos con demora larga (500 ms) XVIII
23 ÍNDICE DE FIGURAS 5.8. Experimento C: comparación entre las estimaciones en los juicios para los ensayos con demora corta (1 ms) frente a los ensayos con demora larga (500 ms) Experimento D: comparación entre las estimaciones en los juicios para los ensayos con demora corta (1 ms) frente a los ensayos con demora larga (500 ms) Experimento E: comparación entre las estimaciones en los juicios para los ensayos con demora corta (10 ms) frente a los ensayos con demora larga (1000 ms) Experimento F: comparación entre las estimaciones en los juicios para los ensayos con demora corta (10 ms) frente a los ensayos con demora larga (1000 ms) Diagrama de tecnologías de la Web por el W3C Diagrama de tecnologías de los agentes de usuario web por Sivonen (2009) Uso de temporizadores en JavaScript y su relación con el hilo de actualización de la interfaz de usuario Conjunto de marcas temporales estándares de Javascript obtenidas mediante TickTackJS en Internet Explorer 8 sobre Windows XP Conjunto de marcas temporales con la función Date.now, con la propiedad currenttime del contexto de audio de la Web Audio API y con la función de tiempo de alta resolución chrome.interval obtenidas mediante TickTackJS en Google Chrome 17 sobre GNU/Linux Conjunto de 1000 marcas temporales con la función Date.now y la función de tiempo de alta resolución chrome.interval obtenidas mediante TickTackJS en Google Chrome 17 sobre GNU/Linux Histogramas de las marcas temporales obtenidas mediante el uso de setinterval y el uso de animaciones CSS en Google Chrome 17 sobre GNU/Linux XIX
24 ÍNDICE DE FIGURAS 6.8. Gráfico sigma-tau de la desviación de Allan modificada, la desviación de tiempo y la desviación Hadamard para una muestra de mediciones Evolución del porcentaje en cuota de mercado de los principales sistemas operativos móviles entre 2008 y Evolución del porcentaje en cuota de mercado de los principales agentes de usuario web móviles entre 2010 y XX
25 Índice de tablas 2.1. Resumen de las API para la creación de temporizadores en sistemas Windows Resumen de las API para la creación de temporizadores en sistemas compatibles con UNIX (UNIX-like) Funciones de la especificación POSIX para relojes y temporizadores Relojes de referencia disponibles para la creación de temporizadores POSIX Resumen de las API para el uso de funciones de tiempo en sistemas Microsoft Windows y compatibles con UNIX Resolución (en µs) de funciones de tiempo en sistemas Microsoft Windows Características de los principales paquetes de software especializado en experimentación Llamadas a las API de Win32 de E-Prime Resumen de las limitaciones de las principales tecnologías web Marcos perdidos por condición en las pruebas de tecnologías offline Estadísticos descriptivos de las 50 primeras medidas de cada una de las 5 series de medición (250 en total por cada condición) Estadísticos descriptivos del número de marcos perdidos para las animaciones con GIF89a Estadísticos descriptivos del número de marcos perdidos para las animaciones con Flash XXI
26 ÍNDICE DE TABLAS 3.5. Estadísticos descriptivos del número de marcos perdidos para las animaciones con Java Estadísticos descriptivos del número de marcos perdidos para las animaciones con Silverlight Estadísticos descriptivos del número de marcos perdidos para distintas combinaciones de tecnologías web sobre Google Chrome 17 en Windows Estadísticos descriptivos del número de marcos perdidos para las animaciones con CSS Animations Estadísticos descriptivos del número de marcos perdidos para las animaciones con SVG y SMIL Estadísticos descriptivos del número de marcos perdidos para las animaciones con Canvas 2D Estadísticos descriptivos del número de marcos perdidos para las animaciones con SVG y JavaScript Estadísticos descriptivos del número de marcos perdidos para las animaciones con WebGL Resumen de los resultados obtenidos en las pruebas realizadas en los diferentes agentes de usuario sobre distintos sistemas operativos Estadísticos descriptivos de los errores temporales en ms en la presentación de contenido auditivo mediante el elemento audio de HTML Estadísticos descriptivos de los errores temporales en ms en la presentación de contenido auditivo mediante la Audio Data API en Mozilla Firefox Estadísticos descriptivos de los errores temporales en la presentación de contenido auditivo mediante la Web Audio API en Google Chrome Estadísticos descriptivos de los errores temporales en el registro de eventos de teclado mediante Logkeys X-Window (en ms) XXII
27 ÍNDICE DE TABLAS 4.2. Estadísticos descriptivos de los errores temporales en el registro de eventos de teclado mediante eventos DOM en Google Chrome 17 (en ms) Estadísticos descriptivos de los errores temporales en el registro de eventos de teclado mediante eventos DOM en Mozilla Firefox 10 (en ms) Listado de experimentos realizados empleando Labclock y Labclock Web Periodos mínimos (en ms) de los temporizadores en JavaScript en función del agente de usuario y sus condiciones de ejecución Monotonicidad, granularidad y coste de llamada para muestras de un millón de marcas de tiempo obtenidas mediante diferentes mecanismos en Google Chrome 17 sobre GNU/Linux Tipos de varianza y sus características Clasificación de las distintas tecnologías offline y online según el número de marcos perdidos en las pruebas realizadas con intervalos superiores a 50 ms XXIII
29 Índice de listados 2.1. Consulta repetida en teclados AT-PS/ Lectura del TSC en NASM (The Netwide Assembler) para GNU / Linux Comprobación del tiempo transcurrido al hacer una división de coma flotante Definición de items en un fichero de configuración para DMDX / DMASTR Configuración de la transición no gradual de negro a blanco para DMDX Control del flujo de ejecución de un experimento en PsychoPy definido en XML Animación declarativa empleando SVG y SMIL Animación declarativa empleando CSS Animations Esquema de animación procedimental empleando temporizadores de JavaScript Esquema de animación procedimental empleando la API para el control temporal de animaciones procedimentales Definición mediante una animación CSS de una transición no gradual de negro a blanco repetida indefinidamente Definición mediante SVG con SMIL de una transición no gradual de negro a blanco repetida indefinidamente Definición mediante SVG con SMIL de una transición no gradual de negro a blanco repetida un número finito de veces a través del desenrollamiento de bucle XXV
30 ÍNDICE DE LISTADOS Escritura de audio desde JavaScript a través de la Web Audio API Generación del tono de prueba mediante la Audio Data API Configuración de la generación y temporización de contenido auditivo mediante la Web Audio API Definición del método now en la API High Resolution Time Animación en CSS del punto rotatorio en Labclock Web Ejemplo de temporizador que emplea un generador en JavaScript creado a través de la palabra reservada yield Obtención de muestras de una función de tiempo y un temporizador empleando TickTackJS Uso del simulador temporal en una especificación en Jasmine para TickTackJS Applet en Java para exponer la función de tiempo System.nanoTime a JavaScript A.1. Código fuente de Metronome LKM C.1. Fichero de configuración general de Labclock C.2. Fichero DTD con la definición del formato de ficheros de configuración de Labclock C.3. Fichero de configuración de un experimento en Labclock Web XXVI
31 In programming, the hard part isn t solving problems, but deciding what problems to solve Paul Graham CAPÍTULO 1 Introducción Alo largo de la última década, la Web se ha convertido en la plataforma preferente para el despliegue de aplicaciones. Son varios los avances que han propiciado esta paulatina transición de un ecosistema tecnológico centrado en el ordenador personal y las aplicaciones de escritorio a una total integración en la vida cotidiana de los usuarios de los servicios ofrecidos en la Web, con independencia de dispositivo, momento o lugar. Servidores, infraestructuras, plataformas y aplicaciones se ofrecen como servicios que pueden ser consumidos sin requerir el conocimiento de qué recursos utilizan o cómo están implementados. Esta abstracción de la complejidad subyacente ha liberado a los clientes Web de su implementación y ha permitido centrar sus esfuerzos en el desarrollo de nuevos estándares que equiparen su funcionalidad a la ofrecida por aplicaciones nativas de escritorio. Sin embargo, aún quedan varias cuestiones que dilucidar en este sentido. Una de ellas, la viabilidad de la Web como plataforma de ejecución de aplicaciones con altos requisitos temporales, es a la que se dedica el contenido de este estudio. En la sección 1.1 del presente capítulo se describen la motivación y el contexto que dan origen a esta tesis doctoral. Su hipótesis de partida y objetivos son definidos en la sección 1.2. Asimismo, en la sección 1.3 se detalla la metodología de investigación empleada. Finalmente, en la sección 1.4 se muestra la organización de este documento. 1
32 1. INTRODUCCIÓN 1.1 Motivación y contexto La Web como plataforma La Web entendida como una plataforma define los servicios que presta a través de una Arquitectura Orientada a la Web (Web Oriented Architecture, WOA, ver Hinchcliffe, 2008), una metodología de diseño y modelado que extiende la Arquitectura Orientada a Servicios (Service Oriented Architecture, SOA) a las aplicaciones web (Erl, 2004). WOA representa la información como recursos que serán gestionados por agentes de usuario web (navegadores) y servidores web a través de Transferencias de Estado Representacional (Representational State Transfer, REST). A pesar de que la definición inicial de REST describía un conjunto de principios de arquitectura de software (Fielding, 2000), actualmente se emplea para describir cualquier interfaz simple basada en un lenguaje de marcas extensible (extensible Markup Language, XML) y el protocolo de transferencia de hipertexto (Hyper-Text Transfer Protocol, HTTP). Simultáneamente a este desarrollo de la infraestructura de la Web, los agentes de usuario web han experimentado a su vez una gran transformación. En pocos años hemos pasado de una Web que puede ser navegada (mediante consultas hipertextuales y puntuales de información) a una Web que necesariamente ha de ser ejecutada. Los agentes de usuario web, por tanto, han dejado de ser navegadores de Internet y se han convertido en reproductores de aplicaciones web. Este cambio ha exigido que los principales creadores de agentes de usuario web (Google, Microsoft, Mozilla, Apple, Opera) proporcionen un entorno de ejecución acorde con las nuevas necesidades. Iniciativas como el Web Hypertext Application Technology Working Group (WHATWG) o el propio World Wide Web Consortium (W3C) están liderando la definición de nuevos estándares que den respuesta a este cambio de paradigma. El estándar HTML5 es el ejemplo más representativo de su trabajo, a través del cual se definen comportamientos propios de aplicaciones web tales como el almacenamiento local, el intercambio de mensajes entre documentos, la funcionalidad de arrastrar y soltar (drag & drop), la gestión del historial de navegación o el dibujado 2D en tiempo real, entre otras (Hickson, 2012a). Además de los esfuerzos puestos en HTML5, tanto el WHATWG como el W3C están definiendo nuevas especificaciones que permitirán a los agentes de usuario 2
33 1.1 Motivación y contexto web competir de igual a igual con las aplicaciones nativas de escritorio. En este sentido, interfaces de programación de aplicaciones (Application Programming Interfaces, API) como Web Storage, Web Sockets o Server-sent Events facilitan el intercambio de información entre aplicaciones web a través del acceso al almacenamiento local y la comunicación asíncrona respectivamente. Otras API como Web Workers proporcionan la posibilidad de delegar cálculos complejos que no requieran la interacción con la interfaz de usuario a hilos de ejecución en segundo plano, superando la restricción del hilo único de ejecución propia de JavaScript. Este contexto propicia la consideración de JavaScript como lenguaje de referencia para el desarrollo de aplicaciones web. No solamente debido a las nuevas funcionalidades disponibles desde JavaScript, sino también por la continua mejora del rendimiento que los desarrolladores de agentes de usuario web ofrecen en sus intérpretes, así como el creciente corpus de código JavaScript de calidad publicado. Las implementaciones del lado del servidor basadas en JavaScript (Server-Side JavaScript, SSJS) son la prueba fehaciente de que el lenguaje ha alcanzado su madurez y es capaz de ofrecer características distintivas. No es casual, por tanto, que el estándar HTML5 fuera inicialmente conocido como Web Applications 1.0 por el comité que lo definió dentro del WHATWG, ya que representa una clara apuesta por concebir la Web como una plataforma de aplicaciones La ciencia en la Web Desde su concepción a comienzos de los años 90, la Web pretendió aportar un entorno flexible y colaborativo en el que sus usuarios pudieran añadir nuevo contenido y enlazarlo libremente. El objetivo inicial fue el de ofrecer una plataforma de intercambio y generación de contenidos, una Web de lectura y escritura, la Read/Write Web, más allá de la mera transferencia de información digital (Berners-Lee y Cailliau, 1990). Sin embargo, no ha sido hasta la llegada de los medios sociales a comienzos de los años 2000 que esa intención se ha hecho realidad, en lo que varios autores han denominado Web 2.0 (DiNucci, 1999; OReilly, 2007) o Web Social (Hoschka, 1998). La Web 2.0 supone la evolución desde una 3
34 1. INTRODUCCIÓN red centrada en el intercambio de información ( las superautopistas de la información ) a un medio social en el que el contenido generado por los usuarios es crucial. Su éxito, con cientos de millones de usuarios compartiendo experiencias en las redes sociales más populares (v. gr., Facebook, Twitter, LinkedIn), está fuera de toda duda. Este progresivo proceso de socialización de la Web ha generado también grandes expectativas en el ámbito científico. Muchos investigadores han comenzado a la divulgar los resultados de sus investigaciones en Facebook o Twitter con efectos muy positivos (Eysenbach, 2011). El creciente interés por las publicaciones Open Access está en sintonía con ese afán de compartir el conocimiento. Al mismo tiempo, las redes sociales de investigadores (Academia.edu, Mendeley, ResearchID, SciLink, ResearchGate) permiten hacer explícitas muchas relaciones dentro de la comunidad académica y fomentar la colaboración. La Ciencia 2.0 no descarta el método científico tradicional pero propone completarlo con las posibilidades que brinda la Web 2.0 (Shneiderman, 2008). El carácter digital de la Web Social permite el registro pormenorizado de todas las interacciones en tiempo real propio del rigor experimental de un laboratorio y, al mismo tiempo, la interacción en un entorno natural en el que se da un amplio rango de relaciones. Los desarrolladores de las redes sociales proporcionan un gran número de API para que terceros puedan acceder de forma cómoda a esos datos e interactuar automáticamente. De la simple minería de datos cuantitativa pasamos a la minería de opiniones o sentimientos (Jansen, Zhang, Sobel, y Chowdury, 2009; Pang y Lee, 2008) mediante las que se pretende analizar cualitativamente lo que ocurre en las redes sociales (Reips y Garaizar, 2011). Si a esto le añadimos la posibilidad de conjugarlo con repositorios de datos públicos compartidos y relacionados sobre los que trabajar semánticamente (Berners-Lee, 2006), las inferencias automáticas que pueden realizarse serán más provechosas. Además del procesamiento automatizado de grandes cantidades de datos, la Web 2.0 puede verse desde los ojos de un investigador como un enorme laboratorio de experimentación (Nosek, 2005). Con solo acceder a una pequeña fracción del abrumador número de personas que utilizan las redes sociales, los investigadores son capaces de paliar la falta de poder estadístico a la hora de analizar efectos en el laboratorio, o acceder a muestras que por sus características especiales resultarían 4
35 1.1 Motivación y contexto inaccesibles de otra forma (Mangan y Reips, 2007; Vernberg, Snyder, y Schuh, 2005). En esta misma línea, un enfoque muy interesante es el aportado por la Ciencia Ciudadana (Citizen Science, ver Hand y cols., 2010), que pretende aprovechar el potencial humano y tecnológico de aficionados y gente ajena a la ciencia para llevar a cabo investigaciones científicas. La idea no es nueva (v. gr., el proyecto data de 1999), pero recientemente se ha aplicado a entornos similares a videojuegos (v. gr., FoldIt) con resultados asombrosos (Khatib y cols., 2011). Más allá del altruismo de la Ciencia Ciudadana, a través de sitios como Amazon Mechanical Turk los investigadores pueden contratar sujetos experimentales a bajo coste. A pesar de las reticencias iniciales que este enfoque pueda provocar (Downs, Holbrook, Sheng, y Cranor, 2010), son varios los estudios que equiparan su fiabilidad a los resultados obtenidos en el laboratorio (Buhrmester, Kwang, y Gosling, 2011; Paolacci, Chandler, y Ipeirotis, 2010; Snow, O Connor, Jurafsky, y Ng, 2008; Sprouse, 2011). La Web Semántica o Web de los Datos aporta a su vez nuevos escenarios para la ciencia. Si bien es cierto que la Web Semántica no ha conseguido el éxito esperado, propuestas más posibilistas como la de los Datos Enlazados (Linked Data, ver Berners-Lee, 2006) están logrando alcanzar una masa crítica de repositorios de datos públicos compartidos y relacionados sobre los que trabajar semánticamente. Actualmente son las ciencias de la vida (Biología y Medicina, principalmente) las que más provecho están sacando de estos repositorios compartidos (Pedersen, Pakhomov, Patwardhan, y Chute, 2007), pero las posibilidades son inmensas para otras ramas del saber. En definitiva, la Web ha dejado de ser un mero canal de difusión de hallazgos científicos para pasar a ser una plataforma sobre la que poner a prueba nuevas teorías científicas o desplegar experimentos de forma masiva Precisión y exactitud en la Web Considerando las enormes posibilidades que brinda la Web a la ciencia, parece razonable pensar que en los próximos años asistiremos a una migración gradual hacia la Internet de la experimentación científica. Sin embargo, así como muchos paradigmas experimentales son fácilmente replicables con tecnologías web, existen 5
36 1. INTRODUCCIÓN otros cuyos requisitos son tan exigentes que dificultan su implementación en la Web. Tal es el caso de aquellos paradigmas que requieren la presentación exacta y precisa de contenidos audiovisuales o el registro ajustado de la interacción de usuario. Alta exactitud baja precisión Alta precisión baja exactitud Alta exactitud baja resolución Figura 1.1: Metáfora de la diana para comprender los conceptos de exactitud, precisión y resolución. Dado que habitualmente y de forma errónea son empleados como sinónimos, conviene definir varios conceptos relacionados con la precisión en la temporización: la exactitud (accuracy), la precisión (precision) y la resolución (resolution). La exactitud tiene que ver con la distancia o diferencia entre el valor real y el valor medido. La precisión tiene que ver con el mutuo acuerdo entre diferentes mediciones realizadas con el mismo mecanismo de medida. La resolución tiene que ver con la unidad de medida más pequeña que el temporizador puede representar. Así pues, utilizando el tiro con arco como símil, podríamos decir que un tirador dispara con gran exactitud si la distancia de sus flechas al centro de la diana es pequeña, a pesar de que puedan estar repartidas irregularmente. Otro tirador podría ser menos exacto (mayor distancia al centro de la diana), pero más preciso si todos sus disparos estuvieran separados entre sí por una distancia pequeña (alto acuerdo entre diferentes disparos). La resolución tendría que ver con el grosor de las flechas, ya que si consideramos que el centro de la diana tiene un diámetro de 10 mm, un tirador que dispare flechas de 20 mm de grosor no podrá dar en el blanco sin salirse del centro de la diana (ver figura 1.1). Volviendo al caso de los mecanismos de temporización, pueden darse todas las combinaciones, existiendo aquellos que son muy exactos y 6
37 1.1 Motivación y contexto precisos pero su baja resolución los descarta para mediciones de intervalos cortos; aquellos que tienen una resolución adecuada y buena precisión, pero debido a que su valor se actualiza poco frecuentemente, su exactitud es muy baja; o aquellos que teniendo la resolución adecuada y alta exactitud, no gozan de buena precisión debido a los costes de invocación asociados a su uso Dominio de aplicación Dentro de los paradigmas experimentales propios de la psicología o las neurociencias es habitual encontrar aplicaciones con elevados requisitos en lo referente a la presentación exacta y precisa de contenidos audiovisuales o el registro ajustado de la interacción de usuario. Tal es el caso de las aplicaciones taquistoscópicas (Mapou, 1982; Mckinney, MacCormac, y Welsh-Bohmer, 1999) o del reloj de Wundt, posteriormente conocido como el reloj de Libet (Libet, Gleason, Wright, y Pearl, 1983; Moore y Obhi, 2012), que exigen presentaciones y animaciones de contenidos visuales con periodos de tiempo muy específicos. En lo que respecta a su desarrollo, la llegada de la informática al laboratorio ha provocado la sustitución del instrumental experimental por software especializado (Stahl, 2006). Así, este tipo de procedimientos experimentales especializados han seguido la evolución del resto aplicaciones de propósito general a lo largo de los sucesivos cambios de paradigma tecnológico que se han ido produciendo, desde las soluciones basadas en microcomputadores (Mapou, 1982) hasta los sistemas operativos multitarea más comunes (Microsoft Windows, ver K. Forster y Forster, 2003; Apple Mac OS, ver MacInnes y Taylor, 2001; o GNU/Linux, ver Stewart, 2006), pasando por los sistemas operativos monotarea (Segalowitz, 1987). Sin embargo, las limitaciones de la Web para proporcionar un entorno de ejecución de cliente apropiado, entre las que destacan la falta de precisión, exactitud y resolución de los mecanismos de temporización disponibles, han dificultado hasta la fecha su despliegue en el marco de este nuevo paradigma computacional. Nos encontramos, por tanto, ante un cruce de caminos interesante. Por un lado, los últimos avances en infraestructura y estándares han convertido a la Web en la plataforma de ejecución por excelencia. La experimentación científica no ha sido ajena a estos avances y está aprovechando las posibilidades que brinda la Web en 7
38 1. INTRODUCCIÓN este sentido. Por otro lado, las limitaciones previas de las tecnologías web clásicas en cuanto a exactitud, precisión y resolución han dificultado el despliegue en la Web de aplicaciones con elevados requisitos temporales. La reciente eclosión de las tecnologías web estándar y su continua y decidida optimización por parte de los proveedores de agentes de usuario web animan a pensar que la Web ha alcanzado un grado de madurez suficiente como para que este tipo de aplicaciones pueda desplegarse en Internet con garantías. 1.2 Hipótesis y objetivos Teniendo en cuenta lo comentado en la sección anterior, la hipótesis de este trabajo de investigación se enuncia de la siguiente manera: Hipótesis. La Web es una plataforma de ejecución adecuada para la presentación exacta y precisa de contenidos audiovisuales y el registro de la interacción del usuario. Con el objetivo de poder validar esta hipótesis, se hace necesario dar respuesta a las siguientes cuestiones de investigación: Cuestión 1. Cuál es el grado de exactitud y precisión en la presentación de contenidos audiovisuales empleando software especializado? Cuestión 2. Cuál es el grado de precisión y exactitud en la presentación de contenidos audiovisuales empleando tecnologías web propietarias sobre agentes de usuario modernos? Cuestión 3. Cuál es el grado de precisión y exactitud en la presentación de contenidos audiovisuales empleando tecnologías web estándar sobre agentes de usuario modernos? Cuestión 4. En qué medida estos tres conjuntos de tecnologías presentan diferencias en cuanto a la exactitud y precisión en la presentación de contenidos audiovisuales? Cuestión 5. Cuál es el grado de precisión y exactitud que puede lograrse en el registro de la interacción mediante tecnologías web estándar? 8
39 1.2 Hipótesis y objetivos Cuestión 6. A tenor de los resultados obtenidos anteriormente, existen aplicaciones con elevados requisitos de exactitud y precisión en la presentación de contenidos audiovisuales y el registro de la interacción del usuario que puedan implementarse empleando tecnologías web estándar? Cuestión 7. Si la cuestión anterior resulta ser cierta, es una aplicación de este tipo implementada mediante tecnologías web estándar capaz de obtener resultados equivalentes a una aplicación offline implementada a través de los mecanismos de temporización óptimos disponibles en el sistema? Cuestión 8. Finalmente, en el caso de que exista evidencia experimental que corrobore la cuestión anterior, sería posible definir unas recomendaciones de desarrollo para la implementación de una aplicación con elevados requisitos de exactitud y precisión en la presentación de contenidos audiovisuales y el registro de la interacción del usuario empleando tecnologías web estándar? Para responder estas cuestiones, y por tanto poder validar la hipótesis enunciada, es necesaria la consecución de los siguientes objetivos operativos: Objetivo Operativo 1. Analizar el grado de exactitud y precisión real en la presentación de contenidos audiovisuales del software especializado más empleado en experimentación (E-Prime, DmDX y PsychoPy) mediante el equipamiento de precisión adecuado. Objetivo Operativo 2. Analizar el grado de exactitud y precisión real en la presentación de contenidos audiovisuales de las tecnologías web propietarias más comúnmente utilizadas (GIF89a, Java, Adobe Flash y Microsoft Silverlight). Objetivo Operativo 3. Analizar el grado de exactitud y precisión real en la presentación de contenidos audiovisuales de las tecnologías web estándar (CSS, SMIL, SVG, Canvas, WebGL, HTML5, Web Audio, Audio Data). Objetivo Operativo 4. Seleccionar las tecnologías web que optimicen la exactitud y la precisión en la presentación de contenidos audiovisuales, tratando de minimizar el consumo de recursos y requerir el menor número posible de complementos. Objetivo Operativo 5. Analizar el grado de exactitud y precisión real en el registro de la interacción del usuario de las tecnologías web estándar. 9
40 1. INTRODUCCIÓN Objetivo Operativo 6. Definir el grado de exactitud y precisión alcanzable a través de tecnologías web estándar en la presentación de contenidos audiovisuales y el registro de la interacción del usuario. Objetivo Operativo 7. Desarrollar una aplicación con elevados requisitos de exactitud y precisión en la presentación de contenidos audiovisuales y el registro de la interacción del usuario empleando los mecanismos de temporización óptimos disponibles en el sistema. Objetivo Operativo 8. Desarrollar una aplicación equivalente a la descrita en el objetivo operativo 7 empleando el conjunto de tecnologías web estándar definido en el objetivo operativo 6. Objetivo Operativo 9. Validar las aplicaciones desarrolladas en los objetivos operativos 7 y 8, tanto mediante el uso de sistemas automatizados de medición como a través de la experimentación psicológica gracias a la colaboración de sujetos experimentales. Objetivo Operativo 10. Definir unas recomendaciones de desarrollo para la implementación de aplicaciones con elevados requisitos de exactitud y precisión en la presentación de contenidos audiovisuales y el registro de la interacción del usuario empleando tecnologías web estándar. Objetivo Operativo 11. Desarrollar las herramientas auxiliares necesarias para que las recomendaciones definidas en el objetivo operativo 10 puedan ser generalizadas a un conjunto de escenarios y dominios más amplio. Estos objetivos operativos describen las principales actividades que conducen a la validación de la hipótesis de esta investigación. Hemos empleado los aparatos de medición más precisos que estén a nuestro alcance para tratar de maximizar el rigor y la validez de la evidencia empírica recogida. Gracias a un estudio pormenorizado de las opciones disponibles en cada tecnología analizada podemos extraer las conclusiones necesarias para hallar una respuesta a las cuestiones de partida. En la siguiente sección se detalla la metodología de investigación que hemos seguido para alcanzar los objetivos descritos. 10
41 1.3 Metodología de investigación 1.3 Metodología de investigación La metodología de investigación empleada para dar respuesta a las cuestiones que permitan validar la hipótesis planteada puede describirse a través de los procedimientos descritos a continuación (ver figura 1.2). Estado del arte Expertos Equipamiento de precisión Herramientas y metodologías de desarrollo Adquisición de conocimiento Cuestiones de investigación Análisis de tecnologías Desarrollo de componentes Evaluación de componentes Diseminación de resultados Experimentación Figura 1.2: Metodología de investigación. 1. Adquisición de conocimiento El estudio inicial de los antecedentes en lo referente a la precisión y exactitud en la presentación de contenido audiovisual y el registro de la interacción de usuario mediante tecnologías offline y tecnologías web a través de la revisión exhaustiva de la literatura del área. Resulta fundamental para determinar cuáles son los últimos avances llevados a cabo y qué retos es preciso afrontar. 2. Formulación de cuestiones de investigación Gracias a la revisión bibliográfica realizada en el paso anterior es posible formular las cuestiones de investigación pertinentes que deberán ser respondidas para validar la hipótesis planteada. 3. Análisis de las diferentes tecnologías El análisis de las diferentes tecnologías consideradas a través de procedimientos rigurosos permite recabar la evidencia empírica suficiente para extraer conclusiones acerca de las mismas. 11
42 1. INTRODUCCIÓN 4. Desarrollo de nuevos componentes A partir del análisis de las diferentes tecnologías consideradas puede acometerse el desarrollo de nuevos componentes que pongan a prueba la validez de la hipótesis planteada. 5. Evaluación de los diferentes componentes Una vez desarrollados los nuevos componentes, su validez debe ser evaluada de forma rigurosa a través de la metodología experimental. Posteriormente a la finalización de esta investigación, los resultados serán divulgados en congresos internacionales y revistas científicas especializadas en el área, con el objetivo de validarlos y contribuir al corpus de estudios existentes. 1.4 Estructura del documento A continuación se detalla la estructura del resto de este documento. El capítulo 2 describe los estudios previos en torno a la precisión y exactitud de los mecanismos de temporización involucrados en la presentación de contenido audiovisual y el registro de la interacción del usuario a través de la revisión de la literatura existente. El capítulo 3 recoge la información referente a los procedimientos, resultados y conclusiones de cada uno de las tecnologías estudiadas (software especializado, tecnologías web propietarias y tecnologías web estándar). El capítulo 4 resume las distintas aproximaciones previas a la generación de la interacción de usuario y detalla el funcionamiento de las herramientas desarrolladas para la generación automatizada de la interacción de usuario, así como su registro mediante tecnologías offline y online. El capítulo 5 explica el paradigma experimental del reloj de Libet, describe la implementación de la versión offline de la aplicación desarrollada (Labclock) y de la versión online (Labclock Web) basada en tecnologías web estándar, y presenta los resultados de los seis experimentos en los que se pone a prueba validez de ambas aplicaciones. El capítulo 6 recoge un conjunto de recomendaciones de desarrollo una para el uso de la Web como plataforma de ejecución para el tipo de aplicaciones contempladas. Por último, el capítulo 7 proporciona un resumen de las principales aportaciones de esta investigación, sus dominios de aplicación, sus limitaciones y los trabajos futuros que a partir de ella podrían realizarse. 12
43 The heavy work is getting the problem statement right Daniel E. Geer CAPÍTULO 2 Antecedentes ANTES de repasar los estudios previos en relación a la precisión y exactitud de las tecnologías disponibles desde el entorno de ejecución de un agente de usuario web, conviene recordar que los diferentes elementos o sistemas involucrados conforman una entidad propia. En ocasiones esta cuestión es pasada por alto. Sin embargo, de poco sirve una mejora parcial en uno de estos elementos si tiene un efecto nulo o incluso negativo en el resultado final del sistema en su conjunto. Este enfoque está presente de manera continua a lo largo de este estudio, en el que las mediciones se realizan mediante sistemas externos que puedan evaluar sus entradas y salidas reales, sin verse afectados por ellas. En el marco de una situación de interacción entre un usuario y una aplicación web pueden distinguirse las entidades mostradas en la figura 2.1 y detalladas a continuación. A Usuario En el extremo más externo de la interacción se encuentra el usuario. Durante esta investigación no se han tenido en cuenta las diferencias fisiológicas o de estado que pueden darse entre usuarios (Carbonell, Elkind, y Nickerson, 1968; Lockhart, 1967; Schiff y Thayer, 1968; Shneiderman, 1980; Treisman, 1963), ni los diferentes agentes externos que pueden afectar a su capacidad de 13
44 2. ANTECEDENTES Usuario Hardware Software Salida Aplicación web Entrada Agente de usuario Sistema Operativo Temporizadores, etc. Figura 2.1: Entidades en una situación de interacción entre un usuario y una aplicación web. atención o reacción frente a los estímulos presentados por la aplicación web (Gorn, Chattopadhyay, Sengupta, y Tripathi, 2004). En las ocasiones en las que deseamos evaluar con precisión las diferentes tecnologías, reemplazamos a los usuarios por aparatos de medición especializados (Plant, Hammond, y Turner, 2004). Por el contrario, solicitamos la colaboración de participantes voluntarios en las ocasiones en las que se precisa la validación externa de la tecnología a través de paradigmas experimentales con personas. B Hardware 1 Periféricos de entrada En los orígenes de la Web, durante la década de los 90, resultaba razonable asumir que los periféricos de entrada para una aplicación web se limitaban al teclado y al ratón. A pesar de que esto sigue siendo cierto en muchos casos, conviene no pasar por alto el significativo aumento del uso de dispositivos móviles para acceder a la Web. Cada una de las características implicadas en el uso de un dispositivo de entrada (conexión cableada o inalámbrica, tipos de bus y conectores, sensibilidad, tiempo de respuesta, etc.) puede afectar notablemente a la precisión y exactitud 14
45 del registro de la interacción de usuario (Plant y Turner, 2009), por lo que no debería asumirse lo contrario. 2 Periféricos de salida A pesar de las diferencias subyacentes a las tecnologías empleadas para mostrar el contenido visual, todas ellas se encuentran con dificultades similares a la hora de mostrar animaciones continuas debido a sus limitaciones físicas (Elze, Tanner, Lochmann, y Becker, 2007). Por lo tanto, resulta conveniente conocer estas limitaciones en detalle para no dedicar recursos y esfuerzos a mejorar otros elementos del sistema más allá del límite impuesto por ellas, ya que no tendrán ningún efecto en el resultado final. 3 Temporizadores hardware Desde el chip Intel 8253 de los IBM PC originales hasta los modernos temporizadores HPET (High Precision Event Timer), los dispositivos empleados para ejecutar aplicaciones web han sido equipados con temporizadores hardware. La exactitud, precisión y resolución de estos temporizadores ha ido variando a lo largo del tiempo. Lo mismo sucede en cuanto a las funcionalidades que ofrecen, ya que no todos operan de la misma manera ni están influidos por los mismos factores externos. A pesar de la abstracción que supone el uso de un sistema operativo y las distintas API disponibles, es conveniente conocer qué temporizadores están disponibles en cada plataforma hardware con el propósito de tomar las decisiones adecuadas en capas superiores. C Software 1 Sistema operativo Gracias a los controladores (drivers) y las API de los sistemas operativos, las aplicaciones de usuario son capaces de ejecutarse conforme a sus requisitos establecidos. En lo referente a los dispositivos de entrada y salida que habitualmente se emplean en aplicaciones web, el grado de ajuste en la configuración (tunning) y la funcionalidad proporcionada 15
46 2. ANTECEDENTES por los controladores pueden tener un impacto notable en su desempeño. De igual manera, no todos los sistemas operativos son capaces de emplear todos los mecanismos de temporización hardware disponibles (v. gr., temporizadores HPET en Microsoft Windows XP SP1), por lo que una misma aplicación web podría comportarse de manera diferente en función del sistema operativo empleado, aún cuando el equipamiento hardware sea idéntico. 2 Agente de usuario web Los tiempos en los que un único agente de usuario web era empleado por más del 90 % de los usuarios han pasado a la historia (ver figura 2.2). En la actualidad, la amplia oferta de plataformas hardware y software unida a los esfuerzos dedicados por los desarrolladores de agentes de usuario en mejorar sus características han contribuido a fragmentar su cuota de uso. Este hecho, lejos de suponer un problema, está contribuyendo notablemente a la progresiva adopción de los nuevos estándares web por parte de los desarrolladores de aplicaciones web. 3 Aplicación web Por último, la propia aplicación web, corriendo dentro del entorno de ejecución proporcionado por el agente de usuario. A este nivel, el uso de bibliotecas, metodologías o patrones de diseño adecuados puede suponer un incremento en la exactitud y precisión de la presentación de contenido audiovisual y el registro de la interacción del usuario. A continuación, se presenta una revisión pormenorizada de los estudios previos en relación a cada uno de estos elementos. 2.1 Consideraciones acerca de los usuarios de la Web De entre todos los elementos que participan en la interacción entre un usuario y una aplicación web, el factor humano resulta, debido a su complejidad y gran variabilidad, el más complicado de evaluar y controlar. En esta sección se analizan 16
47 2.1 Consideraciones acerca de los usuarios de la Web Figura 2.2: Evolución del porcentaje en cuota de mercado de los principales agentes de usuario web entre 2008 y 2012 (fuente: StatCounter). los múltiples factores que pueden afectar a la estimación del tiempo por parte de personas. A la hora de hablar de las estimaciones temporales realizadas por personas, conviene recordar la diferenciación entre los juicios de estimación temporal prospectivos y retrospectivos (Block y Zakay, 1997). En el caso de los juicios prospectivos de estimación temporal, también conocidos como juicios de duración experimentada, el sujeto es consciente de que se le solicitará una estimación de la duración más adelante. Por contra, en el caso de los juicios retrospectivos, también conocidos como juicios de duración recordada, el sujeto no es consciente de que se le solicitará la estimación temporal hasta que dicho periodo de tiempo ya ha sucedido. En su metaanálisis, Block y Zakay (1997) encontraron que a medida que la complejidad de la tarea incrementaba, la exactitud de las estimaciones en los juicios prospectivos decrecía, sugiriendo que los participantes disponían de menos atención disponible 17
48 2. ANTECEDENTES para dedicarla a la monitorización temporal. Este efecto de la complejidad de la tarea, por contra, no se dio en la condición retrospectiva. Así pues, parece razonable asumir que la estimación temporal requiere la dedicación de recursos cognitivos que no podrán emplearse a otras tareas sin un perjuicio en su exactitud y precisión. Esta conclusión está alineada con lo avanzado previamente por R. Miller (1968) y otros investigadores (Carbonell y cols., 1968; Shneiderman, 1980), al plantear varias situaciones en las que el tiempo de respuesta del usuario se ve afectado, principalmente por limitaciones en la memoria a corto plazo. Sin embargo, la estimación temporal por parte del usuario no solamente se ve perjudicada por sus limitaciones cognitivas, sino que otros factores externos pueden tener también un impacto notable. Varios estudios han encontrado evidencias de la influencia de aspectos como la temperatura ambiente (Lockhart, 1967), la valencia esperada del estímulo (Schiff y Thayer, 1968), su color (Gorn y cols., 2004) o la música que acompaña a una animación visual. Asimismo, la propia velocidad de la presentación de los contenidos audiovisuales (Shneiderman, 1984) o de la interactividad percibida en un una aplicación web (Teo, Oh, Liu, y Wei, 2003) pueden influir en el rendimiento del usuario. Además de los factores comentados, la exactitud y precisión de la presentación de contenidos audiovisuales y el registro de la interacción del usuario se ven afectadas por un proceso retroalimentado en el que los posibles retardos de la aplicación web influyen en el estado emocional y provocan una merma en el rendimiento del usuario que, a su vez, puede generar mayores retardos y una estimación mayor de la duración temporal. Cuál es el tiempo a partir del cuál este proceso de retroalimentación negativa se desencadena ha sido una cuestión recurrente en el último medio siglo (Galletta, Henry, McCoy, y Polak, 2004; Nah, 2004). R. Miller (1968) sugirió un retardo máximo de 2 s para que una interacción humano-máquina no pierda su naturaleza conversacional y un retardo óptimo de 0,5 s para maximizar el flujo de la conversación entre ambas entidades. Más adelante, Nielsen (1994) estableció tres límites importantes en relación a los tiempos de respuesta de un sistema y su usabilidad: a) 0,1 s como límite en el que el usuario percibe que el sistema reacciona de manera instantánea, por lo que no es preciso emplear ningún tipo de retorno más allá del propio resultado esperado; b) 1 s como el límite en el que el usuario percibe un flujo 18
49 2.1 Consideraciones acerca de los usuarios de la Web continuo en la comunicación con el sistema; y c) 10 s como el límite en el que el sistema pierde la atención del usuario focalizada en la presente comunicación. Si se dieran retardos mayores, el usuario preferiría realizar otras tareas mientras espera a que el sistema termine, por lo que sería muy recomendable que el sistema informara al usuario de este tipo de retardos. A pesar de que otros autores han sugerido valores más conservadores para este último límite, se observa una paulatina disminución en su estimación. Ramsay, Barbesi, y Preece (1998) lo situaron en torno a los 41 s, mientras que Selvidge (1999) lo fijó alrededor de 30 s. Hoxmeier y DiCesare (2000) encontraron un impacto en la satisfacción del usuario con respecto al sistema a partir de los 12 s de retardo, y más recientemente (Galletta y cols., 2004) afirman que si bien el rendimiento y el comportamiento se ve afectado a partir de los 4 s de retardo, las actitudes con respecto al sistema no cambian hasta pasados los 8 s de retardo. En lo referente a la Web, se dan otros problemas con relación a los usuarios. A pesar de la imposibilidad de calibrar su equipamiento al emplear una aplicación web, los usuarios se adaptan con rapidez y facilidad a las condiciones del entorno (v. gr., el brillo de un monitor), por lo que estas variables, que cambian de un usuario a otro, suelen tener un impacto pequeño en el resultado final (Krantz, 2001). Sin embargo, las discrepancias entre el laboratorio e Internet no se limitan a aspectos tecnológicos, sino que mayoritariamente se centran en factores metodológicos (Birnbaum, 2004). Los principales problemas detectados en la experimentación en Internet se pueden agrupar en torno a los siguientes factores: la participación repetida, el abandono y los sesgos en la muestra de participantes, las respuestas ofrecidas y los experimentadores. Existen varias soluciones para evitar o detectar la participación múltiple de una misma persona en un experimento en Internet (sistemas de identificación basados en direcciones IP, cookies, autenticación por contraseña; análisis de los registros en el servidor, etc.) ya que se trata de un problema técnico. No ocurre lo mismo con la tasa de abandono, que puede afectar de manera diferente al grupo experimental frente al grupo control y suponer un sesgo de selección de participantes. Aún en el caso de que afectara por igual a ambos grupos, podría ocasionar que se hallaran resultados opuestos a lo que realmente está ocurriendo (Birnbaum y Mellers, 1989). Por esta razón, Reips (2000, 2002) sugirió el empleo de las técnicas de precalentamiento y valla alta con la intención de 19
50 2. ANTECEDENTES que el abandono se produzca antes de la asignación del participante a alguna de las condiciones experimentales. Una ventaja de la experimentación en Internet es que minimiza el sesgo del experimentador al no encontrarse presente, pero puede aumentar el sesgo de respuesta si no se proporcionan suficientes opciones de respuesta o las instrucciones del experimento no están claras, puesto que en ausencia del asistente de laboratorio, no habrá nadie para resolver posibles ambigüedades en el procedimiento. Tal y como hemos podido constatar, son tantos los factores que afectan a la exactitud y precisión de las estimaciones temporales de los usuarios que no es razonable confiar en su criterio a la hora de valorar cada una de las tecnologías web analizadas en esta tesis. Por esta razón, solamente se cuenta con su participación para la validación de las aplicaciones desarrolladas, como demostración de su utilidad práctica dentro de áreas de investigación que requieren una gran exactitud y precisión en la presentación de contenido audiovisual y el registro de la interacción de usuario. 2.2 Análisis de la precisión y exactitud del hardware empleado Teclados El teclado ha sido el dispositivo preferente para la entrada de datos por parte del usuario durante décadas. Si bien es cierto que los progresos en el desarrollo de interfaces gráficas de usuario han reducido su presencia, aquellos dispositivos que por diseño deciden prescindir de él, se ven obligados a emularlo en un gran número de ocasiones. Es esta sección analizaremos las principales tecnologías relacionadas con los teclados, repasando sus características y limitaciones, así como los resultados de las mediciones a los que se han visto sometidos. Dado que la intención de este análisis es la de identificar los posibles factores que influyen en la exactitud y precisión en la interacción entre un usuario y una aplicación web, las tecnologías previas a la invención de la Web (Berners-Lee y Cailliau, 1990) no serán estudiadas. Teniendo esto en cuenta, podemos identificar diferentes tipos de teclados en función del mecanismo empleado para distinguir 20
51 2.2 Análisis de la precisión y exactitud del hardware empleado las teclas pulsadas (teclados mecánicos, de membrana, magnéticos, capacitivos, etc.), de los conectores y buses de comunicación empleados (serie, PS/2, USB, Bluetooth, infrarrojos, inalámbrico a 2.4 GHz, etc.), de su disposición (QWERTY, AZERTY, Dvorak, etc.) y otros factores que pudieran intervenir a la hora de evaluar su rendimiento. Considerando que la influencia de la disposición del teclado en su rendimiento solamente tiene sentido en la medida en que se empleen diferentes teclas para interactuar con la aplicación, limitaremos nuestro análisis a la pulsación repetida de una sola tecla para eliminar el posible efecto de este factor. Además, la práctica totalidad de los teclados disponibles sufren en mayor o menor medida el efecto ghosting o teclas fantasma, debido a las limitaciones de su diseño. Este efecto provoca que ante determinadas pulsaciones combinadas de tres teclas, el teclado registre la pulsación de una cuarta tecla que realmente no está siendo pulsada (tecla fantasma). Algunos fabricantes emplean una técnica conocida como interferencia (jamming) para evitar este problema, que consiste en ignorar la pulsación de la tercera tecla para prevenir la aparición de la tecla fantasma. Otros fabricantes, por el contrario, ofrecen la funcionalidad NKRO (N-Key Roll Over) mediante la que se permite la pulsación simultánea de N teclas sin la aparición de teclas fantasma. Conviene señalar que un teclado con un valor NKRO de 8, por ejemplo, permitirá alguna combinación de 8 teclas sin que se dé el efecto ghosting, pero no de cualquier pulsación de 8 teclas (normalmente se redundan y optimizan los mecanismos implicados para las combinaciones más típicas como W-A-S-D y los cursores para teclados especializados en videojuegos). Así pues, con la intención de evitar estos inconvenientes, el resto del análisis supondrá la pulsación repetida de una misma tecla. Las limitaciones de la tecnología subyacente a cada uno de los tipos de teclados habitualmente empleados para recoger la interacción del usuario tiene un impacto notable en su exactitud y precisión. Por esta razón, conviene recordar qué detalles intervienen en el proceso de lectura de la entrada por teclado en las diferentes tecnologías disponibles. En el caso de los teclados con interfaz AT-PS/2, se produce de la siguiente manera: 1) el microcontrolador de teclado (Intel 8042) recibe un código de tecla válido y lo sitúa en el buffer de entrada; 2) se fija el flag IBF (Input Buffer Full) a 1 y se 21
52 2. ANTECEDENTES activa la petición de interrupción IRQ 1; 3) el microcontrolador de teclado inhibe la recepción de más códigos de tecla hasta que el buffer de entrada no haya sido vaciado; 4) la IRQ 1 activa el controlador de teclado, apuntado por el vector de interrupciones (posición 0x09); 5) el controlador lee el código de tecla del puerto 0x60 y actualiza el área de memoria RAM que el sistema operativo ha destinado para la entrada por teclado (Chapweske, 2003b). Aunque no es habitual, la gestión de la entrada de este tipo de teclados puede hacerse mediante la consulta repetida (polling) en lugar de emplear interrupciones. Para ello es preciso desactivar la interrupción y consultar repetidamente el flag IBF. Cuando ese flag se encuentre a 1, se leerá el valor del código de tecla del puerto 0x60 y se volverá a fijar a 0 empleando el puerto 0x64, bit 1. El listado 2.1 muestra este proceso de consulta repetida en teclados AT-PS/2. 1 kbread: 2 WaitLoop: 3 in al, 64h ; Read Status byte 4 and al, 10b ; Test IBF flag (Status<1>) 5 jz WaitLoop ; Wait for IBF = 1 6 in al, 60h ; Read input buffer Listado 2.1: Consulta repetida en teclados AT-PS/2 por Chapweske (2003b). Los teclados USB (Universal Serial Bus) siguen la definición de clase de dispositivo HID (Human Interface Devices). En esta especificación se indica que un dispositivo puede enviar o recibir una transacción en cada trama USB (1 trama / ms). Esta transacción puede estar compuesta de múltiples paquetes, pero está limitada en su tamaño. En la versión 1.1 de la especificación estos límites se sitúan en 8 bytes para dispositivos de baja velocidad y 64 bytes para dispositivos de alta velocidad (Forum, 2001). Considerando que cada pulsación de tecla precisa dos transacciones (una para indicar la pulsación de la tecla y otra para indicar que ha dejado de ser pulsada), esto limita la tasa de pulsaciones a 500 teclas / s. Por cuestiones de rendimiento y ahorro de energía, algunos sistemas operativos limitan el envío de paquetes a intervalos de 8 tramas, por lo que si se diera el caso, una pulsación de una tecla requeriría de al menos 16 ms para ser transmitida y se alcanzaría 22
53 2.2 Análisis de la precisión y exactitud del hardware empleado una tasa de pulsaciones de 62,5 teclas por segundo. A pesar de que las capacidades descritas puedan parecer más que suficientes para la tasa de pulsaciones por segundo alcanzable por una persona utilizando el teclado, no debe pasarse por alto la existencia de la funcionalidad de repetición tipomática (typematic repeat), capaz de generar un elevado número de pulsaciones de teclas por segundo de forma automática. Para activar la repetición tipomática es necesario mantener la tecla pulsada más allá del intervalo fijado (typematic delay). Una vez activada, se enviarán tantas pulsaciones por segundo como se haya configurado en la tasa de repetición tipomática (typematic rate) hasta que se deje de pulsar esa tecla o se pulse otra. En el caso de los teclados AT-PS/2, este comportamiento está definido en el protocolo. En los dispositivos USB, por contra, es el sistema operativo el encargado de implementarlo, empleando la tasa de envío de paquetes y el número de paquetes recibidos para determinar durante cuánto tiempo se ha pulsado una tecla. Una vez conocidos los detalles propios de los diferentes estándares de teclados, conviene repasar los estudios en los que se han medido su exactitud y precisión de forma práctica. Graves y Bradley (1987) encontraron un retardo de 18,4 ms (desviación típica, DT: 4,3 ms) en la medición del tiempo de respuesta realizada con un teclado IBM PC estándar, mientras que este retardo alcanzó los 36,7 ms (DT: 2,9 ms) para el caso de un teclado clónico. Estos resultados fueron contrastados con los obtenidos mediante el registro de la pulsación de los botones de un joystick (modelo GravisMk IV), con el que obtuvieron un retardo de 0,55 ms (DT: 0,51 ms). Más adelante, Segalowitz y Graves (1990) detectaron una variabilidad de ± 7,5 ms en teclados IBM XT y concluyeron que puede incrementar la varianza del error y anular la detección de posibles efectos. Aprovechando la popularización de los teclados USB, Shimizu (2002) comparó los retardos ocasionados por el uso de varios teclados con los obtenidos al utilizar un joystick. Sus resultados muestran un claro perjuicio en la medición del tiempo de respuesta al emplear teclados USB (32,75 ms de intervalo de sondeo y DT: 9,453 ms en el peor de los casos) frente a teclados PS/2 (2,90 ms de intervalo de sondeo y DT: 0,836 ms en el mejor de los casos, 10,88 ms y DT: 3,140 ms en el peor). Además de los resultados presentados, Shimizu afirma que se debería prestar atención a tres factores a la hora de medir el retardo de un teclado: 1) el retardo físico, o tiempo transcurrido desde 23
54 2. ANTECEDENTES que el usuario toca la tecla hasta que la tecla activa el mecanismo de envío; 2) el retardo de sondeo, o tiempo transcurrido desde que la señal se activa hasta que es detectada por el controlador del teclado; y 3) el retardo de codificación, o el tiempo transcurrido desde que se recibe la señal hasta que se convierte en un código de tecla, además del tiempo empleado para que esa señal llegue a su destino. Este último retardo es constante y puede ser fácilmente compensado, mientras que los dos primeros son variables y determinan la varianza del error. Siete años después, Plant y Turner (2009) evaluaron la exactitud y precisión de cuatro teclados y obtuvieron resultados que equiparaban el retardo en teclados USB (18,30 ms de retardo y DT: 1,29 ms) al de los teclados PS/2 (19,94 ms y DT: 0,83 ms en el mejor de los casos, 33,73 ms y DT: 3,08 ms en el peor). Estos ajutores encontraron diferencias significativas entre los cuatro teclados analizados. J. Forster (2007), encontró una DT de 5,154 ms que consideró inaceptable, recomendando evitar el uso del teclado como dispositivo de entrada cuando la exactitud y precisión en la medición de la interacción del usuario sean críticas. Finalmente, Neath, Earle, Hallett, y Surprenant (2011) evaluaron la precisión de dos teclados Apple USB sobre el sistema operativo Mac OS X en diferentes condiciones y encontraron que su precisión variaba entre 2,5 y 10 ms, por lo que concluyeron que pueden llevarse a cabo experimentos que detecten diferencias en torno a los 5 10 ms con equipamiento convencional de este fabricante. A pesar de esta aparente falta de exactitud de los teclados analizados, Damian (2010) considera que esta no tiene un efecto tan negativo en los resultados analizados estadísticamente si se la compara con la inherente variabilidad del rendimiento humano entre diferentes personas. Es decir, a pesar de que sea deseable contar con equipamiento experimental de la máxima exactitud y precisión, no resulta un requisito sine qua non para la mayoría de los casos. Como ya se ha comentado anteriormente, el uso de un dispositivo impreciso tiene dos efectos con respecto al tiempo real transcurrido: incrementa la varianza del error e introduce un retardo. Dado que este retardo es constante, puede ser compensado. Además, este error no tiene influencia a la hora de estudiar las diferencias relativas entre condiciones. La varianza añadida al error podría provocar falsos negativos, evitando que el investigador replicara el efecto buscado. Más aún, esta falta de exactitud y precisión podría paliarse con el debido poder estadístico aumentando el número de 24
55 2.2 Análisis de la precisión y exactitud del hardware empleado observaciones, tal y como han sugerido otros autores anteriormente (Ulrich y Giray, 1989) Ratones En lo que respecta al ratón como dispositivo de entrada, seguimos el mismo criterio que en la sección anterior y solamente estudiamos las tecnologías empleadas desde el nacimiento de la Web. Así pues, analizamos la precisión y exactitud de ratones con conexiones serie, PS/2 y USB, así como las posibles diferencias entre ratones mecánicos y ópticos. La idoneidad de los ratones serie como dispositivos de respuesta en paradigmas de tiempos de reacción fue estudiada por varios investigadores (Crosbie, 1990; Segalowitz y Graves, 1990), que encontraron un retardo sistemático en torno a los ms, por lo que sugirieron su compensación por parte de los experimentadores. Esta estimación fue confirmada posteriormente por J. Beringer (1992). Un ratón serie transfiere bloques de información de 3 bytes de tamaño a 1200 baudios, con un tamaño de palabra de 7 bits y un bit de inicio y otro de parada, conformando un total de 27 bits (9 3 bits) que a 1200 baudios deberían precisar 22,499 ms para su transmisión. Teniendo en cuenta que el microcontrolador del ratón incluye un umbral de 7 ms para enviar la pulsación de un botón, la suma de estos dos tiempos (22, ms) se aproxima al rango de los ms citado. Dado que este retardo está ocasionado por un cuello de botella en la tasa de trasferencia entre el ratón y el ordenador, el movimiento del ratón contribuye notablemente a este retardo, puesto que compite por el ancho de banda disponible con la pulsación del botón del ratón. Por este motivo, estos investigadores aconsejan eliminar la bola del ratón en ratones mecánicos si se van a emplear sus botones como dispositivo de respuesta. El protocolo PS/2 para dispositivos de ratón es muy similar al empleado en los teclados. Existen cuatro modos de funcionamiento: 1) reset (inicialización y autodiagnóstico); 2) stream (envío de datos, modo de funcionamiento por defecto); 3) remote (el host hace un sondeo continuo para recibir datos del ratón); y 4) wrap (diagnóstico en el que el ratón reenvía todo comando enviado por el equipo al que está conectado). En el modo stream el ratón envía datos si detecta un cambio en su 25
56 2. ANTECEDENTES posición o el estado de los botones. La tasa máxima de envío de datos es de 200 muestras / s, con un valor por defecto de 100 muestras / s (Chapweske, 2003a). Los ratones USB son también dispositivos que siguen la definición de clase de dispositivo HID, por lo que podrán enviar o recibir una transacción en cada trama USB (1 ms, 1000 Hz), aunque resulta habitual que el estado del ratón se sondee cada 8 ms (125 Hz). En función del sistema operativo empleado, este valor podrá ajustarse, aunque en ningún caso podrá sobrepasar el límite impuesto por la tasa de envío de tramas USB. Tras analizar 8 ratones diferentes, Plant, Hammond, y Whitehouse (2003) encontraron una gran variabilidad entre ellos. El retardo típico se situó en torno a los 6,55 61,60 ms, con grandes diferencias en cuanto a la tecnología empleada (32,20 38 ms para ratones serie, 6,55 61,60 ms para ratones PS/2 y 13,60 ms para el ratón USB analizado). En cuanto al tiempo empleado en la transmisión de los datos, las diferencias entre tecnologías se mantuvieron (24 33 ms para ratones serie, 3,5 6,16 ms para ratones PS/2 y 0,10 ms para el ratón USB). Otro hallazgo importante de estos autores tuvo que ver con los adaptadores PS/2 a USB incluidos en algunos dispositivos. El comportamiento de un mismo ratón empleando un puerto PS/2 y un puerto USB a través del adaptador varió notablemente. Estas diferencias son debidas a que el firmware que controla cada uno de los protocolos de comunicación con el host es diferente. En un estudio posterior, Plant y Turner (2009) analizaron otros 11 ratones de diferentes tecnologías y encontraron diferencias significativas entre todos ellos. El ratón con un retardo menor (Kensington Mouse) añadió 9,52 ms (DT: 2,63 ms) al tiempo medido, mientras que el retardo fue de 48,96 ms (DT: 3,19 ms) en el peor de entre los analizados (Chic Wireless Optical Mouse PS/2). Es interesante resaltar que el ratón que menor varianza registró en sus mediciones empleó el puerto USB (Microsoft Wheel Mouse Optical USB, 17,80 ms de retardo y DT: 0,70 ms). Otro aspecto importante que conviene recordar es que la medición y calibración de los dispositivos de entrada empleados debe hacerse individualmente, ya que es habitual que los fabricantes modifiquen la circuitería de los dispositivos sin variar el nombre de producto ni su aspecto externo, por lo que podrían darse diferencias significativas entre ratones aparentemente idénticos y alterar gravemente los resultados de experimentos que no hayan contrabalanceado este factor. 26
57 2.2 Análisis de la precisión y exactitud del hardware empleado Pantallas táctiles Gracias a la popularización de los teléfonos móviles inteligentes (smartphones) y, sobre todo, a la proliferación de una nueva generación de tabletas a partir de la comercialización del Apple ipad (Samsung Galaxy Tab, RIM Playbook, Motorola Xoom, HP Slate, Microsoft Surface, Google Nexus 7, entre muchas otras), las pantallas táctiles se han convertido en pocos años en un dispositivo de entrada muy presente en la informática de consumo. Sin embargo, no se trata de un concepto novedoso, puesto que los primeros diseños datan de mediados de la década de los 60 del siglo XX (Johnson, 1965, 1967; Orr y Hopkin, 1968). A pesar de su aparente similitud, las diferentes tecnologías empleadas de pantallas táctiles se basan en fenómenos físicos muy distintos. Así, podemos encontrar: a) pantallas táctiles infrarrojas, basadas en sensores infrarrojos situados a los bordes de la pantalla formando una matriz capaz de detectar objetos (típicamente el dedo del usuario) dentro de ella; b) pantallas resistivas, basadas en dos capas transparentes capaces de conducir la electricidad situadas sobre la pantalla (cuando el usuario ejerce presión sobre ellas, se ponen en contacto y la posición se estima en función de la resistencia del circuito cerrado por el contacto entre ambas capas); c) pantallas capacitivas, basadas en la creación de un campo electrostático sobre la pantalla que provoca la creación dinámica de un condensador cuando un elemento conductor (el dedo del usuario o un puntero adecuado) lo toca (la posición se estima en función del cambio en la capacitancia del campo); d) pantallas táctiles de onda acústica superficial, basadas en la emisión y recepción de ondas acústicas fuera del espectro audible por humanos (la posición se estima por los cambios en la señal emitida provocados por la presencia de un objeto dentro del área de la pantalla); e) pantallas de imagen óptica, basadas en el uso de emisores infrarrojos y sensores de imagen situados a los bordes de la pantalla capaces de detectar la sombra proyectada por un objeto dentro del campo de visión; y f) pantallas piezoeléctricas, basadas en la detección de la piezoelectricidad generada debida a las pulsaciones sobre la pantalla. En lo relativo a su exactitud y precisión a la hora de registrar la interacción del usuario, existen diferencias en función de la tecnología empleada. Los tiempos de respuesta máximos de las pantallas resistivas se sitúan en torno a los 10 ms para las 27
58 2. ANTECEDENTES pantallas de 4 hilos y en torno a los 15 ms para las pantallas de 5 hilos. En el caso de las pantallas acústicas este tiempo es de 10 ms, mientras que para las capacitivas está en torno a los 15 ms y llega hasta 20 ms en las pantallas infrarrojas (Bhalla y Bhalla, 2010). Además de las limitaciones técnicas, también hay otros factores que pueden afectar al rendimiento de la interacción del usuario (D. Beringer y Peterson, 1985; D. Beringer, 1989; Hall, Cunningham, Roache, y Cox, 1988). Tanto Gould, Greene, Boies, Meluson, y Rasamny (1990) como Sears (1991) estudiaron el rendimiento de usuarios empleando teclados físicos y teclados virtuales operados mediante ratones o pantallas táctiles. Como cabe esperar, encontraron que el rendimiento de los usuarios es mejor en el caso de los teclados físicos (58,2 palabras por minuto), y es mayor para las pantallas táctiles (25,4 palabras por minuto) que para el ratón (17,1 palabras por minuto). Sears y Shneiderman (1991) propusieron una adaptación a la Ley de Fitts (1954) para el cálculo del tiempo necesario para interactuar con un elemento de la pantalla (2.1) que tuviera en cuenta la interacción en pantallas táctiles (2.2): T = a + b log ( ) 2D W (2.1) Donde D es la distancia, W la anchura de la pantalla, y a y b son parámetros definidos en función del dispositivo concreto. T = a + b log ( ) cd ( e ) + d log W W (2.2) Donde D es la distancia, W la anchura de la pantalla, y a, b, c, d, y e son parámetros definidos en función del dispositivo concreto. La interacción mediante pantallas táctiles ha pasado de la mera pulsación al uso de complejos gestos multitáctiles capaces de generar comportamientos sofisticados más allá de los ofrecidos por otros dispositivos de entrada (Forlines, Wigdor, Shen, y Balakrishnan, 2007). Teniendo en cuenta estos avances en la interacción humano-ordenador y las ventajas en cuanto a ubicuidad y acceso que proporcionan los dispositivos móviles, 28
59 2.2 Análisis de la precisión y exactitud del hardware empleado no es raro que algunos investigadores hayan decidido adaptar sus laboratorios y experimentos online a estas plataformas (Dufau y cols., 2011; Orduña, García-Zubia, Irurzun, López-de-Ipiña, y Rodríguez-Gil, 2011) Monitores Antes de analizar su impacto en la exactitud y precisión de la presentación de contenido visual, resulta conveniente recordar algunos conceptos relacionados con las tecnologías de visualización empleadas en los monitores de ordenadores personales. En la actualidad, los monitores empleados habitualmente en los ordenadores de los laboratorios de experimentación se pueden clasificar en dos categorías en función de la tecnología que utilizan: monitores de tubo de rayos catódicos (Cathode Ray Tube, CRT) y monitores de cristal líquido (Liquid Crystal Display, LCD). Tradicionalmente los monitores CRT han sido considerados como más adecuados para la presentación precisa y exacta de contenido visual debido a sus relativamente altas tasas de refresco (en torno a los Hz, aunque existen modelos que pueden alcanzar los 240 Hz) y sus menores tiempos de excitación (rise time) y decaimiento (decay time), permitiendo un mayor número de marcos por segundo (Frames Per Second, FPS) y cambios más abruptos de un marco a otro, respectivamente (Cowan, 1995). Sin embargo, estas consideraciones han dejado de ser ciertas, como detallaremos a continuación. La tecnología subyacente a los monitores CRT y LCD es completamente diferente, pero hay algunos aspectos intermedios que son comunes (Castellano, 1992). En un monitor CRT, un cañón de electrones situado en la parte trasera apunta hacia una pantalla de cristal recubierta de fósforo situada en la parte delantera. Para dibujar una imagen, el cañón comienza por la esquina superior izquierda y va realizando barridos horizontales hasta llegar a la esquina inferior derecha. Una vez ahí, el cañón de electrones se apaga, vuelve a la posición de partida y comienza de nuevo (ver figura 2.3). Este proceso está controlado por la señal V-SYNC y el tiempo de refresco de un monitor CRT depende de cuánto de rápido se dispare esta señal. Al periodo entre dos señales V-SYNC se le denomina tick y su duración está en función del tiempo de refresco (v. gr., a 60 Hz un tick dura 16,667 ms, a 29
60 2. ANTECEDENTES 100 Hz un tick dura 10 ms). Conviene tener en cuenta que el cañón de electrones permanece menos de 1 ms sobre cada punto de la pantalla, por lo que la imagen se hace visible al ojo humano gracias a que el tiempo de permanencia o decaimiento es lo suficientemente prolongado. 1 tick 2 ticks 3 ticks V-SYNC V-SYNC V-SYNC Figura 2.3: Tiempo de refresco y señal V-SYNC. Un monitor LCD, por contra, emplea una matriz de cristales líquidos situada entre dos cristales polarizados. La imagen se muestra en la pantalla debido a los cambios que sufre al atravesar esa matriz de cristales líquidos una luz permanentemente encendida y situada en la parte trasera. Por lo tanto, los monitores LCD no detienen la emisión de luz en cada refresco, sino que ajustan la estructura de la matriz de cristales líquidos para reflejar los cambios en la imagen. El tiempo de respuesta del monitor se determina en función de cuánto de rápido puedan realizar estos cambios. El tiempo de respuesta no está relacionado con el tiempo de refresco de forma directa. Sin embargo, al configurar un monitor LCD en un PC es necesario fijar el tiempo de refresco como si de un monitor CRT se tratara. El motivo de que esto sea así está relacionado con la compatibilidad. Las tarjetas gráficas fueron diseñadas teniendo en mente a los monitores CRT y emplean una técnica denominada doble-buffer. En uno de los buffers de la tarjeta gráfica se encuentra la imagen que actualmente está siendo dibujada en la pantalla, mientras que en el otro está el siguiente marco que está siendo dibujado por el software. Cuando se dispara la señal V-SYNC, ambos buffers se intercambian y el monitor comienza a dibujar la nueva imagen mientras que el software comienza a pintar una nueva sobre el otro buffer. 30
61 2.2 Análisis de la precisión y exactitud del hardware empleado Frame buffer A Frame buffer B Software Monitor Figura 2.4: Proceso de dibujado con doble-buffer. Esta es la razón por la que la configuración del tiempo de refresco influye incluso en monitores LCD. En el caso de no utilizar la señal de sincronización, se escribe directamente sobre la memoria que almacena una copia de la imagen de pantalla y es posible que la imagen aparezca cortada horizontalmente, mostrando la mitad del marco anterior y la otra mitad del marco siguiente. En el caso de emplear la señal de sincronización, no será posible mostrar cambios en la pantalla más rápidamente que lo marcado por el tiempo de refresco. Los intervalos de las animaciones se encontrarán cuantizados en relación a esta tasa. Es decir, los cambios se podrán producir en cuantos de un número entero de ticks de duración (v. gr., a 60 Hz podrá haber cambios cada 16,667 ms o cada 50 ms pero no cada 40 ms). En lo relativo a la exactitud y precisión temporal, Lincoln y Lane (1980) detectaron tres fuentes potenciales de error a la hora de medir tiempos de reacción mediante el uso de monitores CRT: 1) la persistencia de la pantalla de fósforo; 2) el retardo por el proceso de refresco; y 3) el retardo por la transmisión de la imagen. Si tenemos en cuenta que el tercer factor únicamente tiene sentido al emplear tecnologías tan rudimentarias como las analizadas por estos autores, solamente las conclusiones relativas a los dos primeros factores tienen vigencia actualmente. Acerca de la persistencia de la pantalla de fósforo, sugieren que debería medirse el tiempo de persistencia o decaimiento y ajustar la duración de la imagen para compensarlo. En cuanto al retardo debido al proceso de refresco, consideran que el error al mostrar una imagen con una duración arbitraria está sujeta a un error distribuido uniformemente desde 0 ms hasta la duración de un tick. Podría realizarse, por lo tanto, una estimación no sesgada del tiempo de reacción medido compensando ese 31
62 2. ANTECEDENTES valor con la duración de medio tick (v. gr., 8,333 ms a 60 Hz). Por lo tanto, esta fuente de error tiene como efecto una reducción del poder estadístico de la medida. La varianza de una distribución uniforme continua para a x b es: (b a) 2 12 (2.3) Por lo que la varianza del error producido por el retardo en el proceso de refresco será de: (8,333 ( 8,333)) 2 23,15 ms (2.4) 12 Este es el incremento en la varianza del error si solamente se obtiene a una muestra de la variable dependiente. Si se tratara de k muestras, el error sería 23,15/k ms, por lo que disminuiría en función del número de muestras tomadas y podría reducirse así hasta los parámetros deseados. Más adelante, Sutter y Tran (1992) definieron diferentes factores de corrección para esta fuente de error. A pesar de que Gofen y Mackeben (1997) aportaron evidencias de la idoneidad de los ordenadores personales para la presentación exacta y precisa de contenido visual sobre diferentes versiones de Microsoft Windows empleando monitores CRT, Bach, Meigen, y Strasburger (1997) describieron las limitaciones de resolución temporal de este tipo de monitores, incidiendo en cuestiones ya comentadas en esta sección como la tasa de refresco o el tiempo de decaimiento de la pantalla de fósforo, e introduciendo otras nuevas como las interacciones espacio-temporales en animaciones periódicas de elementos visuales. Según estos autores, muchas pantallas de fósforo tienen funciones de decaimiento complejas, siendo este rápido inicialmente y más paulatino posteriormente (ver también Cowan y Rowell, 1986). Mollon y Baker (1995) coinciden al afirmar que este efecto puede ocasionar problemas en estudios científicos. En cuanto a las interacciones entre los límites espaciales y temporales en animaciones periódicas, es preciso establecer un límite máximo para el producto entre la velocidad del objeto en la animación periódica (medida en grados por segundo) y la frecuencia de repetición (medida en ciclos por grado) que esté en función del tiempo de refresco del monitor: v max f max = f frame 4 (2.5) 32
63 2.2 Análisis de la precisión y exactitud del hardware empleado La razón por la que la tasa de refresco en Hz del monitor tiene un 4 como denominador obedece a las limitaciones espaciales y temporales (para la identificación de la dirección de movimiento es preciso que el desplazamiento máximo dure menos de 1/2 del periodo). Además de estas recomendaciones, Krantz (2001) sugiere emplear imágenes con un alto contraste con el fondo (por encima de 3:1), así como el uso de variaciones simples de color y luminancia y evitar imágenes que sean excesivamente pequeñas o detalladas, con el objetivo de reducir distintos efectos adversos, tales como interacciones espaciales entre píxeles en monitores CRT, altos tiempos de respuesta en monitores LCD, falta de constancia en la luminancia (mayor en el centro en monitores CRT y lo opuesto en monitores LCD) o la necesidad de un tiempo de calentamiento (en torno a 30 min) para obtener medidas estables en monitores CRT. Estos consejos son especialmente relevantes en aplicaciones Web donde la calibración fina del hardware y el software no es posible (Krantz, Ballard, y Scher, 1997). Plant y Turner (2009) analizaron los retardos de 2 monitores CRT (LG Studioworks 775E y Sony Trinitron 110ES), 6 LCD (Acer AL718, Viglen EZX15F, AOC LM720A, MiTAC MT-15LXA, Dell E156FPf, LG Flatron L1715SM) y 3 proyectores multimedia (Dell 2300MP, Hitachi CPL850E, Hitachi CP-X328) a la hora de presentar contenido visual, y encontraron que el retardo se situaba en torno a los 20 ms en los dos monitores CRT (la duración de un tick a 75 Hz más la mitad de un tick para alcanzar el fotosensor situado en mitad de la pantalla: 13, ,666 ms). El retardo en los monitores LCD varió en el rango de los 25 (LG Flatron L1715SM) a los 54 ms (MiTAC MT-15LXA) y fue coherente con la información proporcionada por el fabricante (i. e., los monitores con menores tiempos de respuesta en sus especificaciones sufrieron retardos menores en las pruebas). Los retardos en los proyectores multimedia se situaron entre los 29,79 ms del más rápido (Hitachi CP-X328) y los 35,30 ms (Hitachi CPL850E) del más lento. Hasta 2011 existía cierto consenso acerca de la superioridad de los monitores CRT sobre los monitores LCD en cuanto a la temporización precisa de contenido visual. Las estimaciones previas situaban el tiempo necesario para que un monitor LCD adquiriera la máxima luminancia en torno a los 150 ms (Liang y Badano, 2007), haciendo que fuera inadecuado para animaciones con rápidos cambios de 33
64 2. ANTECEDENTES este parámetro. Sin embargo P. Wang y Nikolić (2011) trataron de encontrar un monitor LCD entre los disponibles en el mercado que tuviera capacidades de temporización y estabilidad similares a las ofrecidas por monitores CRT, y lo lograron. El tiempo de inicio del contenido visual empleando este monitor LCD (Samsung 2233RZ 120 Hz LCD 22 ) fue estable a lo largo de todos las repeticiones, con un error inferior a 0,01 ms. La luminancia también fue constante a lo largo de las repeticiones (error inferior al 0,04 %) y las pruebas con diferentes duraciones (error inferior al 3 %), por lo que se sitúa a la par o incluso por delante de algunos monitores CRT y puede considerarse adecuado para presentaciones exactas y precisas de contenidos visuales. Lagroix, Yanko, y Spalek (2012) obtuvieron a su vez resultados muy favorables para los monitores LCD frente a los monitores CRT. A través de un conjunto de pruebas, hallaron que animaciones rápidas de imágenes blancas sobre fondo negro ocasionan una persistencia discernible en monitores CRT mientras que los monitores LCD no se ven afectados. Las animaciones de imágenes negras sobre fondo blanco no provocan persistencia en monitores CRT ni LCD. Asimismo, confirmaron la mejoría de la tecnología LCD en cuanto a la precisión temporal, encontrando tiempos de excitación mucho más cortos que los previamente estimados (de 1 a 6 ms, frente a los ms de estimaciones previas) y comparables a los propios de monitores CRT (en torno a 1 ms). Su conclusión, sorprendente para el área, es que los monitores LCD son preferibles a los monitores CRT cuando la persistencia visual es importante, salvo en los casos de animaciones de negro sobre blanco en los que ambas tecnologías son adecuadas. Sin embargo, la realidad es que ambas tecnologías sufren diversas limitaciones que las hacen inapropiadas para la presentación de contenido de muy corta duración (Elze y Tanner, 2009; Elze, 2010). Por un lado, conviene recordar que la luminancia de cada punto de una imagen mostrada por un monitor CRT no es constante, sino que depende de dos factores: la tasa de refresco y el tiempo de decaimiento. Este último factor depende del tipo de fósforo empleado y suele situarse en torno a los 1,5 y 6 ms para el tipo de fósforo más utilizado (P-22). Así, los investigadores que emplean monitores CRT en sus experimentos no deberán asumir una señal cuadrada con una duración del número de ticks configurados, sino una sucesión de pulsos discretos separados en el tiempo por la duración de un tick alargados momentáneamente lo que dure el tiempo de decaimiento. Por otro lado, como ya hemos avanza- 34
65 2.2 Análisis de la precisión y exactitud del hardware empleado do anteriormente, el tiempo de respuesta de una pantalla LCD indica cuánto tiempo es necesario para pasar de un nivel de luminancia a otro. Sin embargo, los tiempos proporcionados por los fabricantes no corresponden al funcionamiento habitual, ya que aprovechan el uso de mecanismos de compensación (overdrive) para mejorar únicamente determinadas transiciones. Además, estos mecanismos pueden afectar muy negativamente a la presentación síncrona de contenido visual compuesto de varios niveles de luminancia (Elze y cols., 2007) Audio El audio ha sido uno de los elementos a los que menos atención se ha prestado desde los inicios de la Web. Tanto es así que hoy en día todavía no se dispone de un estándar web unificado y abierto para la generación de audio. En lo que respecta a la presentación exacta y precisa de contenido auditivo, el objetivo de un sistema diseñado para ser usado por personas debería ser no superar los 5 10 ms de latencia, umbral en torno al que se sitúa el consenso actual sobre la idoneidad de un equipo de reproducción y grabación de audio (Y. Wang, Stables, y Reiss, 2012). Independientemente de la adecuación del hardware de audio a los requisitos temporales exigidos, los sistemas operativos constituyen habitualmente un factor que limita estas capacidades, sobre todo en el caso de que no se empleen sistemas operativos de tiempo real. Llegados a este punto, conviene recalcar la distinción entre los sistemas en tiempo real y los sistemas de tiempo real. Un sistema en tiempo real pretende trabajar con información lo más actualizada posible, proporcionando una sensación de novedad, rapidez y de continuidad temporal al usuario, tratando de lograr este objetivo de la mejor forma posible en función de las limitaciones de hardware y ancho de banda. Podríamos citar como ejemplos de sistemas en tiempo real los videojuegos o las simulaciones audiovisuales, donde la alta responsividad ante las interacciones del usuario confieren una elevada sensación de realidad; o las plataformas de ofimática colaborativa, donde diferentes usuarios pueden contribuir simultáneamente en la edición de un documento y tener constancia casi instantánea de los cambios incorporados por otros editores. A pesar de que es deseable que estos sistemas respondan con rapidez a los cambios, suelen estar diseñados con una política de mejor esfuerzo (best-effort), 35
66 2. ANTECEDENTES es decir, hacen lo que está en su mano para maximizar el rendimiento global (throughput) en términos estadísticos y no de conformidad con requisitos temporales estrictos. Por otro lado, los sistemas de tiempo real son aquellos en los que para que el funcionamiento del sistema se considere correcto no basta con que las acciones sean correctas, sino que tienen que ejecutarse dentro del intervalo de tiempo especificado. Dentro de esta categoría, en función la flexibilidad de sus restricciones temporales, se pueden distinguir: 1) sistemas con plazos estrictos (hard real-time), en los que el incumplimiento de un solo plazo tiene consecuencias inaceptables; 2) sistemas con plazos flexibles (soft real-time) en los que resulta aceptable que eventualmente se incumpla algún plazo; y 3) sistemas con plazos firmes (firm realtime) en los que resulta aceptable incumplir algún plazo, pero una respuesta tardía no tiene valor. A partir de estas definiciones podría entenderse que los sistemas de tiempo real han de ser necesariamente rápidos, pero no tiene por qué ser así. El sistema de guiado de un barco puede constituir un sistema de tiempo real en el que las decisiones sobre su rumbo se deban tomar bajo unas severas restricciones temporales o podría producirse un accidente. Sin embargo, teniendo en cuenta las bajas velocidades que se dan en el mar, se dispone de largos periodos de tiempo (del orden de minutos) para tomar esas decisiones de control. Un sistema con una política de mejor esfuerzo podría controlar este sistema de guiado con mucha mayor granularidad en la mayoría de los casos, pero si existiera la posibilidad de que, dada su naturaleza no determinista, en algún caso no se cumpliera el plazo definido, la solución sería inaceptable. Por contra, un sistema de tiempo real menos eficiente pero que siempre cumpla sus plazos proporcionaría una solución aceptable. Dicho esto, es importante señalar que los sistemas operativos más usados para ejecutar aplicaciones web no son sistemas de tiempo real (Microsoft Windows XP/Vista/7/8, Mac OS X, GNU/Linux). Las buenas noticias son que, a pesar de que el cerebro humano es capaz de detectar desviaciones en torno a los 20 µs entre cada oído como clave para determinar la posición espacial del origen del sonido (Pierce, 1999), diversos estudios afirman que la sensibilidad consciente de las diferencias temporales se sitúa en umbrales mucho más altos, en torno a los ms (Aschersleben, 2002; Rasch, 1979). 36
67 2.2 Análisis de la precisión y exactitud del hardware empleado A lo largo de las últimas décadas, varios grupos de investigadores han medido la latencia en el hardware de audio de ordenadores personales. Brandt y Dannenberg (1998) estudiaron la latencia mínima obtenible empleando sistemas operativos de propósito general (SGI Irix 6.4, Microsoft Windows 95, 98 y NT 4.0). Sus resultados no fueron del todo favorables para Windows 95 y NT 4.0, pero sí en el caso de Irix 6.4, en el que se cumplieron los requisitos planteados. Lago y Kon (2004) aportaron una extensa revisión bibliográfica acerca de los límites de la percepción humana en la latencia y su variabilidad (jitter), así como algunos detalles técnicos que conviene tener en cuenta a la hora de diseñar un sistema de audio preciso (v. gr., la separación de los altavoces mediante cableado extenso, los algoritmos de Procesado Digital de la Señal, etc.). Thom y Nelson (2004) realizaron un amplio conjunto de pruebas, analizando 4 tarjetas de sonido diferentes (Midiman MidiSport 2x2, USB; MOTU Fastlane, USB; EgoSys Miditerminal 4140, puerto paralelo; Creative Labs SoundBlaster Live! 5.1, PCI) sobre 5 sistemas operativos distintos (Linux 2.4 en una distribución Debian GNU/Linux con ALSA y núcleo con parches de baja latencia; Linux 2.6 con ALSA y núcleo 2.6.0; Mac OS X Panther con CoreMIDI; Microsoft Windows 2000 SP4 con WinMME; Microsoft Windows XP) y tres ordenadores diferentes (HP Pavilion 751n, Apple Mac G4, IBM Thinkpad T23). En todos los casos, la DT de la latencia se situó por debajo de 1,3 ms y su valor absoluto varió entre los 2,3 ms del mejor de los casos (Linux 2.6 con tarjeta SoundBlaster sobre HP Pavilion) y los 25,7 ms del peor (Linux 2.4 con tarjeta Midiman sobre HP Pavilion). Plant y Turner (2009) analizaron varios sistemas de reproducción de sonido (Acer AL718, Encore P-905U, Jazz J1321, Labtec LCS1060, Philips A1-2FPP005, Viglen EZX15F, Yamaha YST-M20DSP) empleando una tarjeta de sonido Creative Labs Sound Blaster Live Value! PCI con los drivers WHQL (Windows Hardware Quality Laboratories) para Windows XP. Tal y como era de prever, los altavoces que peor rendimiento obtuvieron fueron aquellos que emplearon la interfaz USB para la comunicación (10,12 ms de latencia frente a 3,21 ms del mejor de los casos). Por su parte, Y. Wang y cols. (2012) lograron latencias de 1,68 ms empleando Ardour sobre Linux con los drivers AL- SA y el software de conexión de audio JACK, un valor comparable a las consolas digitales de audio profesionales. 37
68 2. ANTECEDENTES Temporizadores Los temporizadores constituyen el elemento de hardware fundamental para asegurar la precisión y exactitud del sistema. Sin una referencia estable, precisa y ajustada, el resto de mecanismos de temporización podrían sufrir desplazamientos temporales difícilmente corregibles. Por esta razón, desde el primer modelo de IBM PC compatible, el ordenador personal ha contado con dispositivos hardware de temporización. Tal es el caso del temporizador programable de intervalos (Programmable Interval Timer, PIT), un chip Intel 8253/8254 que consiste en un oscilador, un predivisor de frecuencia y tres divisores de frecuencia independientes con un canal de salida cada uno. El oscilador tiene una frecuencia de funcionamiento de 1, MHz y una precisión de ± 1,73 s por día. El primer canal de salida puede emplearse para generar una interrupción de reloj (IRQ 0) periódica, cuya frecuencia suele fijarse en 18,2065 Hz (una IRQ cada 54,9254 ms), aunque puede dispararse con frecuencias mayores; o bien para generar interrupciones aperiódicas que se dispararán tras un periodo breve de tiempo (tiene que ser inferior a 1/18 s). Es decir, de esta forma el sistema es capaz de fijar temporizadores periódicos y aperiódicos (one-shot timers) a través del PIT. Sin embargo, dado que este temporizador requiere la comunicación mediante puertos de entrada/salida, el coste de invocación de un temporizador aperiódico es tan alto que en la práctica no tiene sentido utilizar el PIT con este propósito. El segundo canal se empleaba antiguamente para refrescar la memoria RAM, pero en la actualidad no se utiliza y es posible que no esté implementado. Finalmente, el tercer canal se emplea para fijar la frecuencia de los sonidos producidos por el PC-Speaker (Walling, 2012). En 1984, el IBM-AT incorporó el primer reloj de tiempo real (Real Time Clock, RTC) junto al chip Intel Se trataba de un chip Motorola MC146818A que, además del temporizador de tiempo real, incluía 64 bytes de RAM no volátil para almacenar información de estado (tipo del disco duro, cantidad de memoria, etc.). La frecuencia por defecto del RTC es de Hz y dado que el divisor de frecuencia está activado inicialmente, se dispara una interrupción a una frecuencia de 1024 Hz (una IRQ cada 0, ms), aunque puede modificarse. El RTC puede gestionar 15 tasas de interrupción entre 2 Hz y Hz de forma independiente, 38
69 2.2 Análisis de la precisión y exactitud del hardware empleado aunque en algunas plataformas no es posible superar los 8000 Hz. Un detalle importante al emplear el RTC es que es necesario desactivar el soporte de interrupciones no enmascarables (Non-Maskable Interrupts, NMI) ya que si se diera el caso de que se produjera una interrupción no enmascarable durante la programación del RTC, no bastaría con reiniciar el sistema, puesto que este chip no se inicializa durante el arranque, sino que dispone de una alimentación eléctrica propia (Earls, 2009). A pesar de ser un temporizador con más funcionalidades que el PIT, no ha tenido el éxito que se esperaba. Hay varias razones por las que esto ha podido suceder, pero la más influyente es que no está disponible en todos los ordenadores personales, por lo que es necesario detectarlo previamente y esto incita a los programadores a seguir utilizando el PIT (Riemersma, 1994). Con la llegada de los sistemas de multiprocesamiento simétrico (Symmetric Multi-Processing, SMP), los viejos controladores programables de interrupciones (Programmable Interrupt Controller, PIC) como el Intel 8259 fueron reemplazados por el estándar APIC (Advanced Programmable Interrupt Controller). La arquitectura APIC emplea dos componentes: el APIC local (LAPIC) y el APIC de entrada/salida. Existe un LAPIC por cada procesador, y un APIC de entrada/salida por cada bus en el sistema. Dentro del LAPIC hay un temporizador, el APIC timer. El gran beneficio de este temporizador es que se encuentra dentro del procesador, por lo que es mucho más fácil acceder a él. La principal desventaja es que no tiene un oscilador a una frecuencia fija, sino que emplea una de las frecuencias del procesador. Esto plantea dos problemas: 1) hay que consultar cuál es la frecuencia del temporizador antes de usarlo, y 2) la frecuencia del procesador puede variar dinámicamente, lo que complica excesivamente el uso de este temporizador como reloj. En cuanto a su funcionalidad, permite tres modos de funcionamiento: 1) periódico, 2) aperiódico, y 3) límite de contador de marcas temporales (Time Stamp Counter, TSC). El primero de ellos permite fijar un valor inicial que el temporizador irá decrementando periódicamente hasta llegar a cero, momento en el que se producirá una interrupción y se fijará de nuevo el contador al valor inicial. La frecuencia a la que se decrementa el contador depende de la frecuencia de bus del procesador y del valor del registro de configuración de la división de frecuencia de APIC (Divide Configuration Register). Así, por ejemplo, si creamos un temporizador periódico con el valor para un procesador a 2,4 GHz con una 39
70 2. ANTECEDENTES frecuencia de bus de 800 MHz y un valor del registro de configuración de la división de frecuencia de 4, el temporizador APIC lo decrementará a una frecuencia de 200 MHz, lo que provocará una interrupción cada 617,28 µs (Sondaar, 2007). El modo aperiódico funciona de manera muy similar, salvo que el contador no se restablece una vez la interrupción ha sido generada. El uso sin precaución de este modo podría dar lugar a condiciones de carrera (race conditions), pero a su vez permite un control más ajustado de los temporizadores. En cuanto al modo de límite de TSC, el funcionamiento es diferente. En lugar de fijar un contador que será decrementado por el temporizador, el sistema define un tiempo límite y el temporizador genera una interrupción cuando el contador de ticks del procesador (no confundir con los ticks del refresco de pantalla) alcanza ese valor. A pesar de que funcionalmente es muy similar al modo aperiódico, hay diferencias importantes de implementación, como por ejemplo que la frecuencia de estos temporizadores no es la del bus, sino la frecuencia nominal del procesador. Aún teniendo en cuenta todas estas funcionalidades, en la práctica no se emplea demasiado debido a los problemas que ocasiona su dependencia de la frecuencia del procesador. A finales de 1996 se publicó la primera versión del estándar ACPI (Advanced Configuration and Power Interface, no confundir con APIC citado previamente), para la gestión de la eficiencia energética en dispositivos hardware. Para controlar la duración de los tiempos de reposo del sistema de manera independiente a la frecuencia del procesador esta especificación incluye el temporizador de gestión de energía (Power Management Timer, PMP), un reloj que funciona a una frecuencia constante de 3, MHz y emplea un contador de 24 o 32 bits (configurable a través de un valor dentro de la tabla de configuración de ACPI). El modo de acceso y programación de este temporizador está implementado en hardware para incrementar su exactitud y precisión (Hewlett-Packard, Intel, Microsoft, y Phoenix Technologies, 2004). A partir de la quinta generación de procesadores Intel (Pentium) se introdujo la instrucción RDTSC con la que es posible acceder al valor del TSC. Este contador almacena el número de ciclos de procesador desde el arranque. A pesar de que la lectura de este valor es extremadamente rápida (del orden de decenas de ciclos de procesador) y que su elevada frecuencia permitiría en principio medir periodos de tiempo muy breves, la baja calidad del oscilador de los procesadores y la gran 40
71 2.2 Análisis de la precisión y exactitud del hardware empleado influencia que tiene la variabilidad de la temperatura en su estabilidad pueden suponer un prejuicio a su exactitud y precisión. En el listado 2.2 se muestra el uso de la instrucción RDTSC a través de un pequeño programa en ensamblador que devuelve el valor de los bits menos significativos del TSC al llamar a la petición al sistema SYS_EXIT en GNU/Linux. 1 global _start 2 _start: 3 rdtsc 4 xchg eax, ebx 5 inc eax 6 int 80h Listado 2.2: Lectura del TSC en NASM (The Netwide Assembler) para GNU/Linux. En sistemas multiprocesador existe un TSC por cada uno de los núcleos y su valor no tiene por qué estar sincronizado, por lo que es muy recomendable consultar siempre el valor de un mismo núcleo para evitar problemas. Además, desde el Intel Pentium Pro se admite la ejecución de instrucciones fuera de orden, por lo que una llamada a RDTSC podría ejecutarse más tarde de lo previsto y alterar la duración del intervalo medido. Para evitar este problema puede emplearse la instrucción CPUID, diseñada para identificar el núcleo en el que se ejecuta un programa, que permite la serialización de las instrucciones. En el listado 2.3 puede verse un fragmento de código ensamblador destinado a medir el tiempo transcurrido mediante el TSC al hacer una división de coma flotante que emplea CPUID para evitar estos problemas. 1 cpuid 2 rdtsc 3 mov time, eax 4 fdiv 5 cpuid 6 rdtsc 7 sub eax, time Listado 2.3: Comprobación del tiempo transcurrido al hacer una división de coma flotante (Intel, 1998). 41
72 2. ANTECEDENTES En procesadores más avanzados (Intel Core i7, AMD Athlon 64 X2 o superiores) está disponible la instrucción RDTSCP, variante serializada de RDTSC. Finalmente, el esfuerzo conjunto de Intel y Microsoft entre 1999 y 2004 produjo la publicación de la especificación HPET (High Precision Event Timer), que pretendía solventar los problemas detectados en los dispositivos de temporización previos. Esta especificación exige la existencia de un contador monotónicamente creciente con una frecuencia de al menos 10 MHz, además de un conjunto de comparadores (al menos 3 y hasta 256) de 32 y 64 bits. Estos comparadores pueden emplearse para crear temporizadores periódicos o aperiódicos. El HPET se emplea a través de un acceso de entrada/salida mapeado en memoria (situado en una dirección definida en la tabla ACPI HPET). No todos los sistemas operativos ofrecen soporte para HPET (Windows XP, Windows 2003 Server, y versiones anteriores de Windows, así como versiones anteriores a Linux 2.6 carecen de soporte) y puede darse el caso de que no se esté usando en favor de otros temporizadores más antiguos porque el soporte esté deshabilitado (puede comprobarse empleando la herramienta WinTimerTester y corroborando que la frecuencia de QueryPerformanceFrequency está por encima de los 10 MHz, típicamente a 14,31818 MHz). Sin embargo, no todo son ventajas al usar el HPET. El principal inconveniente derivado de su uso tiene que ver con el funcionamiento de los comparadores. En lugar de comprobar si el valor actual del contador es igual o mayor que el valor de un comparador, el HPET solamente evalúa si son iguales, por lo que puede darse el caso de que un programador fije un valor muy próximo al actual dentro de un comparador y que, por motivos de concurrencia, este cambio en el comparador llegue más tarde que su valor indicado. En este caso, en lugar de generarse una interrupción inmediata, habrá que esperar a que el HPET dé la vuelta completa al contador hasta alcanzar de nuevo el valor fijado (proceso que puede requerir hasta 306 segundos). Esta limitación en su diseño obliga a los programadores a combinar su uso con otros temporizadores de menor precisión que sirvan como sistemas de respaldo para evitar estos problemas. 42
73 2.3 Análisis de la precisión y exactitud de los mecanismos de temporización disponibles 2.3 Análisis de la precisión y exactitud de los mecanismos de temporización disponibles Una vez detallados los límites y funcionalidades relacionadas con el equipamiento hardware empleado, llega el turno de analizar la precisión y exactitud de los mecanismos de temporización disponibles en los diferentes sistemas operativos utilizados. Con el ánimo de evitar confusiones innecesarias, este análisis se dividirá en dos partes. En la primera de ellas, se repasan los temporizadores disponibles en sistemas Microsoft Windows y compatibles con UNIX, es decir, los mecanismos que permiten la invocación de procedimientos demorados. La segunda parte está dedicada al análisis de las diferentes funciones de tiempo disponibles en estos sistemas, es decir, los mecanismos destinados a la obtención de marcas temporales Temporizadores Al igual que ocurre con su implementación en hardware, los sistemas operativos brindan un amplio abanico de posibilidades para la creación de temporizadores. En la tablas 2.1 y 2.2 pueden verse sendos resúmenes de las principales API de temporización para sistemas compatibles con Windows y compatibles con UNIX (UNIX-like) respectivamente. API Standard Win32 Timers Multimedia Timers Waitable Timers Queue Timers Llamadas SetTimer, KillTimer timebeginperiod, timesetevent, timekillevent CreateWaitableTimer, SetWaitableTimer, CancelWaitableTimer CreateTimerQueueTimer, WaitOrTimerCallback, DeleteTimerQueueTimer Tabla 2.1: Resumen de las API para la creación de temporizadores en sistemas Windows. 43
74 2. ANTECEDENTES Si un programador necesita ejecutar un procedimiento al cabo de un periodo de tiempo en Windows y no tiene como requisito una elevada exactitud temporal, es probable que se decante por los temporizadores estándar de la API Win32. Estos temporizadores tienen la ventaja de funcionar en cualquier versión de Windows desde el modo usuario, aunque también sufren algunas limitaciones notables en cuanto a su exactitud y la responsividad del sistema (el procedimiento demorado lanzado por este tipo de temporizadores se ejecutará en el hilo dedicado a la interfaz de usuario). Para crear un temporizador de este tipo es necesario emplear la función SetTimer, incluyendo como argumentos el identificador de la ventana (puede estar vacío), el identificador de temporizador (un valor distinto de cero), el tiempo en el que expirará el temporizador (en ms) y un puntero a una función que gestionará los mensajes generados por el temporizador (habitualmente está vacía). De esta manera, se enviará un mensaje WM_TIMER a la ventana definida (o a la cola de aplicación, si no se definió ninguna ventana al crear el temporizador) periódicamente (según el periodo indicado al crear el temporizador) y la ventana o la aplicación será la encargada de ejecutar el código deseado al recibir este tipo de mensajes. Para eliminar el temporizador se emplea la función KillTimer, que requiere el identificador de ventana y el del temporizador como argumentos. Debido al sistema de colas de mensajes empleado en este tipo de temporizadores, las latencias en un sistema ocupado pueden ser grandes, pero su uso requiere muy pocos recursos del sistema y en muchos casos su exactitud es suficiente (v. gr., un temporizador encargado de comprobar si existen actualizaciones en un cliente de una red social). Cuando se precisa una mayor exactitud y precisión, es necesario descartar los temporizadores estándar de la API Win32 y optar por otras opciones, entre las que se encuentran: 1) los temporizadores multimedia, 2) los temporizadores con tiempo de espera, y 3) los temporizadores de colas. A pesar de que algunos autores desaconsejan su uso en favor de los temporizadores de colas (Osterman, 2005), los temporizadores multimedia proporcionan una exactitud y precisión cercana a 1 ms y no dependen de colas, sino que la función que se lanzará tras finalizar el temporizador podrá disponer de un hilo propio para su ejecución. La granularidad de este tipo de temporizadores ha de configurarse a nivel de todo el sistema empleando la función timebeginperiod, que recibe 44
75 2.3 Análisis de la precisión y exactitud de los mecanismos de temporización disponibles como argumento el periodo de comprobación de los temporizadores multimedia (en ms). El valor original se restablece a través de la función timeendperiod. Para crear un temporizador multimedia se utiliza la función timesetevent, que recibe como argumentos el tiempo en el que expirará el temporizador (en ms), la resolución del evento de temporización (en ms), un puntero a la función que se llamará al finalizar el temporizador, información sobre el usuario y el tipo de temporizador (TIME_PERIODIC o TIME_ONESHOT, para temporizadores periódicos y aperiódicos respectivamente). Para eliminar el temporizador se emplea la función timekillevent, que recibe el identificador de temporizador como argumento. Los temporizadores con tiempo de espera están disponibles desde Windows 98 / NT 4.0 y se emplean para bloquear la ejecución de hilos que necesitan realizar una espera. Internamente son objetos de sincronización en el núcleo del sistema cuyo estado se cambia a señalizado cuando el temporizador expira. Existen dos tipos de temporizadores con tiempo de espera: de reinicio manual (permanecen en el estado señalizado hasta que no vuelva a establecerse un tiempo de espera) y de sincronización (permanecen señalizados hasta que el hilo complete la espera). Ambos tipos pueden emplearse para crear temporizadores periódicos o aperiódicos. Estos temporizadores se crean a través de la función CreateWaitableTimer, que recibe como argumentos un puntero al descriptor de seguridad del temporizador, el tipo de temporizador (reinicio manual o sincronización) y un nombre de temporizador (puede estar vacío). Una vez creado, podrá llamarse a la función SetWaitableTimer para establecer una espera (en ms) y fijar qué función será llamada una vez esta espera finalice. El temporizador puede eliminarse a través de la función CancelWaitableTimer, indicando qué temporizador quiere cancelarse. Un detalle importante es que el hilo que quiera emplear este tipo de temporizadores debe configurarse con el estado de alertable o la función de finalización nunca será invocada. Los temporizadores de colas fueron introducidos con Windows 2000 y, al igual que los temporizadores con tiempo de espera, emplean objetos del núcleo que residen en colas de temporizadores. Las funciones configuradas para ser llamadas al expirar los temporizadores de este tipo serán ejecutadas por un hilo del conjunto de hilos de Windows. Para crear un temporizador de este tipo es necesario emplear la función CreateTimerQueueTimer, que recibe como argumentos la cola de 45
76 2. ANTECEDENTES temporizadores a la que se añadirá este temporizador (si no se establece ninguna, se añadirá a la cola por defecto de Windows), un puntero a una función que será invocada al finalizar el temporizador, los argumentos que se pasarán a esta función, el periodo de tiempo que deberá transcurrir la primera vez que se inicia este temporizador (en ms), el periodo de tiempo que deberá transcurrir el resto de veces (en ms, o cero para que solamente se lance una vez) y un conjunto de valores de configuración acerca de cómo se ejecutará la función llamada. Para eliminar un temporizador de este tipo se emplea la función DeleteTimerQueueTimer. La principal ventaja de este tipo de temporizadores es que introducen muy poca sobrecarga al sistema y son razonablemente precisos. A pesar de que Osterman (2005) defiende su uso frente a los temporizadores multimedia, Lee (2009) ha aportado datos que contradicen estas recomendaciones y cuestionan su precisión (retardos de hasta 10 ms para temporizadores fijados a 100 ms y mayores retardos para periodos más cortos). Zhang, Lu, Zhang, y Lian (2009) han corroborado la precisión en torno 1 ms de los temporizadores multimedia, y recomiendan evitar los temporizadores estándar de la API Win32 (basados en SetTimer) tanto de forma directa como a través de las funciones correspondientes en Visual Basic 6, Microsoft.Net o Delphi. API Interval Timers POSIX Timers POSIX Threads High-Resolution Timers Llamadas getitimer, setitimer timer_create, timer_getoverrun, timer_settime, timer_gettime, timer_delete pthread_cond_timedwait hrtimer_init, hrtimer_rebase, hrtimer_start, hrtimer_forward, hrtimer_cancel, hrtimer_try_to_cancel, hrtimer_get_remaining, hrtimer_get_res Tabla 2.2: Resumen de las API para la creación de temporizadores en sistemas compatibles con UNIX (UNIX-like). 46
77 2.3 Análisis de la precisión y exactitud de los mecanismos de temporización disponibles En el caso de sistemas compatibles con UNIX (v. gr., Free/Open/Net/BSD, GNU/Linux, Mac OS X, entre muchos otros), existe un amplio conjunto de API de temporización comunes a todos ellos, a pesar de que los detalles de implementación puedan tener grandes diferencias. Este hecho está motivado por la intención de adecuarse a las especificaciones POSIX (Portable Operating System Interface) del IEEE (Institute of Electrical and Electronics Engineers) en el diseño de estos sistemas para maximizar la compatibilidad entre ellos. Así, desde la primera versión del estándar POSIX se definieron los temporizadores de intervalo, lo más sencillos, basados en el envío de señales. En la siguiente versión de POSIX (PO- SIX.1b) se definieron las extensiones de tiempo real, entre las que se encuentra la especificación de relojes y temporizadores. Además, a través de la programación de hilos POSIX (pthreads) es posible implementar temporizadores en algunas versiones de UNIX (v. gr., Mac OS X), y sistemas compatibles como GNU/Linux tienen sus propias implementaciones de temporizadores de alta resolución (High Resolution Timers). Los temporizadores de intervalo generan señales que se envían periódica o aperiódicamente al proceso cuando el temporizador expira. Cada temporizador de intervalo se describe por dos parámetros: 1) la frecuencia a la que se emitirán estas señales (o el valor cero para temporizadores aperiódicos) y 2) el tiempo que resta para que el temporizador expire. Es importante reseñar que estos temporizadores garantizan que la señal no será enviada al proceso antes de que terminen, pero una vez expirado el temporizador, no es posible conocer con exactitud cuándo llegará la señal. Para definir un temporizador de intervalo se emplea la llamada al sistema setitimer, que recibe como primer argumento la política que seguirá el temporizador. Estos valores pueden ser: 1) ITIMER_REAL, el valor del temporizador se actualiza en función del tiempo real transcurrido y el proceso recibirá señales SIGALRM; 2) ITIMER_VIRTUAL, el valor del temporizador se actualiza en función del tiempo transcurrido por el proceso en modo usuario y el proceso recibirá señales SIGVTALRM; y 3) ITIMER_PROF, el valor del temporizador se actualiza en función del tiempo transcurrido por el proceso en modo núcleo y el proceso recibirá señales SIGPROF. El segundo argumento de setitimer es una estructura de tipo itimerval que contiene el valor inicial del temporizador (en 47
78 2. ANTECEDENTES s y ns) y el valor que tendrá cuando se renueve (cero para temporizadores aperiódicos). El tercer argumento es opcional y se trata de un puntero a otra estructura itimerval que será rellenada por la llamada al sistema con los valores previos. La implementación en GNU/Linux de este tipo de temporizadores con la política ITIMER_REAL precisa del uso de temporizadores dinámicos, puesto que el núcleo debe enviar señales al proceso incluso cuando no esté en ejecución (Bovet y Cesati, 2005). En relación a los temporizadores dinámicos de GNU/Linux, conviene recordar que la implementación original de los temporizadores en este sistema estaba basada en el incremento de un contador propio del núcleo (jiffies) en cada interrupción de reloj. Este valor marcaba el tiempo de conmutación de procesos y otras operaciones importantes. La frecuencia de interrupciones de reloj se definía por la constante HZ, que tenía un valor diferente para cada plataforma (v. gr., en Linux 2.4 para la plataforma i386, HZ valía 1000, por lo que se producía una interrupción cada 1 ms; a partir de Linux , HZ se fijó en 250 puesto que se consideró que 1000 era demasiado alto). Al definir un temporizador dinámico, se establecía su valor de jiffies y se añadía a la rueda de temporizadores. Esta rueda era una estructura que permitía al núcleo añadir, eliminar y comprobar de forma muy eficiente si los temporizadores dinámicos habían expirado a través de listas enlazadas parcialmente ordenadas (Molnar, 2005). A partir de Linux 2.6 este tipo de temporizadores se implementa de otra manera, mediante una función postergable, a través de la política TIMER_SOFTIRQ. Sin embargo, la especificación POSIX considera obsoleto el uso de este tipo de temporizadores y recomienda el uso de la nueva API de temporización (ver tabla 2.3). Estos nuevos temporizadores pueden crearse empleando diferentes relojes del sistema como referencia. En función del sistema operativo y su versión estarán disponibles unos u otros, pero el estándar define al menos dos: CLOCK_REALTIME y CLOCK_MONOTONIC. Adicionalmente, en GNU/Linux se permite emplear otros relojes de referencia como CLOCK_MONOTONIC_RAW (dependiente del hardware de temporización), CLOCK_PROCESS_CPUTIME_ID (tiempo por proceso) o CLOCK_THREAD_CPUTIME_ID (tiempo por hilo). En la tabla 2.4 se describen las implicaciones de la elección de cada uno de ellos. 48
79 2.3 Análisis de la precisión y exactitud de los mecanismos de temporización disponibles Función clock_settime() clock_gettime() clock_getres() clock_nanosleep() timer_create() timer_delete() timer_settime() timer_gettime() timer_getoverrun() Descripción Fijar un temporizador a un valor determinado Obtener el valor de un temporizador Obtener la resolución de un temporizador Demorar la ejecución del hilo actual con una espera de alta resolución Crear un temporizador Eliminar un temporizador Establecer un temporizador Obtener el valor del tiempo pendiente de un temporizador Obtener el valor del tiempo excedido por un temporizador Tabla 2.3: Funciones de la especificación POSIX para relojes y temporizadores. Pese a que no es un mecanismo de temporización propiamente dicho, es posible configurar la ejecución demorada de procedimientos a través de hilos POSIX. Para ello puede utilizarse la función pthread_cond_timedwait, que permite que un hilo espere a una condición para continuar con su ejecución. Sin embargo, en algunas implementaciones (principalmente en sistemas multiprocesador) puede darse el caso de que varios hilos retomen su ejecución cuando el cumplimento de la condición se comunica simultáneamente a varios procesadores. Por lo tanto, es recomendable evaluar de nuevo la condición cuando la espera termina y el hilo continúa, puesto que puede darse el caso de que se haya recibido un aviso equivocado. Finalmente, en algunas implementaciones de sistemas operativos compatibles con UNIX se dispone de una API de temporizadores de alta resolución a nivel de núcleo. En el caso de GNU/Linux (a partir de la versión ), estos temporizadores funcionan de forma independiente a los temporizadores dinámicos previamente descritos. En lugar de emplear jiffies como medida de referencia, emplean el hardware de temporización de alta resolución para obtener una granularidad de ns. Otra diferencia reside en el hecho de que se emplea una estructura de árbol rojo-negro en el núcleo para optimizar su rendimiento y minimizar los retardos en lugar de 49
80 2. ANTECEDENTES añadirse a la rueda de temporizadores (Jones, 2010). Además de las funciones disponibles desde el propio núcleo, la activación de este sistema de temporizadores de alta resolución se incorpora a las API ya comentadas a nivel de usuario (temporizadores de intervalo y temporizadores POSIX). Reloj de referencia CLOCK_REALTIME CLOCK_MONOTONIC CLOCK_MONOTONIC_RAW CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID Descripción Representa el reloj de tiempo real del sistema. En GNU/- Linux se actualiza aproximadamente cada ms (999,848 ns). Reloj monotónicamente creciente que no puede configurarse y mide el tiempo a partir de un momento no especificado en el pasado que no cambia en cada reinicio del sistema. Reloj monotónicamente creciente no influido por ninguna configuración externa. Reloj que mide el tiempo de procesador empleado por el proceso (incluye el tiempo de usuario y del sistema de todos sus hilos). Reloj que mide el tiempo de procesador empleado por el presente hilo. Tabla 2.4: Relojes de referencia disponibles para la creación de temporizadores PO- SIX Funciones de tiempo Si bien el uso de temporizadores adecuados puede contribuir a la presentación exacta y precisa de contenido audiovisual, la disponibilidad de funciones de tiempo con la resolución, exactitud y precisión necesarias es un requisito necesario para la obtención ajustada de la entrada del usuario. En este sentido, resulta razonable comparar este escenario con lo que sucede en un sistema de tiempo real con una planificación dirigida por eventos (event-driven), puesto que la respuesta del usuario será capturada por el sistema en forma de suceso o evento, al que habrá que 50
81 2.3 Análisis de la precisión y exactitud de los mecanismos de temporización disponibles asignar una marca de tiempo lo más ajustada posible al momento en el que se produjo. Una vez más, las opciones disponibles en los principales sistemas operativos son variadas y se corresponden con la evolución producida en la arquitectura hardware sobre la que operan. En la tabla 2.5 puede verse un resumen de las principales API para el uso de funciones de tiempo en sistemas compatibles con Windows y UNIX respectivamente. S.O. Windows Funciones de tiempo timegettime (influida por timebeginperiod) GetSystemTime (basada en GetTickCount) QueryPerformanceCounter y QueryPerformanceFrequency. UNIX-like gettimeofday clock_gettime mach_absolute_time y mach_timebase_info (Mac OS X) ktime_get (GNU/Linux) Tabla 2.5: Resumen de las API para el uso de funciones de tiempo en sistemas Microsoft Windows y compatibles con UNIX. Las obligaciones adquiridas por los sistemas operativos de Microsoft en aras de la compatibilidad con versiones previas han provocado que sus API de funciones de tiempo estén disgregadas, ofreciendo diferentes mecanismos con muy diversas resoluciones y exactitudes. Quizá pueda resultar chocante que la función de tiempo general del sistema (comúnmente conocida como wall clock) sólo se actualice cada 15 ms aproximadamente (15,625 ms en Windows XP, 15, ms en Windows Vista y Windows 7; ver Krishnan, 2008; Russinovich, Solomon, y Ionescu, 2009) debido a que el periodo del tick del sistema es constante y la llamada a la API de Windows GetSystemTime se apoya en GetTickCount, que precisamente devuelve el número de ticks desde el arranque del sistema multiplicados por el tamaño de su periodo. Este intervalo de tiempo también es importante, 51
82 2. ANTECEDENTES ya que en versiones anteriores a Windows Vista el planificador del sistema utiliza múltiplos de él para asignar los tiempos de ejecución de cada hilo (quantum). Como ya hemos comentado con anterioridad, si se utilizan las llamadas a la API de Windows timebeginperiod o NtSetTimerResolution con una resolución mayor que el periodo del tick, los valores devueltos por timegettime y GetTickCount diferirán, puesto que la primera utilizará temporizadores de mayor resolución y exactitud. Esta configuración tiene un impacto significativo en el sistema, ya que el número de interrupciones de temporizador se verá incrementado sustancialmente. Por ello, para obtener funciones de tiempo de alta resolución a través de la API de Windows lo más recomendable es apoyarse en dos llamadas relacionadas entre sí, QueryPerformanceCounter (para leer el valor del contador) y QueryPerformanceFrequency (para conocer la frecuencia de ese contador), que elegirán el mecanismo hardware subyacente más apropiado en cada arquitectura. En condiciones favorables, QueryPerformanceCounter puede ofrecer resoluciones por debajo de 1 µs, aunque su coste de invocación se sitúa por encima de ese valor (Kuperberg, Krogmann, y Reussner, 2009). Como puede apreciarse en la tabla 2.6, esto supone una ventaja de hasta cuatro órdenes de magnitud frente a otras llamadas al sistema (Wilson, 2003). Estos valores coinciden con los aportados por Zhang y cols. (2009), que además de evaluar las llamadas al sistema de forma directa, comprobaron su uso por llamadas de más alto nivel en Visual Basic 6 y Microsoft.Net 2.0. Función de tiempo Documentada Win98 WinNT4 WinNT4 (SMP) Win2000 WinXP GetTickCount timegettime GetSystemTimeAsFileTime 0, QueryPerformanceCounter Hardware GetThreadTimes 0,1 N/A GetProcessTimes 0,1 N/A Tabla 2.6: Resolución (en µs) de funciones de tiempo en sistemas Microsoft Windows (Wilson, 2003). En el caso de sistemas operativos compatibles con UNIX como Apple Mac 52
83 2.3 Análisis de la precisión y exactitud de los mecanismos de temporización disponibles OS X o GNU/Linux, la función de tiempo más común es la llamada al sistema gettimeofday, que devuelve la hora actual con una resolución de µs y un coste de invocación en torno a 1 µs. Si se utilizan los mecanismos de planificación adecuados, su exactitud y precisión son elevadas (DT del orden de decenas de µs en el peor caso), pero pueden verse perjudicadas severamente si la carga del sistema es alta y no se utilizan dichos mecanismos (Finney, 2001). Otro problema grave que afecta a gettimeofday es su falta de monotonicidad. Un temporizador monotónico o monotónicamente creciente siempre devuelve valores al menos iguales o superiores al valor previo. Esta característica es de vital importancia para medir intervalos temporales, puesto que su ausencia puede provocar mediciones con valores negativos. Para evitar esto, es recomendable utilizar la llamada al sistema clock_gettime con el parámetro CLOCK_MONOTONIC, que está soportada por la mayoría de sistemas compatibles con UNIX y nos asegura la monotonicidad del temporizador. No obstante, clock_gettime también tiene sus contrapartidas, entre las que destacan la falta de soporte en algunas plataformas (Apple Mac OS X entre ellas) y la falta de estabilidad entre reinicios del sistema (no conviene utilizarlo como mecanismo de obtención de marcas de tiempo para generar registros históricos del sistema). Para sustituir a clock_gettime en Apple Mac OS X se dispone de dos funciones, mach_absolute_time y mach_timebase_info, que se emplean de forma muy similar a las llamadas QueryPerformanceCounter y QueryPerformanceFrequency de la API de Windows, respectivamente. Como forma de solventar algunos de los problemas mencionados, algunos autores han sugerido el uso de métodos estadísticos para obtener medidas de alta resolución empleando temporizadores de baja resolución (Beilner, 1988; Danzig y Melvin, 1990; Lambert y Power, 2008). Sin embargo, estos enfoques no podrán aplicarse al caso del registro de la interacción del usuario en aplicaciones web, ya que requieren alta resolución en una sola medida, que difícilmente podría repetirse para que convergiera a un valor de mayor resolución. 53
84 2. ANTECEDENTES 2.4 Análisis de la precisión y exactitud del software especializado El número disponible de paquetes de software especializado en la presentación exacta y precisa de contenido audiovisual para la experimentación es realmente elevado. Debido a esta amplia oferta, los investigadores se ven a menudo obligados a aprender un gran número de opciones de configuración y lenguajes de programación propios en los que no todas las funcionalidades son coincidentes (i. e., la sintaxis de configuración de un programa puede tener menos opciones que la de otro programa, pero incluir un pequeño conjunto de funcionalidad extra que el programa con más opciones no implementa). Si a este escenario añadimos el hecho de que la mayoría de investigadores en el campo de la visión, la audición o la experimentación neurocientífica en general no tiene unos profundos conocimientos de programación, las posibilidades de cometer errores técnicos se incrementan. En la tabla 2.7 puede verse un resumen de las características de algunos de estos paquetes de software especializado. Nombre GUI Libre Scripting Plataforma Referencia DirectRT Sí No Custom Windows Stahl (2006) DMDX No Gratis Custom Windows K. Forster y Forster (2003) E-Prime Sí No E-Basic Windows Schneider, Eschman, y Zuccolotto (2002); Stahl (2006) Experiment Builder Sí No Python Windows SR Research Inquisit Sí No Custom Windows Stahl (2006) Matlab Psychophysics toolbox No Sí Matlab Win/Mac/Lin Brainard (1997) MEL Formularios No Custom IBM PC Schneider (1988) PEBL No Sí Custom Win/Mac/Lin Mueller (2010) Presentation Sí No Custom Windows Neurobehavioral Systems PsychoPy Sí Sí Python Win/Mac/Lin Peirce (2007) PsyScope Sí Sí Custom Mac OS Cohen, MacWhinney, Flatt, y Provost (1993) PsyToolkit No Sí Custom Linux Stoet (2010) PyEPL No Sí Python Mac/Lin Geller, Schleifer, Sederberg, Jacobs, y Kahana (2007) SuperLab Sí No Custom Windows Stahl (2006) Tscope No Sí C/C++ Win/Mac/Lin Stevens, Lammertyn, Verbruggen, y Vandierendonck (2006) Vision Egg No Sí Python Win/Mac/Lin Straw (2008) OpenSesame Sí Sí Python Win/Mac/Lin Mathôt, Schreij, y Theeuwes (2012) Tabla 2.7: Características de los principales paquetes de software especializado en experimentación (Mathôt y cols., 2012). 54
85 2.4 Análisis de la precisión y exactitud del software especializado Ante esta abrumadora oferta, muchos investigadores optan por emplear una herramienta que ofrezca un buen compromiso entre sencillez de uso y funcionalidades, además de contar con el aval de haber sido utilizada en muchos otros estudios previos. La herramienta que mejor encaja en este perfil es E-Prime (Schneider y cols., 2002). Más que un único programa de experimentación, E-Prime es un conjunto de aplicaciones que se combinan para cubrir todos los pasos implicados en la creación y despliegue de un experimento por ordenador. Así, dentro de E-Prime se distinguen los siguientes componentes: 1) E-Studio, una interfaz de usuario gráfica para el diseño de experimentos; 2) E-Basic, un lenguaje de scripting propio (prácticamente idéntico a Visual Basic for Applications de Microsoft); 3) E-Run, un intérprete de E-Basic capaz de asegurar que los experimentos se ejecutan con una precisión de 1 ms en la presentación, sincronización y recogida de datos; 4) E-Merge, una herramienta para la combinación de ficheros de datos; 5) E-DataAid, una utilidad de filtrado, edición, análisis y exportación de datos; y 6) E-Recovery, un sistema de recuperación de datos experimentales desde ficheros de datos corruptos o experimentos terminados inesperadamente. Una vez que un investigador ha diseñado con E-Studio su experimento, éste generará un fichero en E-Basic que será ejecutado por E-Run. Al finalizar el experimento, los datos serán eventualmente tratados por E-Merge o E-DataAid, y podrán ser reparados mediante E-Recovery. Si bien la ejecución de un experimento con E-Run puede hacerse desde cualquier ordenador que tenga instalado E-Prime (o incluso desde un ejecutable preparado para ello que no requiere la instalación de E-Prime), el uso de E-Studio está limitado a aquellos que hayan adquirido una licencia de uso. La empresa desarrolladora de esta herramienta (Psychology Software Tools) pone especial cuidado en que esto sea así a través de una llave criptográfica USB que se entrega con el software. Tal vez sea el hecho de que no todos los investigadores están decididos a pagar una licencia de uso de E-Prime lo que ha motivado que, incluso para Windows única plataforma en la que se ejecuta E-Prime, se hayan desarrollado numerosas alternativas gratuitas. De entre todas estas alternativas gratuitas para Windows, probablemente la más empleada sea DMDX (K. Forster y Forster, 2003). La principal razón no es su facilidad de uso, sino la gran comunidad de usuarios que desde 1975 venían utilizando DMASTR, un conjunto de utilidades de experimentación desarrolladas en la Monash University de Australia. Este software fue ampliado a 55
86 2. ANTECEDENTES lo largo de los años por diversos autores y portado a Windows 95 / 98 / Me por J. Forster en A pesar de las reticencias iniciales que provocaron la llegada de Windows NT y 2000 en relación al acceso directo al hardware y la exactitud y precisión de los mecanismos de temporización disponibles, K. Forster y Forster (2003) idearon la manera de migrar el antiguo DMASTR a Windows 2000 / XP y superiores a través del uso de DirectX y temporizadores multimedia. Este es el motivo de su nombre, que es la suma de DMASTR y DirectX: DMDX. Aunque DMDX es una aplicación con una interfaz gráfica, el proceso para diseñar, definir y llevar a cabo un experimento sigue muy orientado al trabajo con comandos. Este proceso comprende las siguientes fases: 1) el investigador define la configuración de su experimento mediante un fichero RTF (Rich Text File) empleando un editor estándar para ello (v. gr., WordPad, Open/LibreOffice, Microsoft Word); 2) DMDX analiza todos los comandos definidos en el fichero anterior y prepara la lista de ítems que serán presentados (i. e., desordena la lista si fuera necesario, genera los ítems pseudoaleatorios que se hayan requerido, etc.); 3) si todo es correcto, DMDX inicia la preparación de la presentación del experimento, que comienza con la petición a DirectX de que cambie al modo de pantalla indicado (previamente se deberá haber calibrado empleando la herramienta TimeDX) y la creación de tantos buffers de pantalla (i. e., DirectDraw Surfaces de DirectX) como sean necesarios; 4) se inicializa el temporizador multimedia; 5) se crea un hilo que estará a la espera de la señal de redibujado de pantalla; si al cabo del tiempo de redibujado definido en TimeDX no hubiera recibido esa señal, entendería que la ha perdido y volvería a sincronizarse; 6) se crea un hilo para el control de la entrada del usuario; y 7) si hubiera elementos de audio definidos en el fichero de configuración, se crearía un hilo para controlar su reproducción "+" %60 / "guerra" %15 / * "muerte" %120 / ; "+" %60 / "bomba" %15 / * "alegria" %120 / ; Listado 2.4: Definición de items en un fichero de configuración para DMDX / DMASTR. 56
87 2.4 Análisis de la precisión y exactitud del software especializado A nivel de usuario, la mayor ventaja de DMDX (i. e., su compatibilidad con DMASTR) también es su principal problema, puesto que la sintaxis de los ficheros de configuración dista mucho de ser intuitiva para quien se enfrenta por primera vez a la herramienta. En el listado 2.4 se muestra un ejemplo de definición de dos ítems. El primer carácter de cada línea indica si la respuesta correcta será positiva (+) o negativa (-), también pueden configurarse ítems que no requieran respuesta o que cualquier respuesta sea correcta. Después, se indica un valor numérico que identifica al ítem. Si dos ítems tienen el mismo valor numérico, solamente se almacenará la respuesta del último. Si se indica el valor cero como número de ítem, se entenderá que es un mensaje de instrucciones y no un ítem en sí. Posteriormente se definen tantos elementos de tipo marco (frame) como sean necesarios, delimitándolos con el separador /. Cada uno de estos marcos puede contener texto (delimitado por comillas dobles) o referencias a ficheros de imágenes, vídeo o audio. Además, puede configurarse la duración en ticks de cada uno de ellos empleando el carácter %. El carácter * indicará el punto a partir del cual se comenzará a medir la respuestas del usuario. La definición de un ítem finaliza con el carácter ;. Así, en el ejemplo mostrado se definen dos ítems en los que se quiere influir en el rendimiento del usuario a la hora de clasificar una palabra como positiva o negativa mostrando muy brevemente otra palabra. El primer ítem (001) requiere pulsar la tecla definida como negativa y comenzará mostrando el símbolo + en el centro de la pantalla durante 60 ticks (1000 ms a 60 Hz), seguidamente mostrará la palabra guerra durante 15 ticks (250 ms a 60 Hz) y en el siguiente marco activará el registro de la respuesta del usuario (mediante *) y mostrará durante 120 ticks (2000 ms a 60 Hz) la palabra muerte. Por último, el ítem terminará con un marco vacío. El segundo ítem (002) es muy similar, salvo en lo que respecta a la tecla definida como correcta (positiva en este caso). Como podemos observar, la definición de cada ítem requiere el conocimiento de una sintaxis especial de complejidad creciente cuando se requieren funcionalidades avanzadas como saltos condicionales o la generación automática de ítems, entre otras. Además de estas dos herramientas, dentro de la oferta para Windows hay muchas otras empresas que disputan el mercado comercial a E-Prime. Tal es el caso de las desarrolladoras de paquetes de software como DirectRT, SuperLab o Inquisit, descritos con detalle por Stahl (2006), entre muchos otros. 57
88 2. ANTECEDENTES Otros desarrolladores, por contra, optaron desde el principio por compartir sus herramientas con el resto de la comunidad (Brainard, 1997; Cohen y cols., 1993; Geller y cols., 2007; Mathôt y cols., 2012; Mueller, 2010; Peirce, 2007; Stevens y cols., 2006; Stoet, 2010; Straw, 2008). Algunos de estos proyectos han aprovechado el auge del lenguaje Python (Tiobe, 2012) para apoyarse en bibliotecas ya desarrolladas y no tener que empezar de cero. Además, se dan otras ventajas por el uso de Python: 1) la naturaleza inherentemente multiplataforma de este lenguaje proporciona la posibilidad de ejecutar estas herramientas tanto en Windows como en Mac OS y GNU/Linux; 2) la claridad de su sintaxis permite su uso como lenguaje de scripting para los usuarios de cada herramienta, evitando emplear un lenguaje propio de la misma; y 3) en los casos en los que el rendimiento sea crítico, podrá compilarse para agilizar su ejecución. Estas razones, unidas al desarrollo de una interfaz gráfica de usuario muy similar a la de E-Prime, han hecho de PsychoPy una alternativa libre y multiplataforma con una creciente comunidad de usuarios (Peirce, 2007). Una vez descritas sus características, resulta procedente cuestionar su validez en la presentación de contenido audiovisual y el registro de la interacción del usuario de forma exacta y precisa. Tal y como afirman MacInnes y Taylor (2001), el software comercial no suele validarse por terceros, principalmente debido a que no se dispone de acceso a su código fuente, e incluso en algunos casos no es posible su ejecución sin una licencia de uso. Con el objetivo de diseñar un sistema de validación de paradigmas experimentales en ordenadores personales, Plant, Hammond, y Whitehouse (2002) desarrollaron un conjunto de hardware y software capaz de medir de forma externa el comportamiento de cualquier software de experimentación. Esta propuesta sería perfeccionada más adelante en lo que denominaron el Black Box Toolkit (Plant y cols., 2004) (explicado con detalle en el capítulo 3). Los desarrolladores del software de experimentación SuperLab afirman en su documentación que su programa es capaz de registrar tiempos de respuesta con una precisión de 1 ms, tanto en Windows como en Mac OS X, a pesar de que recuerda que esta precisión esta supeditada a la que pueda ofrecer el dispositivo de entrada y a los temporizadores empleados. Por esta razón, el uso de los temporizadores multimedia es la opción recomendada en la versión para Windows (ver figura 2.5). 58
89 2.4 Análisis de la precisión y exactitud del software especializado Figura 2.5: Configuración de temporizadores en SuperLab. Además de los tiempos de respuesta, es necesario asegurar la precisión y exactitud de los tiempos de presentación. En este tipo de experimentos hay una serie de momentos en los que la precisión es crítica y otros momentos típicamente los intervalos entre las diferentes presentaciones que pueden aprovecharse para preparar el contenido crítico. Por este motivo, la mayoría de software especializado sigue una estrategia de preparar y ejecutar, en la que todo el contenido que se presentará de forma precisa se preparará de antemano para evitar cualquier posible retardo cuando llegue el momento (Mathôt y cols., 2012). DMDX utiliza tantos buffers de DirectX como sea posible para este cometido y los prepara antes de que dé comienzo el experimento. E-Prime emplea un procedimiento llamado PreRelease, a través del que la siguiente presentación se comienza a preparar antes de que termine la presentación anterior, minimizando los retardos entre ellas. De esta forma, sus desarrolladores afirman que E-Prime puede asegurar una precisión de 1 ms, entendiendo como tal que la DT de los tiempos medidos no superará los 0,5 ms (Schneider y cols., 2002). Asegurarse con total certeza que ninguna de las presentaciones o registros de respuesta sufrirá algún retardo superior a 1 ms a lo largo de un experimento no es posible si se emplea un sistema operativo con multitarea con desalojo como Microsoft Windows. De cualquier manera, E-Prime guarda un registro de todos los retardos con una alta exactitud y precisión (error < 0,5 ms), por lo que los experimentadores pueden decidir si filtrar o no los ensayos en los que ha habido algún problema. Como ya hemos comentado con anterioridad, tanto SuperLab como DMDX se apoyan en los temporizadores multimedia para la ejecución demorada de procedi- 59

References: resolución 
 resolución 
 resolución 
 Resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 Resolución 
 resolución 
 resolución 
 resolución 
 resolución