Quais são as relações e diferenças entre firmware e middleware?
Wikipédia diz
firmware é a combinação de memória persistente e código de programa e dados armazenados nele.[1] Exemplos típicos de dispositivos contendo firmware são sistemas embarcados (como semáforos, eletrodomésticos e relógios digitais), computadores, periféricos de computador, telefones celulares e câmeras digitais. O firmware contido nesses dispositivos fornece o programa de controle do dispositivo.
Middleware é um software de computador que fornece serviços para aplicativos de software além daqueles disponíveis no sistema operacional. Pode ser descrito como "cola de software".[1] O middleware torna mais fácil para os desenvolvedores de software realizarem comunicação e entrada/saída, para que possam se concentrar no propósito específico de sua aplicação.
Ainda não entendo as diferenças em suas funções, em relação ao hardware, software de alto nível, sistema operacional, etc.
Por exemplo,
O firmware do BIOS não é middleware?
Um bootloader para um sistema operacional é um firmware, middleware ou algo assim?
O conjunto de instruções é um firmware de CPU e não um middleware?
Existe algum middleware e não firmware?
Quais são as relações e diferenças entre drivers de dispositivos e firmware e middleware?
Obrigado!
Responder1
Firmware e Middleware são termos simples da indústria para descrever um determinado conjunto de “algum código”.
Firmware (como afirma o wiki) 'normalmente' representa software 'normalmente' escrito em assembly ou C que 'normalmente' é executadonohardware.
O 'on/the' indica que este software reside em um meio de armazenamento permanente (como uma espécie de pequeno flash) que está diretamente conectado ao hardware que o software deve controlar. É chamado de 'firmware' porque é um software projetado especificamente para executar o hardware.
Também cito a palavra normalmente porque a indústria de tecnologia tem o péssimo hábito de cunhar termos e depois distorcê-los para que ninguém possa saber qual é a verdadeira intenção da palavra. A 'programação incorporada' é um bom exemplo atual; embora o termo normalmente se refira a programadores que desenvolveram o que é essencialmente firmware (ou seja, desenvolvedores de hardware ASM/C de baixo nível), o termo desde então se transformou para incluir desenvolvedores Android (ou seja, desenvolvedores Linux/kernel que podem operar nos níveis Java e C ). Não estou criticando nenhum tipo de desenvolvedor ou prática de desenvolvimento (eu mesmo faço muitos desses tipos de desenvolvimento), apenas apontando que a indústria de tecnologia gosta de usar palavras indevidamente.
Middleware é outro exemplo dessa palavra; embora eu ainda não tenha ouvido ou visto 'firmware' usado para qualquer coisa que não seja código de nível de hardware, vi middleware usado em tudo, desde firmware até .NET/Java. Middleware é um termo genérico que (como desenvolvedor) você geralmente pode decifrar a partir do contexto o que se pretende, pois já o vi usado indevidamente muitas vezes; então, para responder diretamente:
Ainda não entendo as diferenças em suas funções, em relação ao hardware, software de alto nível, sistema operacional, etc. Firmware é um software (código transformado em formato binário) que reside em uma determinada peça de hardware e executa esse hardware. Middleware pode ser usado para significar uma API/biblioteca que interage com hardware (ou outro software).
O firmware do BIOS não é middleware? Dependendo da sua visão sobre isso, podem ser ambos. Tecnicamente, o BIOS é firmware (é um software usado especificamente para executar o hardware em que está, ou seja, a placa-mãe), mas se sua intenção é interagir diretamente com uma peça de hardware de alguma forma (como faria um sistema operacional), o BIOS ' poderia 'ser middleware, já que você não precisa 'escrever' seu próprio BIOS e rotinas de hardware e é aí que o uso indevido de 'middleware' pode entrar, mas de uma forma clássica, pois não, o BIOS não é middleware.
Um bootloader para um sistema operacional é um firmware, middleware ou algo assim? Um bootloader para um sistema operacional é um trecho de código que reside entre o BIOS (ou outro subsistema básico de hardware) e os sistemas de nível superior (geralmente o sistema operacional) que informa aos sistemas inferiores (ou seja, BIOS) onde o sistema operacional reside na mídia de inicialização. Normalmente falando, um bootloader geralmente fica em um local específico de um meio de armazenamento (como as primeiras centenas de bytes ou mais) e o BIOS sabe (graças aos padrões da indústria) onde 'procurar' por um bootloader e em que ponto o bootloader assume para fazer o que foi escrito para fazer (geralmente inicializar o sistema operacional).
Um bootloader não é firmware, mas pode tecnicamente residir em firmware e, na medida em que é 'middleware', isso pode ser sim ou não, dependendo da 'sua' visão do que 'middleware' é/deveria ser, embora no clássico desde middleware , eu não consideraria um middleware de bootloader, pois ele não me fornece nenhum contexto mais fácil (a menos que eu esteja escrevendo um sistema operacional).
O conjunto de instruções é um firmware de CPU e não um middleware? Um conjunto de instruções de uma CPU seria considerado mais uma interface de programação de aplicativo (API) (que 'poderia' ser considerada uma forma de middleware), não é firmware, pois a CPU (a própria unidade central de processamento) não tem nada 'para correr'; o conjunto de instruções da CPU é o que o software é 'compilado' (montagem) para que a CPU 'entenda' como executar.
Existe algum middleware e não firmware? Sim; praticamente qualquer estrutura de software que você possa imaginar (as bibliotecas .NET ou Java, por exemplo) pode ser considerada uma forma de middleware, pois fornece ao programador uma maneira 'mais fácil' de interagir com vários aspectos de um computador. Usando Java, por exemplo, você pode abrir um arquivo e escrever nele e fazer com que esse código 'funcione' em qualquer sistema compatível com Java. Como certas APIs Java permitem que você tenha algumas linhas de código que interagem com arquivos em sistemas diferentes, isso pode ser considerado uma forma de 'middleware', já que o desenvolvedor não precisa escrever o código para cada sistema diferente (Linux/Windows/ Apple, etc) para interagir com o sistema de arquivos do disco rígido e do próprio sistema operacional.
Quais são as relações e diferenças entre drivers de dispositivos e firmware e middleware? Um driver de dispositivo é um software localizado no nível do sistema operacional (geralmente como uma biblioteca 'instalada') que informa ao sistema operacional 'como' interagir com o referido dispositivo. Por exemplo, ao instalar os drivers de vídeo mais recentes, você está instalando um software que o sistema operacional “usa” para se comunicar com a própria placa de vídeo. A própria placa de vídeo possui um firmware que sabe interpretar as informações fornecidas pelo sistema operacional (por causa do driver) e faz o que quiser com elas (desenhar uma janela ou um sprite de jogo, por exemplo).
Os drivers de dispositivo podem ser considerados middleware (novamente dependendo da sua visão), uma vez que ficam entre o sistema operacional/hardware e qualquer pessoa que queira usar o hardware por meio do sistema operacional.
Anedótico: em minhas experiências no setor, descobri que 'middleware' significa 'significa' 'serviços da web' ou algo parecido (pelo menos o que a pessoa que usa o termo quer dizer de qualquer maneira), embora eu também tenha visto/ouvido (mis )usado em muitas ofertas de emprego e entrevistas para significar uma variedade de coisas, desde APIs e bibliotecas (como Boost ou Spring) até o C++ STL e até mesmo o próprio C# (a linguagem em si, não .NET).
Espero que isso possa ajudar.
Responder2
O firmware do BIOS não é middleware?
Correto. O middleware está acima do sistema operacional, usando os serviços do sistema operacional para fornecer serviços de nível superior. BIOS está abaixo do sistema operacional.
Um bootloader para um sistema operacional é um firmware, middleware ou algo assim?
O bootloader é um aplicativo de baixo nível. Não é firmware (porque é específico de plataforma, não de hardware) ou middleware (porque não usa serviços de sistema operacional).
O conjunto de instruções é um firmware de CPU e não um middleware?
O conjunto de instruções de uma CPU não é um software. Então não é nenhuma dessas coisas. Pode ser implementado em hardware, microcódigo ou alguma combinação.
Existe algum middleware e não firmware?
O middleware é específico do sistema operacional, o firmware não. O firmware é construído para hardware específico. O middleware é construído para um sistema operacional específico.
Quais são as relações e diferenças entre drivers de dispositivos e firmware e middleware?
O firmware geralmente é incorporado ao hardware e é executado no próprio hardware. Os drivers de dispositivo fazem parte do sistema operacional e são executados na CPU, não no hardware que controlam. O middleware é específico do sistema operacional e usa os serviços do sistema operacional para fornecer serviços de nível superior – não apenas controle de hardware.
Responder3
Programas
Definido de maneira muito genérica, software é um conjunto de instruções executadas em um processador para instruí-lo a executar uma ação. Por esta definição, firmware, middleware e drivers também são software; os diferentes termos descrevem três classes diferentes de software com funções muito diferentes.
Firmware
Firmware é um software que geralmente reside em armazenamento não volátil (como um chip EEPROM) e é responsável por inicializar (tornar utilizável) outro hardware do sistema e/ou fornecer uma interface de software para esse hardware para software de "nível superior", como um sistema operacional sistema.
Por exemplo, o BIOS de um PC (ou o ambiente EFI em um Mac) pode ser considerado firmware, pois ambos residem em armazenamento não volátil (geralmente um chip na placa-mãe IIRC) e são responsáveis por alguns aspectos da inicialização do hardware, bem como por o carregamento de outro software (por exemplo, o bootloader) que pode usar a funcionalidade fornecida pelo BIOS para se comunicar com hardware como o disco, a partir do qual um bootloader de segundo estágio ou kernel do sistema operacional é carregado.
Motorista
Um driver é um software que fornece uma interface ao hardware do sistema para um sistema operacional específico. Por exemplo, o driver de teclado genérico do Windows entende os sinais que um teclado enviará para todas as teclas padrão; quando recebe esses sinais, ele os apresenta ao sistema operacional de uma maneira que o Windows entende. Além disso, se você tiver um teclado sofisticado com teclas não padrão, ele incluirá um driver para ativar essas teclas, uma vez que o driver de teclado genérico não entende essas teclas não padrão.Middleware
Middleware é um tipo de software que fica entre dois outros bits de software e atua como intermediário entre eles, geralmente para facilitar a comunicação entre os dois.Por exemplo, um motor de jogo pode ser considerado middleware porque fica entre a aplicação cliente (um jogo) e os vários serviços expostos pelo sistema operativo que um jogo pode utilizar:
- Serviços gráficos (DirectX para Windows ou OpenGL para (Windows, Mac, Linux e outros)
- Serviços de som (DirectSound/Windows Audio para Windows, Core Audio para Mac)
- Serviços de rede (DirectPlay ou Windows Sockets para Windows)
Quando um jogo usa um mecanismo de jogo, ele solicita que o mecanismo execute as tarefas que deseja, em vez de solicitar diretamente o serviço relevante do sistema operacional.
A principal vantagem de usar serviços através de uma camada de middleware é que a aplicação que utiliza o serviço não precisa se preocupar com as especificidades de como um serviço funciona, portanto, um desenvolvedor de jogos pode fazer com que um mecanismo execute uma tarefa, desenhando um triângulo, por exemplo, e pode esteja razoavelmente confiante de que o triângulo será desenhado da mesma forma no Windows e no Mac, apesar do fato de que os serviços reais que fazem o desenho podem, na verdade, diferir muito do ponto de vista da programação.