Arquitectura y Computacin Paralela TRABAJO EXTRA - CLASE Carlos Vinicio Caraguay Profesional en Formacin, Escuela de Ciencias de la Computacin, UTPL, Loja - Ecuador IMPLEMENTACIN DE LA SUBRUTINA DE UN PERIFERICO USANDO HILOS INTRODUCCIN: En los sistemas operativos tradicionales, cada proceso tiene su propio espacio de direcciones y un nico flujo (hilo) de control. De hecho, casi es esa la definicin de proceso. Sin embargo, frecuentemente hay situaciones con la que es necesario contar con mltiples hilos de control en el mismo espacio de direcciones ejecutndose casi paralelamente, como si fueran procesos separados. En el presente taller vamos a tratar de explicar cmo es la subrutina de un mouse en el sistema operativo Linux. MARCO TERICO: SUBRUTINA: Una subrutina es un procedimiento que ejecuta algo, es un segmento de cdigo separado del bloque principal y que puede ser invocado en cualquier momento. Ejemplos de subrutinas: seran procedimientos para dibujar algo en la pantalla, tocar un sonido, etc. Cabe destacar por ejemplo en el caso de un mouse el hacer clic, sera un evento es as que una subrutina se da despus de un evento. HILOS: Hilo es una secuencia de control que opera dentro del mismo espacio de direcciones del proceso. Necesita un contador de programa, que indica cual es la prxima instruccin a ejecutar Generalmente cada hilo tiene una tarea especfica y determinada, como una forma de aumentar la eficiencia del uso del procesador. Estados de un hilo: Creacin: cuando se crea un proceso, se crea un hilo para este proceso, luego este hilo puede crear otros hilos dentro del mismo proceso. Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea. Ahora el procesador podr pasar a ejecutar otro hilo que est listo para ejecutarse Desbloqueo: cuando el suceso por el que el hilo se bloqueo se produce Intermedio: cuando un hilo es interrumpido por otro de mayor prioridad. Terminacin: cuando un hilo finaliza se libera su contexto y colunmas INTERRUPCIN: Una interrupcin es un mecanismo que permite ejecutar un bloque de instrucciones interrumpiendo la ejecucin de un programa, y luego restablecer la ejecucin del mismo sin afectarlo directamente. De este modo un programa puede ser interrumpido temporalmente para atender alguna necesidad urgente de la computadora y luego continuar su ejecucin de manera normal y como si nada hubiera pasado. De forma general para llevar a cabo la funcin de procesamiento en una computadora, se podra graficar de la siguiente forma:
Para lograr la sincronizacin entre CPU y dispositivos de E/S hay dos mtodos: - Transferencia de datos por interrupciones - Transferencia de datos por acceso directo a memoria
IMPLEMENTACIN Los controladores de ratn del ncleo en Linux son administrados por gpm, este maneja la accin de cortar y pegar, suministra una biblioteca general para aplicaciones que conocen el mouse. No todos los mouse son manejados por el ncleo, la mayora de controladores de ratn siguen una interfaz comn llamada protocolo de bus del mouse. Por cada lectura de un dispositivo de una interfaz del bus de mouse retorna un bloque de datos
Primero se inicializara las funciones para el mouse, por lo que tiene tres puertos de E/S, adems se utilizara la interrupciones y los puertos sern la posicin X, Y y los botones.
Se procede a revisar si existe el espacio de direcciones, y se reserva. Entonces se ordena al controlador que nos asigne un nmero menor, y el dispositivo acta como redirector para las peticiones
La funcin init_ module es llamada cuando el modulo es cargado. La funcin cleanup_module es llamada cuando el modulo es descargado, para dar a conocer posteriormente que el espacio de E/S est disponible. A continuacin se procede a llenar las operaciones de archivo
En los campos se bloquea la carga para que el modulo no sea descargado mientras est siendo usado. Funciones Open y Close
La funcin open sirve como contador para saber cuntas veces ha sido abierto el mouse para no pedir interrupcin mltiple El controlador del mouse soporta todas las operaciones de E/S
Si la cola no est vaca enva la seal requerida al proceso para que sea informado del movimiento del mouse que ocurre en ese instante.