44
Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería [email protected]

Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería [email protected]

Embed Size (px)

Citation preview

Page 1: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Drivers – Puerto Paralelo

José Antonio Álvarez Bermejo

Dpt. Arquitectura de Computadores y Eca.

Universidad de Almería

[email protected]

Page 2: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Elsa, yo y el resto de vosotros…

Page 4: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Los actores….

• El procesador, como Elsa Pataky

• Sistema Operativo, como mono-karateka

• Periférico 1..N, como frikimonster apaleado.

Page 5: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Los principales actores

• Hardware.

En nuestro ejemplo es ELSA. Todo el mundo quiere comunicarse con ella, pero si lo permitimos, el sistema se colapsará.

• Sistema Operativo.

Es el manager de ELSA, se encarga de pasarle a Elsa las peticiones de procesos y periféricos.

• Proceso.

Programa en ejecución (ser vivo) que quiere contactar con Elsa para poder seguir haciendo su tarea.

• Periférico.

Suele relacionarse con un proceso.

Page 6: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

HARDWARE

• Procesador.

• Chipset

• Buses (FSB, …)

• IRQ – Interrupt Request.

• PIC – Programmable Interrupt Circuit

• Puertos – E/S : Fundamental para el subsistema

• BIOS – vectores de interrupción y servicios del sistema.

• Relación con el Sistema Operativo. También dan servicio a las rutinas de interrupción.

Page 8: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Sistema Operativo

• Es quien se encarga de:

• Dar recursos a los procesos.

• Gestionar procesos.

• Proporcionar MEDIOS para usar la RAM y comunicarse con dispositivos periféricos (para cualquier proceso).

• Proporcionar el soporte extendido para funciones de la BIOS.

• Controlar las áreas de memoria restringidas.

• ESPACIO DE USUARIO : PRINGAILLOS SPACE

• ESPECIO DE SISTEMA OPERATIVO : KERNEL SPACE

Page 10: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

La película, explicada de otra formaEl h

ard

ware

( p

roce

sad

or

)El h

ard

ware

( p

roce

sad

or

)

Page 11: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

La película, explicada de otra forma

¿Quién es en esta peli el Sistema Operativo?¿Quién es en esta peli el Sistema Operativo?

Page 12: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Algunos detalles más…

• ¿Cuál es la RAM?

• El frigorifico / la despensa

• Los perifericos está FUERA de la CASA de GRAN HERMANO.

• Si un PROCESO quiere COMUNICARSE con UN PERIFERICO tendrá que HACERLO a través del SUPER (CONFESIONARIO)

Page 13: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Algunos detalles más…(II)

• Si un proceso quiere COMUNICARSE con un PERIFÉRICO y el SUPER lo autoriza, entonces TAMBIEN PUEDE USAR el *FRIGO* para dejarles noticas.

• Estas direcciones de memorias se LLAMAN PUERTOS !

• No se pueden usar instrucciones NORMALES (caché).

Page 14: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Hasta aquí ….

• Deben estar claros :

• Hardware, es delicado y no se puede andar molestando.

• Sistema Operativo, gestiona la relación HW-SW

• Procesos

• Comunicación entre procesos.

• Comunicación procesos-dispositivos (a través del procesador)

Page 15: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

• Un proceso quiere un servicio de un dispositivo…

• Tiene que invocar al Sistema operativo.

• Terminará ejecutando algún servicio de la BIOS.

• Acceso a puertos de E/S.

Un ejemplo, más serio…

int main()int main(){{ char caracter;char caracter; caracter = getch();caracter = getch(); printf(“El carácter es %c \n”, caracter);printf(“El carácter es %c \n”, caracter);}}

Page 17: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Otro ejemplo…

• El dispositivo es el que quiere ser *considerado* … sin intervención (directa) de ningún proceso.

• Línea de interrupción ( atención !! USB vs PS2)

• PIC

• Interrupción del procesador (diferenciar de excepción)

• Ejecución ISR (BIOS)

• Retorno a la normalidad

Page 19: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

¿Encuesta (polling) / Interrupción?

• Mejor, Interrupción

Page 20: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

¿Encuesta (polling) / Interrupción?

• Aviso: Para recibir los favores del procesador no es necesario ser un periférico *guapo* sino tener una *buena* línea de interrupción asignada.

• IRQ1 – PS/2

• USB Bus de protocolo

Page 21: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

¿Qué es un driver?

• Un código que ayuda a que un proceso pueda comunicarse con un dispositivo sin tener que conocer muchos detalles sobre él.

• Sistema Operativo: posee el driver

• Hardware : el driver se comunica con cada controlador hw de cada dispositivo

• Proceso: usa el driver como una librería.

Page 22: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

¿Cuántos tipos de drivers?

• Un driver puede ser una DLL.

• Se generan muchos cambios de contexto.

• Un driver puede ser un DRIVER (.sys) (WDM)

• Se ejecuta casi todo en el espacio del kernel :más rápido.

• Puede ser :

__asm{

…..

}

Page 23: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Manos a la obra con el driver

• El código que desarrollemos ha de estar en el espacio de kernel.

• Tenemos que insertar el código en “el sistema operativo”

• Si tuvieramos malas intenciones podríamos corromperlo todo: No cargar drivers hasta que estén bien, bien, bien probados.

Page 24: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

WINDOWS !

• Usemos la herramienta WinObj

• Podremos consultar el directorio \Device

http://technet.microsoft.com/

es-es/sysinternals/bb896657.aspx

Page 25: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Acceso al HW en Windows (basico)

Page 26: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

ProcessExplorer !!• Podemos ver los manejadores de dispositivos que está usando cada

proceso…

Page 27: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Desarrollando el driver …

• El modo usuario se corresponde con el anillo 3 y el modo kernel se corresponde con el anillo 0. El anillo 0 es el modo de ejecución de las CPU x86 más privilegiado. Y el 3 el que menos. Por tanto si una aplicación que se ejecuta en modo usuario intenta interaccionar directamente con el hardware, no podrá y se generará una excepción del tipo “Exception Privileged Instruction”.

• Los drivers son programas que interaccionan con el hardware y que proporcionan una interfaz para que las aplicaciones que se ejecutan en el modo usuario sean capaces de tratar con el hardware.

• Ms-dos no imponía estas restricciones de seguridad (anillos)

Page 28: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Desarrollando el driver (II)…

• Instalación

• WDK

• Virtual Clone Drive

• No nos hace falta nada más.

Page 29: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Desarrollando el driver (III)…

• Vamos a crear un DRIVER vacío

Page 30: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Desarrollando el driver (IV) …

Page 31: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Desarrollando el driver (V) …

Page 32: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Desarrollando el driver (y VI) …

Page 34: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Explicación detallada …

• #include <wdm.h> : Esta librería es la que permite desarrollar los Drivers, viene incorporada con el DDK. WDM significa Windows Driver Model.

• Los Drivers de dispositivos en Windows funcionan con eventos. La ejecución del driver comienza con la función DriverEntry (es como la función main de un driver)

• Cuando el Driver termina de ejecutarse no muere, todo lo contrario, queda cargado en memoria y se puede volver a usar en cualquier otro momento. Asi que se podría volver a invocar cualquier función del driver cuando ocurra algún evento, por ejemplo al insertar hardware (evento) se puede invocar una función dentro de nuestro driver. Pero como en nuestro DriverBasico sólo hemos escrito la función DriverEntry …

Page 35: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Explicación detallada (II)…

• Si la función DriverEntry tras ser ejecutada no termina devolviendo un STATUS_SUCCESS (algo así como ESTADO_EXITO) entonces Windows pensará que el driver está dando problemas y lo eliminará de memoria.

Page 36: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Explicación detallada (III)…

• Al usar la herramienta msinfo32 para inspeccionar a nuestro driver, lo podemos ver porque tras la ejecución de DriverEntry, el driver queda a la espera de nuevos eventos, pero como no le hemos añadido más funcionalidad, a pesar de estar cargado y a la espera, el driver no puede hacer nada más.

Page 37: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Explicación detallada (IV)…

Page 38: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Extensión : controlar Puerto Paralelo.

Page 39: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Extensión : controlar Puerto Paralelo.

Page 40: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Extensión : controlar Puerto Paralelo.

Page 41: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Extensión : controlar Puerto Paralelo.

Page 42: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

Extensión : controlar Puerto Paralelo.

Page 44: Drivers – Puerto Paralelo José Antonio Álvarez Bermejo Dpt. Arquitectura de Computadores y Eca. Universidad de Almería jaberme@ual.es

© 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only.MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.