informática electrónica unidad 6 interfaces y manejadores ... · estáticamente, y un conjunto de...
TRANSCRIPT
![Page 1: Informática Electrónica Unidad 6 Interfaces y Manejadores ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/html5/thumbnails/5.jpg)
APIs y Device Drivers
API: Conceptos● Conceptualmente, un API expone a los
programas del usuario un conjunto de funcionalidades accesibles en 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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/html5/thumbnails/8.jpg)
APIs y Device Drivers
Código: Ejemplos ● Funcional:
int nbytes = send(tx_buf, len); /* C */● Objetos: ServerSocket server ( 30000 ); while ( true ){ ServerSocket new_sock; server.accept ( new_sock ); while ( true ){ std::string data; new_sock >> data; new_sock << data; } // C++
![Page 9: Informática Electrónica Unidad 6 Interfaces y Manejadores ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/html5/thumbnails/23.jpg)
APIs y Device Drivers
Device Drivers
![Page 24: Informática Electrónica Unidad 6 Interfaces y Manejadores ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/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 ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/html5/thumbnails/42.jpg)
APIs y Device Drivers
NDIS: ejemplo de uso● El programa “macaddr2” muestra la utilización
de la interface NDIS en Windows para acceder a las estadísticas de los adaptadores de red instalados
● Despliega una serie de tareas:● Identifica la versión de Windows● Obtiene del registro de Windows la lista de
adaptadores de red NDIS● Para cada adaptador muestra la información de
configuración (nombre, OID, etc.)
![Page 43: Informática Electrónica Unidad 6 Interfaces y Manejadores ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/html5/thumbnails/43.jpg)
APIs y Device Drivers
NDIS: ejemplo de uso (cont.)● Para cada adaptador crea un manejador usando CreateFile() y pide las estadísticas globales al device driver utilizando DeviceIoControl()
● El diagrama adjunto muestra el modelo de procesamiento
![Page 44: Informática Electrónica Unidad 6 Interfaces y Manejadores ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/html5/thumbnails/44.jpg)
APIs y Device Drivers
Main() Macaddr2
Determinar versión de
Sistema Operativo
Obtener info del registro sobre el
adaptador
Encuestar al driver NDIS vía IOCTRL por estadísticas
globales
802.3 (LAN)?
WAN?
Obtener MAC address
Obtener WAN address
Encuestar al driver NDIS vía IOCTRL
por estado de enlace
Encuestar al driver NDIS vía IOCTRL por velocidad del
enlace
Fin
Encuestar al driver NDIS vía IOCTRL
por medio de transmisión
Si
Si
Mas adaptadores
de red?
Si
![Page 45: Informática Electrónica Unidad 6 Interfaces y Manejadores ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/html5/thumbnails/45.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 46: Informática Electrónica Unidad 6 Interfaces y Manejadores ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/html5/thumbnails/46.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 47: Informática Electrónica Unidad 6 Interfaces y Manejadores ... · estáticamente, y un conjunto de funciones o procedimientos que pueden invocarse desde un programa aplicativo. Para](https://reader035.vdocuments.pub/reader035/viewer/2022071216/60488d8dc5b5093a317d62f3/html5/thumbnails/47.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