Articulo de referencia

Controlador de dispositivo

Un controlador de dispositivo es un software que opera o controla un tipo particular de dispositivo conectado a una computadora . [ 1 ] Un controlador proporciona una interfaz d...

Un controlador de dispositivo es un software que opera o controla un tipo particular de dispositivo conectado a una computadora . [ 1 ] Un controlador proporciona una interfaz de software a los dispositivos de hardware , lo que permite que otro software acceda a las funciones del hardware sin necesidad de conocer detalles precisos sobre el mismo.

Un controlador se comunica con el dispositivo a través del bus de la computadora o el subsistema de comunicaciones al que se conecta el hardware. Cuando un programa llama al controlador , este envía comandos al dispositivo (lo controla). Una vez que el dispositivo envía datos de vuelta al controlador, este puede invocar rutinas del programa que lo llamó originalmente.

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

Objetivo

El objetivo principal de los controladores de dispositivos es proporcionar abstracción de hardware 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 alto nivel independientemente del hardware específico que utilice el usuario final.

Por ejemplo, una aplicación de alto nivel para interactuar con un puerto serie podría tener simplemente dos funciones: una para enviar datos y otra para recibirlos . A un nivel inferior, un controlador de dispositivo que implemente estas funciones se comunicaría con el controlador de puerto serie específico instalado en el ordenador del usuario. Los comandos necesarios para controlar una UART 16550 son muy diferentes de los necesarios para controlar un adaptador USB a serie , pero cada controlador de dispositivo específico para hardware abstrae estos detalles en la misma interfaz de software (o una similar).

Desarrollo

Escribir un controlador de dispositivo requiere un conocimiento profundo del funcionamiento del hardware y el software para una plataforma específica . Dado que los controladores requieren acceso de bajo nivel a las funciones del hardware para operar, suelen funcionar en un entorno con altos privilegios y pueden causar problemas operativos del sistema si algo falla. En cambio, el mal funcionamiento de la mayoría del software de nivel de usuario en los sistemas operativos modernos se puede detener sin afectar significativamente al resto del sistema. Incluso los controladores que se ejecutan en modo de usuario pueden provocar el bloqueo del sistema si el dispositivo está programado erróneamente . Estos factores dificultan y hacen más peligroso el diagnóstico de problemas. [ 3 ]

La tarea de escribir controladores suele recaer en ingenieros de software o informáticos que trabajan para empresas de desarrollo de hardware. Esto se debe a que, como empleados, poseen mejor información que la mayoría de los ajenos a la empresa sobre el diseño del hardware. Además, tradicionalmente se ha considerado que al fabricante de hardware le interesa garantizar que sus clientes puedan utilizar su hardware de forma óptima. Normalmente, la parte de abstracción de hardware del controlador la escribe el proveedor del sistema operativo, mientras que la parte de acceso al dispositivo físico de bajo nivel la implementa el proveedor del dispositivo. Sin embargo, en los últimos años, personas ajenas a los proveedores han escrito numerosos controladores para dispositivos propietarios, principalmente para su uso con sistemas operativos libres y de código abierto . En estos casos, es importante que el fabricante de hardware proporcione información sobre cómo se comunica el dispositivo. Si bien esta información se puede obtener mediante ingeniería inversa , esto es mucho más difícil con hardware que con software.

Windows utiliza una combinación de controlador y minicontrolador, donde el controlador de clase/puerto completo se proporciona con el sistema operativo, y los controladores de miniclase/minipuerto son desarrollados por los proveedores e implementan un subconjunto específico de hardware o función de la pila completa de controladores. [ 4 ] El modelo de minipuerto es utilizado por los controladores NDIS , WDM , WDDM , WaveRT , StorPort , WIA y HID ; cada uno de ellos utiliza API específicas del dispositivo y aún requiere que el desarrollador gestione las tareas de administración del dispositivo.

Microsoft ha intentado reducir la inestabilidad del sistema causada por controladores de dispositivos mal escritos mediante la creación de un nuevo marco de desarrollo de controladores, denominado Windows Driver Frameworks (WDF). Este incluye User-Mode Driver Framework (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 de modo de usuario. Si estos controladores presentan fallos, no provocan inestabilidad en el sistema. El modelo Kernel-Mode Driver Framework (KMDF) permite el desarrollo de controladores de dispositivos en modo kernel, pero busca proporcionar implementaciones estándar de funciones que suelen causar problemas, como la cancelación de operaciones de E/S, la administración de energía y la compatibilidad con dispositivos plug-and-play.

Apple cuenta con un marco de código abierto para el desarrollo de controladores en macOS , llamado I/O Kit.

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

Los archivos .sys de Microsoft Windows y los archivos .ko de Linux pueden contener controladores de dispositivos cargables. La ventaja de estos controladores es que se cargan solo cuando es necesario y luego se descargan, lo que ahorra memoria del núcleo.

Niveles de privilegio

Dependiendo del sistema operativo, los controladores de dispositivos pueden ejecutarse con distintos niveles de privilegio . La elección del nivel de privilegio de los controladores depende en gran medida del tipo de núcleo que utilice el sistema operativo. Un sistema operativo con un núcleo monolítico , como Linux , suele ejecutar los controladores de dispositivos con el mismo privilegio que los demás objetos del núcleo. Por el contrario, un sistema basado en micronúcleos , como Minix , ejecuta los controladores como procesos independientes del núcleo, pero que los utilizan para funciones esenciales de entrada/salida . [ 6 ] En Windows NT , un sistema con un núcleo híbrido , es común que los controladores de dispositivos se ejecuten en modo núcleo o en modo usuario . [ 7 ]

El mecanismo más común para segregar la memoria en distintos niveles de privilegio es mediante anillos de protección . En muchos sistemas, como los que utilizan procesadores x86 y ARM , el cambio entre anillos supone una penalización en el rendimiento, un factor que los desarrolladores de sistemas operativos y los ingenieros de software embebido tienen en cuenta al crear controladores para dispositivos, como las tarjetas de interfaz de red , que prefieren funcionar con baja latencia. La principal ventaja de ejecutar un controlador en modo usuario es una mayor estabilidad, ya que un controlador de dispositivo en modo usuario mal escrito no puede provocar el fallo del sistema sobrescribiendo la memoria del kernel. [ 8 ]

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

  • Para hardware:
    • Interfaz directa
    • Escritura o lectura en un registro de control de dispositivo
    • Utilizando alguna interfaz de nivel superior (por ejemplo, BIOS de vídeo )
    • Utilizar otro controlador de dispositivo de nivel inferior (por ejemplo, controladores de sistema de archivos que utilizan controladores de disco).
    • Simular el trabajo con hardware, mientras se hace algo completamente diferente [ 9 ]
  • Para software:
    • Permitir que el sistema operativo acceda directamente a los recursos de hardware.
    • Implementar únicamente primitivas
    • Implementación de una interfaz para software que no sea un controlador (por ejemplo, TWAIN ).
    • Implementar un lenguaje, a veces de nivel bastante alto (por ejemplo, PostScript ).

Aplicaciones

Debido a la diversidad de la modernidadLos controladores, tanto de hardware como de sistemas operativos, operan en muchos entornos diferentes. [ 10 ] Los controladores pueden interactuar con:

So choosing and installing the correct device drivers for the given hardware is often a key component of computer system configuration.[11]

Virtual device drivers

Virtual device drivers represent a particular variant of device drivers. They are used to emulate a hardware device, particularly in virtualization environments, for example, when a guest operating system is run on a Xen host.[12] Instead of enabling the guest operating system to control the hardware, virtual device drivers emulate a piece of hardware, so that the guest operating system and its drivers running inside a virtual machine can have the illusion of accessing real hardware. Attempts by the guest operating system to access the hardware are routed to the virtual device driver in the host operating system. The virtual device driver can also send simulated hardware-related events like interrupts to the virtual machine.

Virtual devices may also operate in a non-virtualized environment. For example, a virtual network adapter is used with a virtual private network, while a virtual disk device is used with iSCSI. A good example for virtual device drivers can be Daemon Tools.

There are several variants of virtual device drivers, such as VxDs, VLMs, and VDDs.

Open source drivers

Solaris descriptions of commonly used device drivers:

  • fas: Fast/wide SCSI controller
  • hme: Fast (10/100 Mbit/s) Ethernet
  • isp: Differential SCSI controllers and the SunSwift card
  • glm: (Gigabaud Link Module[15]) UltraSCSI controllers
  • scsi: Small Computer Serial Interface (SCSI) devices
  • sf: soc+ or social Fiber Channel Arbitrated Loop (FCAL)
  • soc: SPARC Storage Array (SSA) controllers and the control device
  • social: Serial optical controllers for FCAL (soc+)

APIs

Identificadores

Un dispositivo en el bus PCI o USB se identifica mediante dos identificadores, cada uno de dos bytes . El identificador del proveedor identifica al fabricante del dispositivo. El identificador del dispositivo identifica un dispositivo específico de ese fabricante/proveedor.

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

Seguridad

Los ordenadores suelen tener muchos controladores de dispositivos diversos y personalizados ejecutándose en el núcleo de su sistema operativo, que a menudo contienen varios errores y vulnerabilidades , lo que los convierte en un objetivo para los exploits . [ 19 ]Un atacante de tipo " Traiga su propio controlador vulnerable" (BYOVD) instala cualquier controlador antiguo de terceros firmado con vulnerabilidades conocidas que permiten la inserción de código malicioso en el núcleo. [ 20 ] Los controladores que pueden ser vulnerables incluyen los de Wi-Fi y Bluetooth, [ 21 ] [ 22 ] controladores de juegos/gráficos, [ 23 ] y controladores para impresoras. [ 24 ]

Hay una falta de herramientas eficaces para la detección de vulnerabilidades del kernel, especialmente para sistemas operativos de código cerrado como Microsoft Windows [ 25 ], donde el código fuente de los controladores de dispositivos es mayoritariamente propietario y no está disponible para su examen, [ 26 ] y los controladores a menudo tienen muchos privilegios. [ 27 ] [ 28 ] [ 29 ] [ 30 ]

Un grupo de investigadores de seguridad considera la falta de aislamiento como uno de los principales factores que socavan la seguridad del núcleo , [ 31 ] y publicó un marco de aislamiento para proteger los núcleos de los sistemas operativos, principalmente el núcleo monolítico de Linux cuyos controladores, según afirman, reciben aproximadamente 80.000 confirmaciones al año. [ 32 ] [ 33 ]

Una consideración importante en el diseño de un núcleo es el soporte que proporciona para la protección contra fallos ( tolerancia a fallos ) y contra comportamientos maliciosos ( seguridad ). Estos dos aspectos no suelen distinguirse claramente, y la adopción de esta distinción en el diseño del núcleo conlleva el rechazo de una estructura jerárquica para la protección . [ 34 ]

Los mecanismos o políticas proporcionados por el núcleo se pueden clasificar según varios criterios, entre ellos:

  • ya sean estáticas (que se aplican en tiempo de compilación ) o dinámicas (que se aplican en tiempo de ejecución );
  • ya sean preventivas o posteriores a la detección;
  • ya sean compatibles con hardware o basadas en lenguaje;
  • ya sea que se trate más de un mecanismo abierto o de una política vinculante;
  • de acuerdo con los principios de protección que satisfacen (por ejemplo, Denning [ 35 ] [ 36 ] );
  • y muchos más.

Véase también

Referencias

  1. 1 2 "¿Qué es un controlador de dispositivo?" . WhatIs.com . TechTarget. Archivado del original el 13 de febrero de 2021 . Recuperado el 19 de marzo de 2018 .
  2. EMC Education Services (2010). Almacenamiento y gestión de la información: Almacenamiento, gestión y protección de la información digital . John Wiley & Sons. ISBN 9780470618332Archivado del original el 13 de febrero de 2021. Consultado el 10 de noviembre de 2020 .
  3. Burke, Timothy (1995). Escritura de controladores de dispositivos: tutorial y referencia . Digital Press. ISBN 9781555581411Archivado del original el 26/01/2021 . Consultado el 05/08/2016 .
  4. "Elección de un modelo de controlador" . Microsoft . Consultado el 30 de marzo de 2021 .
  5. "MAKEDEV — Comando Linux — Comando Unix" . Linux.about.com. 11 de septiembre de 2009. Archivado del original el 30 de abril de 2009. Consultado el 17 de septiembre de 2009 .  
  6. Tanenbaum, Andrew; Woodhull, Albert (2006). Sistemas operativos, diseño e implementación (3.ª ed.). Upper Saddle River, NJ: Pearson Press Hall. pág. 256. ISBN   0-13-142938-8.
  7. Yosifovich, Pavel; Ionescu, Alex; Russinovich, Mark; Solomon, David (2017). Windows Internals, Part 1 (Séptima ed.). Redmond, Washington: Microsoft Press. ISBN  978-0-7356-8418-8.
  8. "Introducción al marco de controladores en modo de usuario (UMDF)" . Microsoft . 10 de octubre de 2006. Archivado del original el 7 de enero de 2010. Consultado el 4 de marzo de 2008 .
  9. Periféricos e interfaces de computadora . Publicaciones técnicas. Pune. Enero de 2008. págs. 5–8 . ISBN  978-8184314748. Consultado el 3 de mayo de 2016 .
  10. Deborah Morley (2009). Comprender las computadoras 2009: Hoy y mañana . Cengage Learning. ISBN 9780324830132Archivado del original el 09/06/2021 . Consultado el 10/11/2020 .
  11. "¿Qué son los controladores de dispositivos y por qué los necesitamos?" . drivers.com . 17 de abril de 2015. Archivado del original el 20 de noviembre de 2016. Consultado el 19 de marzo de 2018 .
  12. Chisnall, David (2007). La guía definitiva del hipervisor Xen (Primera ed.). EE. UU.: Prentice Hall Press. ISBN  978-0-13-234971-0.
  13. "CCISS" . SourceForge . 2010. Archivado del original el 21/08/2010 . Consultado el 11/08/2010 . Controladores para los controladores HP (anteriormente Compaq) Smart Array que proporcionan capacidad RAID por hardware.
  14. Russell, Steve; et al. (21 de octubre de 2003). Abreviaturas y acrónimos . Organización Internacional de Soporte Técnico de IBM. pág. 207. ISBN   0-7384-2684-9. Consultado el 14 de agosto de 2011 .{{cite book}}: |work=ignorado ( ayuda )
  15. "Patente estadounidense 5969841 - Módulo de enlace Gigabaud con señal de detección de potencia recibida" . PatentStorm LLC. Archivado del 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.
  16. "Modelo de audio unificado (Windows CE 5.0)" . Microsoft Developer Network . 14 de septiembre de 2012. Archivado del original el 22 de junio de 2017. Consultado el 19 de septiembre de 2016 .
  17. Dell EE. UU. "¿Qué son los controladores DCH y por qué necesita saber sobre ellos? | Dell EE. UU." . www.dell.com . Consultado el 29 de octubre de 2020 .
  18. "dxd - marco de controladores dynax: Página principal" . dxd.dynax.at . Archivado del original el 29 de mayo de 2016. Consultado el 19 de septiembre de 2016 .
  19. Talebi, Seyed Mohammadjavad Seyed; Tavakoli, Hamid; Zhang, Hang; Zhang, Zheng; Sani, Ardalan Amiri; Qian, Zhiyun (2018). Charm: Facilitando el análisis dinámico de controladores de dispositivos de sistemas móviles . págs. 291–307 . ISBN  9781939133045Archivado del original el 5 de noviembre de 2022. Consultado el 5 de noviembre de 2022 .
  20. Goodin, Dan (14 de octubre de 2022). "Cómo un error de Microsoft expuso millones de PC a potentes ataques de malware" . Ars Technica . Archivado del original el 8 de noviembre de 2022. Consultado el 8 de noviembre de 2022 .
  21. Ridley, Jacob (9 de febrero de 2022). "Deberías actualizar tus controladores de Wi-Fi y Bluetooth hoy mismo" . PC Gamer . Archivado del original el 5 de noviembre de 2022. Consultado el 5 de noviembre de 2022 .
  22. "Ataques inalámbricos 'BlueBorne' dirigidos a miles de millones de dispositivos Bluetooth" . threatpost.com . Archivado del original el 5 de noviembre de 2022. Consultado el 5 de noviembre de 2022 .
  23. Spadafora, Anthony (12 January 2022). "Installing gaming drivers might leave your PC vulnerable to cyberattacks". TechRadar. Archived from the original on 5 November 2022. Retrieved 5 November 2022.
  24. "HP patches vulnerable driver lurking in printers for 16 years". ZDNET. Archived from the original on 5 November 2022. Retrieved 5 November 2022.
  25. Pan, Jianfeng; Yan, Guanglu; Fan, Xiaocao (2017). Digtool: A {Virtualization-Based} Framework for Detecting Kernel Vulnerabilities. USENIX Association. pp. 149–165. ISBN 9781931971409. Retrieved 5 November 2022.
  26. King, Bertel (18 June 2022). "Closed Source vs. Open Source Hardware Drivers: Why It Matters". MUO. Archived from the original on 5 November 2022. Retrieved 5 November 2022.
  27. Branscombe, Mary (7 April 2022). "How Microsoft blocks vulnerable and malicious drivers in Defender, third-party security tools and in Windows 11". TechRepublic. Archived from the original on 5 November 2022. Retrieved 5 November 2022.
  28. Goodin, Dan (5 October 2022). "No fix in sight for mile-wide loophole plaguing a key Windows defense for years". Ars Technica. Archived from the original on 5 November 2022. Retrieved 5 November 2022.
  29. Davenport, Corbin. ""Bring Your Own Vulnerable Driver" Attacks Are Breaking Windows". How-To Geek. Archived from the original on 5 November 2022. Retrieved 5 November 2022.
  30. "Windows 10 Security Alert: Vulnerabilities Found in Over 40 Drivers". BleepingComputer. Archived from the original on 5 November 2022. Retrieved 5 November 2022.
  31. "Fine-grained kernel isolation". mars-research.github.io. Archived from the original on 15 September 2022. Retrieved 15 September 2022.
  32. Fetzer, Mary. "El aislamiento automático de controladores de dispositivos protege contra errores en los sistemas operativos" . Universidad Estatal de Pensilvania a través de techxplore.com . Archivado del original el 15 de septiembre de 2022. Recuperado el 15 de septiembre de 2022 .
  33. Huang, Yongzhe; Narayanan, Vikram; Detweiler, David; Huang, Kaiming; Tan, Gang; Jaeger, Trent; Burtsev, Anton (2022). "KSplit: Automatización del aislamiento de controladores de dispositivos" (PDF) . Archivado (PDF) del original el 15 de septiembre de 2022. Recuperado el 15 de septiembre de 2022 .
  34. Wulf 1974 págs. 337–345
  35. Denning 1976
  36. Cita de Swift 2005, pág. 29: "aislamiento, control de recursos, verificación de decisiones (comprobación) y recuperación de errores".
  • Centro de desarrollo de hardware de Windows
  • Listas de compatibilidad de hardware y controladores de Linux
  • Comprensión de los controladores de dispositivos modernos (Linux)
  • Cómo usar un controlador binario en Ubuntu.
  • Fuente de controladores Linux