stringtranslate.com

Controlador de dispositivo

En informática , un controlador de dispositivo es un programa informático que opera o controla un tipo particular de dispositivo que está conectado a una computadora o autómata . [1] Un controlador proporciona una interfaz de software para dispositivos de hardware , lo que permite que los sistemas operativos y otros programas informáticos accedan a funciones de hardware sin necesidad de conocer detalles precisos sobre el hardware que se utiliza.

Un controlador se comunica con el dispositivo a través del bus de la computadora o subsistema de comunicaciones al que se conecta el hardware. Cuando un programa que llama invoca una rutina en el controlador, el controlador emite comandos al dispositivo (lo controla). Una vez que el dispositivo envía datos al conductor, el conductor puede invocar rutinas en el programa de llamada original.

Los controladores dependen del hardware y son específicos del sistema operativo. Por lo general, proporcionan el manejo de interrupciones necesario para cualquier interfaz de hardware asíncrona necesaria y dependiente del tiempo. [2]

Objetivo

El objetivo principal de los controladores de dispositivos es proporcionar abstracción actuando como traductor entre un dispositivo de hardware y las aplicaciones o sistemas operativos que lo utilizan. [1] Los programadores pueden escribir código de aplicación de nivel superior independientemente del hardware específico que esté utilizando el usuario final. Por ejemplo, una aplicación de alto nivel para interactuar con un puerto serie puede tener simplemente dos funciones para "enviar datos" y "recibir datos". En un nivel inferior, un controlador de dispositivo que implemente estas funciones se comunicaría con el controlador de puerto serie particular instalado en la computadora de un usuario. Los comandos necesarios para controlar un UART 16550 son muy diferentes de los comandos necesarios para controlar un convertidor de puerto serie FTDI , pero cada controlador de dispositivo específico del hardware abstrae estos detalles en la misma (o similar) interfaz de software.

Desarrollo

Escribir un controlador de dispositivo requiere una comprensión profunda de cómo funciona el hardware y el software para una función de plataforma determinada . Debido a que los controladores requieren acceso de bajo nivel a las funciones del hardware para poder funcionar, los controladores normalmente operan en un entorno altamente privilegiado y pueden causar problemas operativos del sistema si algo sale mal. Por el contrario, la mayor parte del software a nivel de usuario en los sistemas operativos modernos se puede detener sin afectar en gran medida al resto del sistema. Incluso los controladores que se ejecutan en modo de usuario pueden bloquear un sistema si el dispositivo está programado erróneamente . Estos factores hacen que sea más difícil y peligroso diagnosticar problemas. [3]

Por lo tanto, la tarea de escribir controladores suele recaer en ingenieros de software o ingenieros informáticos que trabajan para empresas de desarrollo de hardware. Esto se debe a que tienen mejor información que la mayoría de los externos sobre el diseño de su hardware. Además, tradicionalmente se consideraba de interés para los fabricantes de hardware garantizar que sus clientes pudieran utilizar su hardware de forma óptima. Normalmente, el controlador de dispositivo lógico (LDD) lo escribe el proveedor del sistema operativo, mientras que el controlador de dispositivo físico (PDD) lo implementa el proveedor del dispositivo. Sin embargo, en los últimos años, los no proveedores han escrito numerosos controladores de dispositivos para dispositivos propietarios, principalmente para su uso con sistemas operativos gratuitos y de código abierto . En tales casos, es importante que el fabricante del hardware proporcione información sobre cómo se comunica el dispositivo. Aunque esta información puede aprenderse mediante ingeniería inversa , esto es mucho más difícil con el hardware que con el software.

Microsoft ha intentado reducir la inestabilidad del sistema debido a controladores de dispositivos mal escritos mediante la creación de un nuevo marco para el desarrollo de controladores, llamado Windows Driver Frameworks (WDF). Esto incluye el marco de controladores en modo de usuario (UMDF), que fomenta el desarrollo de ciertos tipos de controladores (principalmente aquellos que implementan un protocolo basado en mensajes para comunicarse con sus dispositivos) como controladores en modo de usuario. Si dichos controladores funcionan mal, no causan inestabilidad en el sistema. El modelo Kernel-Mode Driver Framework (KMDF) continúa permitiendo el desarrollo de controladores de dispositivos en modo kernel, pero intenta proporcionar implementaciones estándar de funciones que se sabe que causan problemas, incluida la cancelación de operaciones de E/S, la administración de energía y la conexión y conexión. soporte para dispositivos de reproducción.

Apple tiene un marco de código abierto para desarrollar controladores en macOS , llamado I/O Kit.

En entornos Linux , los programadores pueden crear controladores de dispositivos como partes del kernel , por separado como módulos cargables o como controladores en modo de usuario (para ciertos tipos de dispositivos donde existen interfaces de kernel, como los dispositivos USB). Makedev incluye una lista de dispositivos en Linux, incluidos ttyS (terminal), lp ( puerto paralelo ), hd (disco), bucle y sonido (estos incluyen mezclador , secuenciador , dsp y audio). [4]

Los archivos .sys de Microsoft Windows y los archivos .ko de Linux pueden contener controladores de dispositivos cargables. La ventaja de los controladores de dispositivos cargables es que pueden cargarse sólo cuando sea necesario y luego descargarse, ahorrando así memoria del núcleo.

Niveles de privilegio

Dependiendo del sistema operativo, es posible que se permita que los controladores de dispositivos se ejecuten en varios niveles de privilegios diferentes . La elección del nivel de privilegio de los controladores se decide en gran medida por el tipo de núcleo que utiliza el sistema operativo. Un sistema operativo que utiliza un kernel monolítico , como el kernel de Linux , normalmente ejecutará controladores de dispositivos con el mismo privilegio que todos los demás objetos del kernel. Por el contrario, un sistema diseñado alrededor de un microkernel , como Minix , colocará los controladores como procesos independientes del kernel pero que lo utilizarán para funcionalidades esenciales de entrada y salida y para pasar mensajes entre programas de usuario y entre sí. [5] En Windows NT , un sistema con un kernel híbrido , es común que los controladores de dispositivos se ejecuten en modo kernel o en modo usuario . [6]

El mecanismo más común para segregar la memoria en varios niveles de privilegios es mediante anillos de protección . En muchos sistemas, como aquellos con procesadores x86 y ARM , el cambio entre anillos impone una penalización en el rendimiento, un factor que los desarrolladores de sistemas operativos y los ingenieros de software integrado consideran al crear controladores para dispositivos que se prefiere ejecutar con baja latencia, como los de red. tarjetas de interfaz . El principal beneficio de ejecutar un controlador en modo de usuario es una mayor estabilidad, ya que un controlador de dispositivo en modo de usuario mal escrito no puede bloquear el sistema al sobrescribir la memoria del kernel. [7]

Aplicaciones

Debido a la diversidad de hardware y sistemas operativos modernos, los controladores operan en muchos entornos diferentes. [8] Los controladores pueden interactuar con:

Los niveles comunes de abstracción para controladores de dispositivos incluyen:

Por lo tanto, elegir e instalar los controladores de dispositivo correctos para un hardware determinado suele ser un componente clave de la configuración del sistema informático. [10]

Controladores de dispositivos virtuales

Los controladores de dispositivos virtuales representan una variante particular de los controladores de dispositivos. Se utilizan para emular un dispositivo de hardware, particularmente en entornos de virtualización , por ejemplo, cuando se ejecuta un programa DOS en una computadora con Microsoft Windows o cuando se ejecuta un sistema operativo invitado, por ejemplo, en un host Xen . En lugar de permitir que el sistema operativo invitado dialoge con el hardware, los controladores de dispositivos virtuales asumen el papel opuesto y emula una pieza de hardware, de modo que el sistema operativo invitado y sus controladores que se ejecutan dentro de una máquina virtual pueden tener la ilusión de acceder a hardware real. Los intentos del sistema operativo invitado de acceder al hardware se enrutan al controlador del dispositivo virtual en el sistema operativo anfitrión como, por ejemplo,  llamadas a funciones . El controlador del dispositivo virtual también puede enviar eventos simulados a nivel de procesador, como interrupciones, a la máquina virtual.

Los dispositivos virtuales también pueden funcionar en un entorno no virtualizado. Por ejemplo, se utiliza un adaptador de red virtual con una red privada virtual , mientras que un dispositivo de disco virtual se utiliza con iSCSI . Un buen ejemplo de controladores de dispositivos virtuales puede ser Daemon Tools .

Existen varias variantes de controladores de dispositivos virtuales, como VxD , VLM y VDD.

Controladores de código abierto

Descripciones de Solaris de controladores de dispositivos utilizados habitualmente:

API

Identificadores

Un dispositivo en el bus PCI o USB se identifica mediante dos ID que constan de 4 números hexadecimales cada uno. El ID del proveedor identifica al proveedor del dispositivo. El ID del dispositivo identifica un dispositivo específico de ese fabricante/proveedor.

Un dispositivo PCI suele tener un par de ID para el chip principal del dispositivo y también un par de ID de subsistema que identifica al proveedor, que puede ser diferente del fabricante del chip.

Seguridad

Los dispositivos suelen tener una gran cantidad de controladores de dispositivo diversos y personalizados ejecutándose en el kernel de su sistema operativo (SO) y, a menudo, contienen varios errores y vulnerabilidades , lo que los convierte en un objetivo para los exploits . [17] Bring Your Own Vulnerable Driver (BYOVD) utiliza controladores antiguos y firmados que contienen fallas que permiten a los piratas informáticos insertar código malicioso en el kernel. [18]

Hay una falta de herramientas efectivas de detección de vulnerabilidades del kernel, especialmente para sistemas operativos de código cerrado como Microsoft Windows [19] donde el código fuente de los controladores de dispositivos en su mayoría no es público (código abierto) [20] y los controladores a menudo también tienen muchos privilegios. [21] [22] [23] [24]

Estas vulnerabilidades también existen en controladores de computadoras portátiles, [25] controladores para WiFi y bluetooth, [26] [27] controladores de juegos/gráficos, [28] y controladores de impresoras. [29]

Un grupo de investigadores de seguridad considera la falta de aislamiento como uno de los principales factores que socavan la seguridad del kernel , [30] y publicaron un marco de aislamiento para proteger los kernels del sistema operativo, principalmente el kernel monolítico de Linux que, según ellos, obtiene ~80,000 confirmaciones / año a sus conductores. [31] [32]

Una consideración importante en el diseño de un kernel es el soporte que brinda para la protección contra fallas ( tolerancia a fallas ) y contra comportamientos maliciosos ( seguridad ). Estos dos aspectos generalmente no se distinguen claramente y la adopción de esta distinción en el diseño del núcleo conduce al rechazo de una estructura jerárquica para la protección . [33]

Los mecanismos o políticas proporcionadas por el kernel se pueden clasificar según varios criterios, entre ellos: estáticos (aplicados en tiempo de compilación ) o dinámicos (aplicados en tiempo de ejecución ); preventiva o post-detección; según los principios de protección que satisfacen (por ejemplo, Denning [34] [35] ); si son compatibles con hardware o basados ​​en lenguaje; si son más bien un mecanismo abierto o una política vinculante; y muchos más.

Ver también

Referencias

  1. ^ ab "¿Qué es el controlador de todos los dispositivos?". WhatIs.com . Objetivo tecnológico. Archivado desde el original el 13 de febrero de 2021 . Consultado el 19 de marzo de 2018 .
  2. ^ Servicios educativos de EMC (2010). Almacenamiento y gestión de información: almacenamiento, gestión y protección de información digital. John Wiley e hijos. ISBN 9780470618332. Archivado desde el original el 13 de febrero de 2021 . Consultado el 10 de noviembre de 2020 .
  3. ^ Burke, Timoteo (1995). Controladores de dispositivos de escritura: tutorial y referencia. Prensa digital. ISBN 9781555581411. Archivado desde el original el 26 de enero de 2021 . Consultado el 5 de agosto de 2016 .
  4. ^ "MAKEDEV - Comando de Linux - Comando de Unix". Linux.about.com. 2009-09-11. Archivado desde el original el 30 de abril de 2009 . Consultado el 17 de septiembre de 2009 .
  5. ^ Tanenbaum, Andrés; Woodhull, Albert (2006). Sistemas operativos, diseño e implementación (3ª ed.). Upper Saddle River, Nueva Jersey: Pearson Pretense Hall. pag. 256.ISBN _ 0-13-142938-8.
  6. ^ Yosifovich, Pavel; Ionescu, Alex; Russinovich, Mark; Salomón, David (2017). Windows Internals, Parte 1 (Séptima ed.). Redmond, Washington: Microsoft Press. ISBN 978-0-7356-8418-8.
  7. ^ "Introducción al marco del controlador en modo de usuario (UMDF)". Microsoft . 2006-10-10. Archivado desde el original el 7 de enero de 2010 . Consultado el 4 de marzo de 2008 .
  8. ^ Déborah Morley (2009). Comprensión de las computadoras 2009: hoy y mañana. Aprendizaje Cengage. ISBN 9780324830132. Archivado desde el original el 9 de junio de 2021 . Consultado el 10 de noviembre de 2020 .
  9. ^ Interfaces y periféricos de computadora. Publicaciones técnicas Pune. Enero de 2008. págs. 5–8. ISBN 978-8184314748. Consultado el 3 de mayo de 2016 .[ enlace muerto permanente ]
  10. ^ "¿Qué son los controladores de dispositivos y por qué los necesitamos?". conductores.com . 17 de abril de 2015. Archivado desde el original el 20 de noviembre de 2016 . Consultado el 19 de marzo de 2018 .
  11. ^ "CCISS". FuenteForge . 2010. Archivado desde el original el 21 de agosto de 2010 . Consultado el 11 de agosto de 2010 . Controladores para los controladores Smart Array de HP (anteriormente Compaq) que proporcionan capacidad RAID de hardware.
  12. ^ Russell, Steve; et al. (21 de octubre de 2003). Abreviaciones y acronimos. Organización internacional de soporte técnico de IBM. pag. 207.ISBN _ 0-7384-2684-9. Consultado el 14 de agosto de 2011 . {{cite book}}: |work=ignorado ( ayuda ) [ enlace muerto permanente ]
  13. ^ "Patente de EE. UU. 5969841: módulo de enlace Gigabaud con señal de detección de potencia recibida". PatentStorm LLC. Archivado desde el original el 12 de junio de 2011 . Consultado el 8 de septiembre de 2009 . Se proporciona un módulo de enlace Gigabaud (GLM) mejorado para realizar transferencias de datos bidireccionales entre un dispositivo host y un medio de transferencia en serie.
  14. ^ "Modelo de audio unificado (Windows CE 5.0)". Red de desarrolladores de Microsoft . Archivado desde el original el 22 de junio de 2017 . Consultado el 19 de septiembre de 2016 .
  15. ^ Dell EE. UU. "¿Qué son los controladores DCH y por qué es necesario conocerlos? | Dell EE. UU.". www.dell.com . Consultado el 29 de octubre de 2020 .
  16. ^ "dxd - marco del controlador dynax: página principal". dxd.dynax.at . Archivado desde el original el 29 de mayo de 2016 . Consultado el 19 de septiembre de 2016 .
  17. ^ Talebi, Seyed Mohammadjavad Seyed; Tavakoli, Hamid; Zhang, colgar; Zhang, Zheng; Sani, Ardalan Amiri; Qian, Zhiyun (2018). Charm: Facilitar el análisis dinámico de controladores de dispositivos de sistemas móviles. págs. 291–307. ISBN 9781939133045. Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  18. ^ Goodin, Dan (14 de octubre de 2022). "Cómo un error de Microsoft abrió millones de PC a potentes ataques de malware". Ars Técnica . Archivado desde el original el 8 de noviembre de 2022 . Consultado el 8 de noviembre de 2022 .
  19. ^ Pan, Jianfeng; Yan, Guanglu; Fan, Xiaocao (2017). Digtool: un marco {basado en virtualización} para detectar vulnerabilidades del kernel. págs. 149-165. ISBN 9781931971409. Consultado el 5 de noviembre de 2022 .
  20. ^ King, Bertel (18 de junio de 2022). "Controladores de hardware de código cerrado frente a controladores de hardware de código abierto: por qué es importante". MUO . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  21. ^ Branscombe, Mary (7 de abril de 2022). "Cómo Microsoft bloquea controladores vulnerables y maliciosos en Defender, herramientas de seguridad de terceros y Windows 11". República Tecnológica . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  22. ^ Goodin, Dan (5 de octubre de 2022). "No hay solución a la vista para la laguna jurídica de una milla de ancho que afecta a una defensa clave de Windows durante años". Ars Técnica . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  23. ^ Davenport, Corbin. ""Traiga su propio controlador vulnerable "Los ataques están rompiendo Windows". Cómo hacerlo geek . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  24. ^ "Alerta de seguridad de Windows 10: vulnerabilidades encontradas en más de 40 controladores". Computadora que suena . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  25. ^ Goodin, Dan (13 de julio de 2022). "Las vulnerabilidades que podrían permitir infecciones indetectables afectan a 70 modelos de portátiles Lenovo". Ars Técnica . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  26. ^ Ridley, Jacob (9 de febrero de 2022). "Querrá actualizar sus controladores de Wi-Fi y Bluetooth hoy". Jugador de PC . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  27. ^ "Los ataques inalámbricos 'BlueBorne' se dirigen a miles de millones de dispositivos Bluetooth". Threatpost.com . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  28. ^ Spadafora, Anthony (12 de enero de 2022). "La instalación de controladores de juegos puede dejar su PC vulnerable a ataques cibernéticos". TecnologíaRadar . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  29. ^ "HP parchea el controlador vulnerable que acecha en las impresoras durante 16 años". ZDNET . Archivado desde el original el 5 de noviembre de 2022 . Consultado el 5 de noviembre de 2022 .
  30. ^ "Aislamiento de núcleo de grano fino". mars-research.github.io . Archivado desde el original el 15 de septiembre de 2022 . Consultado el 15 de septiembre de 2022 .
  31. ^ Fetzer, María. "El aislamiento automático del controlador del dispositivo protege contra errores en los sistemas operativos". Universidad Estatal de Pensilvania a través de techxplore.com . Archivado desde el original el 15 de septiembre de 2022 . Consultado el 15 de septiembre de 2022 .
  32. ^ Huang, Yongzhe; Narayanan, Vikram; Detweiler, David; Huang, Kaiming; Bronceado, pandilla; Jaeger, Trento; Burtsev, Antón (2022). "KSplit: aislamiento automatizado de controladores de dispositivos" (PDF) . Archivado (PDF) desde el original el 15 de septiembre de 2022 . Consultado el 15 de septiembre de 2022 .
  33. ^ Wulf 1974 págs. 337–345
  34. ^ Denning 1976
  35. ^ Swift 2005, p.29 cita: "aislamiento, control de recursos, verificación de decisiones (verificación) y recuperación de errores".

enlaces externos