Interfaces y Manejadores de Dispositivos

Documentos relacionados
Informática Electrónica Interfaces para los programas de aplicación (APIs)

Interfaces y Manejadores de Dispositivos

LABORATORIO 2. La biblioteca a nivel de usuario semso (semáforos Sistemas Operativos) brinda las siguientes primitivas:

Introducción. Sistemas Operativos. Pedro Chávez Lugo 23 de marzo de 2010

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

Capítulo 1 Introducción a la Computación

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

Tema 2: Introducción a Android

Unidad 1: Conceptos generales de Sistemas Operativos.

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

Modelo de aplicaciones CUDA

Producto. Información técnica y funcional. Versión 2.8

Informática Electrónica Manejadores de Dispositivos (Device Drivers)

Programación de Sistemas

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Sumario Instalación MDT V

Instalación del Software Magaya

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

Capitulo 1: Plataforma Android

Una mirada práctica a los Micro-Kernels y los Virtual Machine Monitors François Armand, Michel Gien INFORMATICA III

Unidad I. Introducción a la programación de Dispositivos Móviles (Continuación )

Instalación de MarkVision

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Arquitecturas GPU v. 2013

Estructura del Sistema Operativo. Módulo 2. Estructuras de Sistemas Operativos

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

Sistemas de archivos distribuidos. Alvaro Ospina Sanjuan

Software Computacional y su clasificación

Guía de Instalación de la JDK y del Eclipse

Contenido. Sistemas de Entrada/Salida. Categorias de los Dispositivos de Entrada/Salida. Categorias de los Dispositivos de Entrada/Salida

Contenidos. Sistemas operativos Tema 3: Estructura del sistema operativo. Componentes típicos de un SO. Gestión de procesos.

Programación Concurrente

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

Capítulo 5. Cliente-Servidor.

E-Government con Web Services

Diseño dinámico de arquitecturas de información

Taxonomía de los sistemas operativos. Programación de Sistemas. Características en Win3.1 (1/3) Características en Win3.1 (3/3)

Trabajo TICO Unidad 2: Sistemas Operativos. Guillermo Jarne Bueno.

Enseñanza de programación multihilo y controladores de dispositivo en entornos Windows para alumnos de electrónica

DIPLOMADO EN SEGURIDAD INFORMATICA

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Workflows? Sí, cuántos quiere?

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

Máxima personalización y adaptabilidad del sistema. Funciona por Wifi, 3G o red LAN. Panel de control personalizado para programar los parámetros.

En los últimos años, se ha presentado una enorme demanda por servicios portátiles,

Guía de instalación del servidor

Manual Instalación Versión 7

U2. Introducción al desarrollo de aplicaciones móviles Smartphone y Android Desarrollo de Aplicaciones III TIC-UTSV Enero 2015 I.S.C.

Instrucciones de instalación de Utilidades Intel

GUIA PARA LA DISTRIBUCION DE APLICACIONES DE VISUAL BASIC 6.0

Windows Server 2012: Infraestructura de Escritorio Virtual

Microsoft Office 2010 Illustrated. Tipos de Software

4 ARQUITECTURA DE COMUNICACIONES

Utilización del sistema operativo GNU/ Linux en las netbooks

INTRODUCCIÓN A HMI (Interfaz Hombre Máquina)

Estructura del Sistema Operativo. Módulo 2. Estructuras de Sistemas Operativos

INTRODUCCIÓN A JAVA. Índice

Gestión Dispositivos Móviles Dexon Software

Lab 05: Redes Inalámbricas

Oficina virtual IFAPA. Preguntas y respuestas frecuentes /Presenta-PCT

Conceptos Básicos de Software. Clase III

Instalación de Crystal Reports

Implantar Microsoft Software Updates Service (SUS)

REQUERIMIENTOS MINIMOS DE SISTEMA:

TEMA 1. Introducción

Manual del Usuario. Programa para el cálculo de los ángulos asociados a la geometría de iluminación y observación de la escena SAC-C MMRS. Versión 1.

Alcance y descripción del servicio BACKUP IPLAN

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Historia de revisiones

Procesos, hilos y Recursos

AcuServer Servidor de Archivos Remoto de Alto Rendimiento

GUÍA PARA LA CONFIGURACIÓN Y UTILIZACIÓN DE LA IDE DRJAVA

UNIVERSIDAD DEL ISTMO Ingeniería en computación Estructura de datos

COLEGIO COMPUESTUDIO

Sistema de Captura Electrónica

Módulo 1 El lenguaje Java

Compilación de Minimo

CAPÍTULO 1 Instrumentación Virtual

Informática Industrial (II)

INTEGRACIÓN HERMES POSITRÓN

osoftware para Aprendizaje de Sistemas Operativos IA-32 (en Windows de 32 Bits)

Módulo 2. Inicio con Java

Practica 01: Programación en C bajo Linux y funciones

Software de sistema: Programas genéricos que permiten gestionar los recursos del ordenador.

OSORES DARDO LU: 2238

DESARROLLO DE APLICACIONES ACCESIBLES

Modelos de los sistemas distribuidos. Jorge Iván Meza Martínez

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1)

1 EL SISTEMA R/3 DE SAP AG

Mejor tecnología para aplicación práctica NOMAD

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

INGENIERÍA AMBIENTAL Tema 3. Parte V SCADA (Supervisory Control and Data Acquisition) Alfredo Rosado Máster Universitario

Agente local Aranda GNU/Linux. [Manual Instalación] Todos los derechos reservados Aranda Software [1]

Cátedra de Sistemas Distribuidos Escuela de Ingeniería Electrónica Departamento de Sistemas e Informática

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Sistemas Embebidos Act 11: Reconocimiento Unidad 3 LECTURA 1

Monitorización de sistemas y servicios

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Getting Started. 1. Introducción. 2. Requerimientos de software

Transcripción:

Informática Electrónica Unidad 6 Interfaces y Manejadores de Dispositivos

Modalidad y Materiales Dos clases expositivas a cargo del docente responsable (jlsimon@fceia.unr.edu.ar) 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

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

Componentes de un API Convenciones de utilización Estructuras de datos Protocolos de invocación Mecanismos de sincronización

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

API: Arquitectura Aplicación Aplicación Aplicación API Hardware u otras capas de software

API: Arquitectura Llamada Aplicación Respuesta API

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

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

API: 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.

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

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

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 vincular 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)

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

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

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

Caso de Estudio: Windows IP Helper API Diseñada por Microsoft para el acceso de los programas aplicativos a la configuración y el estado de la red IP Está especificada mediante funciones utilizables desde C o C++ Permite la lectura y modificación de la configuración de red en el equipo Es parte integral de los sistemas operativos Windows (XP, 7, 2003, 2008, etc.)

Windows IP Helper API: Componentes Un archivo de encabezado: iphlpapi.h que debe incluirse (con #include) en los programas aplicativos que utilicen el API Un archivo de vinculación estática iphlpapi.lib que debe incluirse en la lista de librerías estáticas a vincular Un archivo de librería dinámica iphlpapi.dll que se carga en el momento de ejecutar los aplicativos que usen el API

Servicios IP Helper API GetNetworkParams(): devuelve parámetros de red GetAdaptersInfo(): devuelve información de las interfaces de red GetIPStatistics() devuelve estadísticas de tráfico IP del equipo...

IP Helper API: Modelo Arquitectural Aplicaciones IP Helper API Sistema Operativo Enlace Capa Física Red

Windows IP Helper API http://msdn.microsoft.com/en-us/library/windows/desktop/aa366073%28v=vs.85%29.aspx

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.

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

Arquitectura open(), read(), write() Espacio De Usuario Aplicación Aplicación Aplicación Aplicación API del S.O. Espacio Del Kernel Device Driver Device Driver Device Driver Kernel Capa de abstracción del hardware Hardware

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

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.

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)

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

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

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

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/

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)

Arquitectura WDM (Windows kernel mode dd) Application I/O request Win32 API Kernel-Mode Driver User Mode Kernel Mode Windows Kernel I/O Manager KMDF

Arquitectura WDM (Windows user mode dd) Application I/O request Driver Manager Host Process User-mode Driver UMDF Win32 API Runtime Environment Windows Kernel I/O Manager Reflector User Mode Kernel Mode

Arquitectura DD Unix/Linux Espacio De Usuario Aplicación Aplicación Aplicación Aplicación System Calls API Espacio Del Kernel Módulo Módulo Módulo open(), read(), write() Kernel Hardware

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).

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

Acceso al DD vía API del S.O. Windows: Linux/Unix: CreateFile() open() WriteFile() read() ReadFile() write() DeviceIoControl() ioctl()

Caso de Estudio: 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

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

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 Elementos necesarios para hacer el TP: Una PC con Windows XP, 7, 2003 o 2008, con al menos una placa de red y el IDE Visual Studio 2010 o 2008 instalado (primera parte) Una PC con Linux instalado (cualquier distribución) y los paquetes gcc y make o gmake instalados El paquete InfElecTP5.rar bajado de la página de la asignatura