¿Diferencias entre firmware, middleware y controlador de dispositivo?

¿Diferencias entre firmware, middleware y controlador de dispositivo?

¿Cuáles son las relaciones y diferencias entre firmware y middleware?

Wikipedia dice

El firmware es la combinación de memoria persistente y código de programa y datos almacenados en ella.[1] Ejemplos típicos de dispositivos que contienen firmware son los sistemas integrados (como semáforos, electrodomésticos y relojes digitales), computadoras, periféricos de computadora, teléfonos móviles y cámaras digitales. El firmware contenido en estos dispositivos proporciona el programa de control del dispositivo.

Middleware es software informático que proporciona servicios a aplicaciones de software más allá de los disponibles en el sistema operativo. Puede describirse como "pegamento de software".[1] El middleware facilita a los desarrolladores de software la comunicación y la entrada/salida, para que puedan centrarse en el propósito específico de su aplicación.

  1. Todavía no entiendo las diferencias en sus funciones, en relación con el hardware, el software de alto nivel, el sistema operativo, etc.

    Por ejemplo,

    ¿El firmware del BIOS no es middleware?

    ¿Es un gestor de arranque para un sistema operativo un firmware, middleware o algo así?

    ¿El conjunto de instrucciones es firmware de CPU y no middleware?

    ¿Hay algún middleware, no firmware?

  2. ¿Cuáles son las relaciones y diferencias entre los controladores de dispositivo y el firmware y middleware?

¡Gracias!

Respuesta1

Firmware y Middleware son términos industriales simples para describir un determinado conjunto de "algún código".

El firmware (como dice la wiki) "normalmente" representa software "normalmente" escrito en ensamblador o C que "normalmente" se ejecutasobre elhardware.

El 'on/the' indica que este software reside en un medio de almacenamiento permanente (como una especie de pequeña memoria flash) que está conectado directamente al hardware que el software debe controlar. Se llama "firmware" porque es un software diseñado específicamente para ejecutar el hardware.

También cito la palabra normalmente porque la industria tecnológica tiene la horrible costumbre de acuñar términos y luego distorsionarlos para que nadie pueda saber cuál es la verdadera intención de la palabra. La 'programación integrada' es un buen ejemplo actual; Si bien el término generalmente se refería a programadores que desarrollaron lo que es esencialmente firmware (es decir, desarrolladores de hardware ASM/C de bajo nivel), desde entonces el término se ha transformado para incluir a los desarrolladores de Android (es decir, desarrolladores de Linux/kernel que pueden operar tanto en el nivel Java como en el C). ). No estoy criticando ningún tipo de desarrollador o práctica de desarrollo (yo mismo hago muchos de esos tipos de desarrollo), simplemente señalo que a la industria tecnológica le gusta hacer un mal uso de las palabras.

Middleware es otro ejemplo de tal palabra; Si bien todavía no he escuchado ni visto 'firmware' usado para nada que no sea código de nivel de hardware, he visto middleware usado en todo, desde firmware hasta .NET/Java. Middleware es un término genérico que (como desarrollador) normalmente puedes descifrar a partir del contexto lo que se pretende, ya que lo he visto mal usado demasiadas veces; así que para responderte directamente:

Todavía no entiendo las diferencias en sus funciones, en relación con el hardware, el software de alto nivel, el sistema operativo, etc. El firmware es software (código convertido a formato binario) que reside en una determinada pieza de hardware y ejecuta dicho hardware. Middleware puede usarse para referirse a una API/biblioteca que interactúa con el hardware (u otra pieza de software).

¿El firmware del BIOS no es middleware? Dependiendo de su visión de esto, podrían ser ambas cosas. Técnicamente, el BIOS es firmware (es un software que se utiliza específicamente para ejecutar el hardware en el que se encuentra, es decir, la placa base), pero si su intención es interactuar directamente con una pieza de hardware de alguna manera (como lo haría un sistema operativo), el BIOS. podría ser middleware, ya que no es necesario "escribir" su propio BIOS y rutinas de hardware y aquí es donde puede entrar el mal uso del "middleware", pero en un clásico, no, el BIOS no es middleware.

¿Es un gestor de arranque para un sistema operativo un firmware, middleware o algo así? Un gestor de arranque para un sistema operativo es un fragmento de código que reside entre el BIOS (u otro subsistema de hardware básico) y los sistemas de nivel superior (generalmente el sistema operativo) que indica a los sistemas inferiores (es decir, BIOS) dónde reside el sistema operativo en el medio de arranque. En términos generales, un gestor de arranque suele ubicarse en una ubicación específica de un medio de almacenamiento (como los primeros cientos de bytes o más) y el BIOS sabe (gracias a los estándares de la industria) dónde "buscar" un gestor de arranque, momento en el que el gestor de arranque toma el control. para hacer lo que fue escrito (generalmente iniciar el sistema operativo).

Un gestor de arranque no es firmware, pero técnicamente podría residir en el firmware y, en la medida en que sea "middleware", podría ser sí o no dependiendo de "su" visión de lo que es/debería ser el "middleware", aunque en el sentido clásico del middleware. , No consideraría un middleware de cargador de arranque ya que no me proporciona ningún contexto más sencillo (a menos que esté escribiendo un sistema operativo).

¿El conjunto de instrucciones es firmware de CPU y no middleware? Un conjunto de instrucciones de una CPU se consideraría más bien una interfaz de programación de aplicaciones (API) (que "podría" considerarse una forma de middleware), no es firmware ya que la CPU (la propia unidad central de procesamiento) no tiene nada. 'correr'; el conjunto de instrucciones de la CPU es en lo que el software se 'compila' (ensambla) y luego la CPU 'entiende' cómo ejecutarse.

¿Hay algún middleware, no firmware? Sí; Casi cualquier marco de software que se le ocurra (las bibliotecas .NET o Java, por ejemplo) podría considerarse una forma de middleware, ya que le brinda al programador una forma "más fácil" de interactuar con varios aspectos de una computadora. Usando Java, por ejemplo, puede abrir un archivo y escribir en él y hacer que ese código "funcione" en cualquier sistema compatible con Java. Dado que ciertas API de Java le permiten tener algunas líneas de código que interactúan con archivos en sistemas dispares, se puede considerar una forma de 'middleware' ya que el desarrollador no tiene que escribir el código para cada sistema diferente (Linux/Windows/ Apple, etc.) para interactuar con el sistema de archivos del disco duro y el propio sistema operativo.

¿Cuáles son las relaciones y diferencias entre los controladores de dispositivo y el firmware y middleware? Un controlador de dispositivo es una pieza de software que se encuentra en el nivel del sistema operativo (generalmente como una biblioteca "instalada") que le indica al sistema operativo "cómo" interactuar con dicho dispositivo. Por ejemplo, cuando instala los controladores de video más recientes, está instalando software que el sistema operativo "usa" para comunicarse con la tarjeta de video real. La tarjeta de video en sí tiene un firmware que sabe cómo interpretar la información que le proporciona el sistema operativo (debido al controlador) y hace lo que quiere con ella (dibujar una ventana o un objeto de juego, por ejemplo).

Los controladores de dispositivos podrían considerarse middleware (nuevamente dependiendo de su visión de los mismos) ya que se encuentran entre el sistema operativo/hardware y cualquiera que desee utilizar el hardware a través del sistema operativo.

Anecdótico: en mis experiencias en la industria, he encontrado que 'middleware' 'significa' 'servicios web' o algo así (al menos lo que quiere decir la persona que usa el término de todos modos), aunque también lo he visto/escuchado (mal )se utiliza en muchas ofertas de trabajo y entrevistas para referirse a una variedad de cosas, desde API y bibliotecas (como Boost o Spring) hasta C++ STL e incluso el propio C# (el lenguaje en sí, no .NET).

Espero que eso pueda ayudar.

Respuesta2

¿El firmware del BIOS no es middleware?

Correcto. El middleware está por encima del sistema operativo y utiliza los servicios del sistema operativo para proporcionar servicios de nivel superior. El BIOS está debajo del sistema operativo.

¿Es un gestor de arranque para un sistema operativo un firmware, middleware o algo así?

El gestor de arranque es una aplicación de bajo nivel. No es firmware (porque es específico de la plataforma, no del hardware) ni middleware (porque no utiliza servicios del sistema operativo).

¿El conjunto de instrucciones es firmware de CPU y no middleware?

El conjunto de instrucciones de una CPU no es una pieza de software. Entonces no es ninguna de esas cosas. Puede implementarse en hardware, microcódigo o alguna combinación.

¿Hay algún middleware, no firmware?

El middleware es específico del sistema operativo, el firmware no. El firmware está diseñado para hardware específico. El middleware está diseñado para un sistema operativo específico.

¿Cuáles son las relaciones y diferencias entre los controladores de dispositivo y el firmware y middleware?

El firmware generalmente está integrado en el hardware y se ejecuta en ese mismo hardware. Los controladores de dispositivos son parte del sistema operativo y se ejecutan en la CPU, no en el hardware que controlan. El middleware es específico del sistema operativo y utiliza los servicios del sistema operativo para proporcionar servicios de nivel superior, no solo control de hardware.

Respuesta3

Software

Definido de manera muy general, el software es un conjunto de instrucciones que se ejecutan en un procesador para indicarle que realice una acción. Según esta definición, el firmware, el middleware y los controladores también son software; los diferentes términos describen tres clases diferentes de software con funciones muy diferentes.

firmware

El firmware es software que generalmente reside en un almacenamiento no volátil (como un chip EEPROM) y es responsable de arrancar (hacer utilizable) otro hardware del sistema y/o proporcionar una interfaz de software a ese hardware para software de "nivel superior", como un sistema operativo. sistema.

Por ejemplo, el BIOS de una PC (o el entorno EFI en una Mac) podría considerarse firmware, ya que ambos residen en un almacenamiento no volátil (generalmente un chip IIRC en la placa base) y son responsables de algunos aspectos de la inicialización del hardware, así como de la carga de otro software (por ejemplo, el gestor de arranque) que puede utilizar la funcionalidad proporcionada por el BIOS para comunicarse con hardware como el disco, desde el cual se carga un gestor de arranque de segunda etapa o el núcleo del sistema operativo.

Conductor

Un controlador es un software que proporciona una interfaz para el hardware del sistema para un sistema operativo específico. Por ejemplo, el controlador de teclado genérico de Windows comprende las señales que enviará un teclado para todas las teclas estándar; cuando recibe estas señales, las presenta al sistema operativo de una manera que Windows comprende. Además de esto, si tuviera un teclado elegante con teclas no estándar, incluirá un controlador para habilitar estas teclas, ya que el controlador del teclado genérico no comprende estas teclas no estándar.

software intermedio

El middleware es un tipo de software que se ubica entre otros dos bits de software y actúa como intermediario entre ellos, generalmente para facilitar la comunicación entre los dos.

Por ejemplo, un motor de juego podría considerarse middleware porque se encuentra entre la aplicación cliente (un juego) y los diversos servicios expuestos por el sistema operativo que un juego podría utilizar:

  • Servicios de gráficos (DirectX para Windows u OpenGL para (Windows, Mac, Linux y otros)
  • Servicios de sonido (DirectSound/Windows Audio para Windows, Core Audio para Mac)
  • Servicios de red (DirectPlay o Windows Sockets para Windows)

Cuando un juego utiliza un motor de juego, le pide al motor que realice las tareas que desea realizar en lugar de solicitar directamente el servicio correspondiente del sistema operativo.

La principal ventaja de utilizar servicios a través de una capa de middleware es que la aplicación que utiliza el servicio no necesita preocuparse por los detalles específicos de cómo funciona un servicio, por lo que un desarrollador de juegos puede hacer que un motor realice una tarea, dibujar un triángulo, por ejemplo, y puede Esté razonablemente seguro de que el triángulo se dibujará igual en Windows y Mac a pesar de que los servicios reales que realizan el dibujo pueden, de hecho, diferir mucho desde una perspectiva de programación.

información relacionada