informática electrónica unidad 6 interfaces y manejadores
TRANSCRIPT
![Page 1: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/1.jpg)
APIs y Device Drivers
Informática ElectrónicaUnidad 6
Interfaces y Manejadores de Dispositivos
![Page 2: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/2.jpg)
APIs y Device Drivers
Modalidad y Materiales
● Dos clases expositivas a cargo del docente responsable ([email protected])
● Una práctica cargo de los alumnos (Práctica 5) que deberá entregarse antes del fin de cursado.
● Tres documentos de bibliografía en la página de material de la cátedra
● Documentos complementarios desarrollados en clase
![Page 3: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/3.jpg)
APIs y Device Drivers
API
● Application Program Interface (interface para programas aplicativos) es el mecanismo mediante el cual un programa aplicativo accede a servicios de otros componentes de software
● Un API puede tomar distintas formas:● Librerías● Procedimientos● Protocolos● Objetos
![Page 4: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/4.jpg)
APIs y Device Drivers
Componentes de un API
● Convenciones de utilización● Estructuras de datos● Protocolos de invocación● Mecanismos de sincronización
![Page 5: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/5.jpg)
APIs y Device Drivers
API: Conceptos
● Conceptualmente, un API expone a los programas del usuario un conjunto de funcionalidades accesibles un forma controlada
● Un API puede permitir el acceso a dispositivos físicos (device drivers), a servicios de plataforma tales como E/S y comunicaciones o a funcionalidades específicas de una pieza de software
![Page 6: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/6.jpg)
APIs y Device Drivers
API: Arquitectura
API
Aplicación Aplicación Aplicación
Hardware u otras capas de software
![Page 7: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/7.jpg)
APIs y Device Drivers
API: Arquitectura
API
AplicaciónLlamada Respuesta
![Page 8: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/8.jpg)
APIs y Device Drivers
Código: Ejemplos
● Funcional:int nbytes = send(tx_buf, len); /* C */
● Objetos:sc = new Socket(port);salida = new DataOutputStream(sc.getOutputStream()); salida.write(i); // Java
![Page 9: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/9.jpg)
APIs y Device Drivers
API: Tipos
● Dependiente del lenguaje: disponible para ser utilizada desde un lenguaje de programación específico. Ejemplo: API de sockets de UNIX (C)
● Independiente del lenguaje: diseñada de forma tal que puede utilizarse por programas escritos en distintos lenguajes de programación. Ejemplo: web services
![Page 10: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/10.jpg)
APIs y Device Drivers
API's: Ejemplos
● POSIX: Interface a los servicios de los sistemas operativos UNIX/POSIX
● WIN32: Interface a los servicios de Windows● Linux Standard Base: ídem anteriores para Linux● Nvidia CUDA: (Compute Unified Device
Architecture) compilador y conjunto de herramientas de desarrollo que permiten a los programadores usar una variación del lenguaje C para codificar algoritmos en GPUs de nVidia.
![Page 11: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/11.jpg)
APIs y Device Drivers
Componentes de un API
● Uno o mas archivos de encabezado (*.h)● Una o mas librerías (*.o, *.lib, *.dll, etc.)● Un paquete de clases (Java: *.jar)● Usualmente encapsuladas en un “SDK”
(software Development Kit)● Una especificación de protocolo y mensajes
![Page 12: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/12.jpg)
APIs y Device Drivers
Modelos
● Un API puede utilizar uno o mas mecanismos para comunicarse con los programas aplicativos, por ejemplo:● Llamada a funciones● Invocación de métodos● Paso de mensajes
![Page 13: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/13.jpg)
APIs y Device Drivers
API Basada en Funciones● Un API basada en funciones se presenta como
una librería que se carga dinámica o estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo.
● Para utilizarla se debe compilar el aplicativo junto con los encabezados (*.h) y linkeditar con uno o mas archivos *.lib
● Si la librería es dinámica se carga sólo en el momento de ejecución, y toma la forma de DLLs (Windows) o SO (Unix/Linux)
![Page 14: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/14.jpg)
APIs y Device Drivers
API Basada en Funciones
● Es un modelo muy utilizado● Ejemplos:
● Placas adquisidoras de datos y conversores A/D● Placas de comunicaciones● Placas de captura de video
![Page 15: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/15.jpg)
APIs y Device Drivers
API Basada en Mensajes● Establecen protocolos de diálogo en una
arquitectura similar al modelo OSI● Incluyen al menos una capa física, una de
enlace y una de aplicación● Como el intercambio está basado en mensajes,
permiten independizar el lenguaje del aplicativo● Ejemplo:
● NMEA● Garmin● ELCOM
![Page 16: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/16.jpg)
APIs y Device Drivers
APIs Basada en Objetos● Utilizable cuando el lenguaje de programación
soporta el modelo de objetos: Java, C++, .NET● Se presenta como un paquete de clases que
brindan las funcionalidades requeridas mediante la instanciación de objetos y la posterior invocación de métodos sobre estos objetos
● Ejemplos:● Java ME para dispositivos móviles● Componentes de comunicaciones
![Page 17: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/17.jpg)
APIs y Device Drivers
Caso de Estudio: Garmin GPS SDK
● Diseñada por un fabricante de dispositivos de posicionamiento satelital para la comunicación de los programas aplicativos con el GPS vía la interface física RS/232c o USB (Universal Serial Bus)
● Está especificada en protocolos● Permite la comunicación bidireccional con el
dispositivo GPS con un paradigma comando-respuesta.
![Page 18: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/18.jpg)
APIs y Device Drivers
API Garmin: Modelo Arquitectural
Capa Física
Capa de Enlace
Capa de Aplicación
![Page 19: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/19.jpg)
APIs y Device Drivers
Comunicación
Capa Física
Capa de Enlace
Capa de Aplicación
Capa Física
Capa de Enlace
Capa de Aplicación
Host GPS
Protocolo de Aplicación
Protocolo de Enlace
Protocolo FísicoRS232/USB
![Page 20: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/20.jpg)
APIs y Device Drivers
Implementación Windows
S.O. Windows
Hardware
Garmin Communicator Plugin
Aplicación del Usuario
GPSUSB
![Page 21: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/21.jpg)
APIs y Device Drivers
Garmin SDK
http://developer.garmin.com/web-device/device-sdk/
![Page 22: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/22.jpg)
APIs y Device Drivers
Garmin SDK
● Encontramos tres herramientas:● La documentación● El Software Development Kit● Uno o mas ejemplos
● Consejo:● Leer la documentación● Bajar e instalar el SDK● Compilar y probar
![Page 23: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/23.jpg)
APIs y Device Drivers
Device Drivers
![Page 24: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/24.jpg)
APIs y Device Drivers
Bibliografía● Arquitectura de diseño de Device Drivers para Windows
(en inglés)● Linux Device Drivers (en inglés)● Comparación de arquitecturas de Device Drivers
en Linux y Windows (en inglés)● Todos los buenos libros sobre Sistemas
Operativos, por ejemplo “Sistemas Operativos Modernos” de Tannenbaum tienen capítulos dedicados al tema.
![Page 25: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/25.jpg)
APIs y Device Drivers
Manejadores de Dispositivos
● En inglés “Device Drivers”, son piezas de software que se adicionan a los sistemas operativos para permitirles operar dispositivos.
● Los viejos kernels monolíticos manejaban un conjunto limitado de dispositivos
● En la actualidad un S.O. debe operar gran multiplicidad de dispositivos, algunos inexistentes cuando el S.O. fue diseñado
![Page 26: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/26.jpg)
APIs y Device Drivers
Arquitectura
Hardware
Capa de abstracción del hardware
Kernel
Device Driver
API del S.O.
Device Driver Device Driver
Aplicación Aplicación Aplicación Aplicación
EspacioDel
Kernel
EspacioDe
Usuario
open(), read(), write()
![Page 27: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/27.jpg)
APIs y Device Drivers
¿Qué es un Device Driver?
● Una pieza de software que nos permite acceder a servicios de uno o mas dispositivos
● Puede ser provisto por el fabricante del S.O., por el fabricante del dispositivo o por terceros, o incluso, fabricado por el usuario
● Es fuertemente dependiente de la plataforma y del dispositivo, y generalmente no es “portable”
![Page 28: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/28.jpg)
APIs y Device Drivers
Clases de DD
● Kernel Space: el DD es integrado al código del Kernel del SO, y corre en la región de memoria y con el nivel de privilegio de Kernel. Las fallas del DD pueden comprometer la estabilidad de todo el sistema.
● User Space: el DD corre como una aplicación de usuario, sin privilegios especiales y en su espacio de memoria propio.
![Page 29: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/29.jpg)
APIs y Device Drivers
Política y Mecanismo
● Los DD deben transferir datos desde o hacia la periferia -un disco rígido, un enlace de comunicaciones o un sensor- a la memoria del computador en forma eficiente y previsible
● Existen distintas técnicas para ejecutar esta tranferencia, entre las mas usadas están● DMA (Direct Memory Access)● Programmed I/O (interrupciones)
![Page 30: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/30.jpg)
APIs y Device Drivers
Ciclo de Vida de un DD
● Un DD puede estar integrado en forma rígida con el SO o puede ser cargado y descargado bajo demanda.
● Ejemplo del primer caso son los DD de discos internos de una computadora
● Ejemplo del segundo caso es el de los dispositivos “plug-and-play”
![Page 31: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/31.jpg)
APIs y Device Drivers
Marcos de Desarrollo
● Por la complejidad inherente al desarrollo de DD, los sistemas operativos modernos brindan entornos de programación que proveen funcionalidades de base y permiten al diseñador de DD centrarse en el manejo del dispositivo
● Consisten en especificaciones, librerías y herramientas a disposición del diseñador
![Page 32: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/32.jpg)
APIs y Device Drivers
Marcos de Desarrollo
● Windows: ● Microsoft proporciona el Windows Driver
Foundation, que especifica el modelo arquitectural que deben seguir los DD para los sistemas operativos Windows, y el Windows Driver Kit, con las herramientas necesarias para el diseño, la construcción, prueba y certificación de DD
![Page 33: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/33.jpg)
APIs y Device Drivers
Marcos de Desarrollo
● Linux: ● el proyecto Linux Driver Project aspira crear una
plataforma común para el desarrollo, prueba y certificación de DD de este sistema operativo.
http://www.linuxdriverproject.org/
![Page 34: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/34.jpg)
APIs y Device Drivers
Arquitectura
● Los distintos sistemas operativos imponen en mayo o menor medida una arquitectura para los DD que soportan
● En algunos casos la arquitectura es obligatoria (Windows) y en otros hay mas elasticidad (Linux)
![Page 35: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/35.jpg)
APIs y Device Drivers
Arquitectura WDM (Windows kernel mode dd)
Windows KernelI/O Manager
Kernel Mode
User Mode
KMDF
Application
Win32 API
Kernel-Mode Driver
I/O request
![Page 36: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/36.jpg)
APIs y Device Drivers
Arquitectura WDM (Windows user mode dd)
Driver Manager
Windows Kernel I/O Manager
Kernel Mode
User Mode
Reflector
Application
Host Process
User-mode Driver
UMDF
Runtime EnvironmentWin32 API
I/O request
![Page 37: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/37.jpg)
APIs y Device Drivers
Arquitectura DD Unix/Linux
Hardware
Kernel
Módulo
System Calls API
Módulo Módulo
Aplicación Aplicación Aplicación Aplicación
EspacioDel
Kernel
EspacioDe
Usuario
open(), read(), write()
![Page 38: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/38.jpg)
APIs y Device Drivers
Utilización de un DD
● Según la plataforma, existen servicios del S.O. que permiten acceder en forma controlada a los dispositivos.
● El modelo de acceso sigue la lógica de archivos. El dispositivo es mostrado por el S.O. como un archivo especial, sobre el cual pueden ejecutarse lecturas, escrituras y funciones de control.
● En todo caso el programa que quiere acceder al DD debe obtener un “manejador” (handler).
![Page 39: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/39.jpg)
APIs y Device Drivers
Device Handlers
● En Windows se obtiene mediante la llamada CreateFile(), tomando como argumento el “device path”: \\device\deviceX
● En Unix/Linux, la llamada open() devuelve un “file descriptor” asociado al archivo de dispositivo en el directorio /dev.
● El acceso a los servicios del DD se hace vía el API del sistema operativo
![Page 40: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/40.jpg)
APIs y Device Drivers
Acceso al DD vía API del S.O.
● Windows:● CreateFile()● WriteFile()● ReadFile()● DeviceIoControl()
● Linux/Unix:● open()● read()● write()● ioctl()
![Page 41: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/41.jpg)
APIs y Device Drivers
Caso de Estudio I: NDIS
● NDIS es el API estándar de Windows para el acceso a las funciones de red
● El ejemplo muestra la lectura de configuración de la capa MAC (Medium Access Control)
● Otro ejemplo de acceso a un DD en Windows es el API Garmin
![Page 42: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/42.jpg)
APIs y Device Drivers
Caso de Estudio II: RTC Linux
● Todas las computadoras tienen un “Reloj de Tiempo Real”, encargado de mantener la referencia temporal externa en forma permanente, aún cuando la PC esté apagada
● Es frecuentemente utilizado el chip Motorola MC146818
● En Linux este dispositivo es representado mediante el archivo especial “/dev/rtc”
![Page 43: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/43.jpg)
APIs y Device Drivers
Lectura del RTC en Linux*
/* Leer los segundos de RTC */unsigned char segundos;int fd;fd = open (“/dev/rtc”, O_RDONLY);ioctl (fd, 0, &segundos);close (fd);
/* Leer fecha y hora del RTC */char fecha_hora[256];int fd;fd = open (“/dev/rtc”, O_RDONLY);read (fd, fecha_hora, 255);close (fd);
* Ubuntu
![Page 44: Informática Electrónica Unidad 6 Interfaces y Manejadores](https://reader034.vdocuments.us/reader034/viewer/2022042822/62696f2ad0cb6324c471b055/html5/thumbnails/44.jpg)
APIs y Device Drivers
Práctica 5
● Para hacerla se debe conocer al menos:● Uso de gcc y make o gmake en Linux● Uso de Visual C++ (o Visual Studio) en Windows