Каковы взаимосвязи и различия между прошивкой и промежуточным программным обеспечением?
Википедия говорит
Прошивка — это комбинация постоянной памяти, программного кода и хранящихся в ней данных.[1] Типичными примерами устройств, содержащих прошивку, являются встроенные системы (например, светофоры, бытовые приборы и цифровые часы), компьютеры, компьютерные периферийные устройства, мобильные телефоны и цифровые камеры. Прошивка, содержащаяся в этих устройствах, обеспечивает программу управления для устройства.
Middleware — это компьютерное программное обеспечение, которое предоставляет услуги программным приложениям за пределами тех, которые доступны из операционной системы. Его можно описать как «программный клей».[1] Middleware облегчает разработчикам программного обеспечения выполнение коммуникации и ввода/вывода, чтобы они могли сосредоточиться на конкретной цели своего приложения.
Я до сих пор не понимаю различий в их ролях относительно оборудования, высокоуровневого программного обеспечения, операционной системы и т. д.
Например,
Разве прошивка BIOS не является промежуточным программным обеспечением?
Является ли загрузчик ОС прошивкой, промежуточным программным обеспечением или чем-то еще?
Является ли набор инструкций микропрограммным обеспечением ЦП, а не промежуточным программным обеспечением?
Есть ли какое-то промежуточное программное обеспечение, а не прошивка?
Каковы взаимосвязи и различия между драйверами устройств, прошивками и промежуточным программным обеспечением?
Спасибо!
решение1
Прошивка и промежуточное программное обеспечение — это простые отраслевые термины, описывающие определенный набор «некоторого кода».
Прошивка (как утверждает вики) «обычно» представляет собой программное обеспечение, «обычно» написанное на ассемблере или C, которое «обычно» работаетнааппаратное обеспечение.
«on/the» указывает на то, что это программное обеспечение находится на постоянном носителе данных (вроде небольшой флэш-памяти), который напрямую подключен к оборудованию, которым программное обеспечение должно управлять. Оно называется «прошивкой», потому что это программное обеспечение, специально разработанное для работы оборудования.
Я также цитирую это слово, потому что у индустрии высоких технологий есть ужасная привычка придумывать термины, а затем искажать их так, что никто не может понять истинное значение слова. «Встроенное программирование» — хороший современный пример; в то время как этот термин обычно относился к программистам, которые разрабатывали то, что по сути является прошивкой (т. е. разработчики оборудования на низком уровне ASM/C), с тех пор этот термин трансформировался и стал включать разработчиков Android (т. е. разработчиков Linux/ядра, которые могут работать как на уровне Java, так и на уровне C). Я не критикую никаких разработчиков или практик разработки (я сам много занимаюсь такими видами разработки), просто указываю на то, что индустрия высоких технологий любит неправильно использовать слова.
Middleware — еще один пример такого слова; хотя я еще не слышал и не видел, чтобы слово «firmware» использовалось для чего-либо, кроме кода на уровне оборудования, я видел, как middleware использовалось во всем, от прошивки до .NET/Java. Middleware — это общий термин, который (как разработчик) вы обычно можете расшифровать из контекста, что подразумевается, поскольку я видел его неправильное использование слишком много раз; поэтому отвечу вам напрямую:
Я до сих пор не понимаю различий в их ролях относительно оборудования, высокоуровневого программного обеспечения, операционной системы и т. д. Прошивка — это программное обеспечение (код, преобразованный в двоичный формат), которое находится на определенном оборудовании и запускает это оборудование. Промежуточное ПО может использоваться для обозначения API/библиотеки, которая взаимодействует с оборудованием (или другим программным обеспечением, если на то пошло).
Разве прошивка BIOS не является промежуточным программным обеспечением? В зависимости от вашего взгляда на это, это может быть и то, и другое. Технически BIOS — это прошивка (это программное обеспечение, которое специально используется для работы оборудования, на котором оно установлено, т. е. материнской платы), но если вы намерены напрямую взаимодействовать с частью оборудования каким-либо образом (как это делает ОС), BIOS «может» быть промежуточным программным обеспечением, поскольку вам не нужно «писать» свой собственный BIOS и аппаратные процедуры, и вот тут-то и может возникнуть неправильное использование «промежуточного программного обеспечения», но в классическом смысле, нет, BIOS не является промежуточным программным обеспечением.
Является ли загрузчик ОС прошивкой, промежуточным программным обеспечением или чем-то еще? Загрузчик для ОС — это фрагмент кода, который находится между BIOS (или другой базовой аппаратной подсистемой) и системами более высокого уровня (обычно ОС), который сообщает системам более низкого уровня (то есть BIOS), где находится ОС на загрузочном носителе. Обычно загрузчик располагается в определенном месте на носителе данных (например, первые несколько сотен байт или больше), и BIOS знает (благодаря отраслевым стандартам), где «искать» загрузчик, и в этот момент загрузчик берет на себя выполнение того, для чего он был написан (обычно загрузка ОС).
Загрузчик не является прошивкой, но технически может находиться в прошивке, а что касается «промежуточного программного обеспечения», то это может быть «да» или «нет» в зависимости от «вашего» представления о том, что такое/должно быть «промежуточным программным обеспечением», хотя в классическом понимании промежуточного программного обеспечения я бы не рассматривал загрузчик как промежуточное программное обеспечение, поскольку оно не предоставляет мне более простого контекста (если только я не пишу ОС).
Является ли набор инструкций микропрограммным обеспечением ЦП, а не промежуточным программным обеспечением? Набор инструкций ЦП можно было бы считать скорее интерфейсом прикладного программирования (API) (который «можно» считать формой промежуточного программного обеспечения), это не прошивка, поскольку ЦП (самому центральному процессору) нечего «запускать»; набор инструкций ЦП — это то, во что программное обеспечение «компилируется» (сборка), и затем ЦП «понимает», как это запускать.
Есть ли какое-то промежуточное программное обеспечение, а не прошивка? Да; практически любой программный фреймворк, который вы можете себе представить (например, библиотеки .NET или Java), можно считать формой промежуточного программного обеспечения, поскольку они предоставляют программисту «более простой» способ взаимодействия с различными аспектами компьютера. Например, используя Java, вы можете открыть файл и записать в него код, который будет «работать» на любой системе, поддерживающей Java. Поскольку некоторые API Java позволяют вам иметь несколько строк кода, которые взаимодействуют с файлами в разных системах, это можно считать формой «промежуточного программного обеспечения», поскольку разработчику не нужно писать код для каждой отдельной системы (Linux/Windows/Apple и т. д.) для взаимодействия с файловой системой жесткого диска и ОС самостоятельно.
Каковы взаимосвязи и различия между драйверами устройств, прошивками и промежуточным программным обеспечением? Драйвер устройства — это часть программного обеспечения, которая находится на уровне ОС (обычно как «установленная» библиотека), которая сообщает ОС «как» взаимодействовать с указанным устройством. Например, когда вы устанавливаете последние видеодрайверы, вы устанавливаете программное обеспечение, которое ОС «использует» для взаимодействия с самой видеокартой. Сама видеокарта имеет встроенное ПО, которое знает, как интерпретировать информацию, предоставленную ей ОС (благодаря драйверу), и делает с ней то, что хочет (например, рисует окно или игровой спрайт).
Драйверы устройств можно считать промежуточным программным обеспечением (опять же, в зависимости от вашего взгляда на это), поскольку они находятся между ОС/оборудованием и тем, кто хочет использовать оборудование через ОС.
Случайный факт: в своей отрасли я обнаружил, что «промежуточное программное обеспечение» «означает» «веб-сервисы» или что-то в этом роде (по крайней мере, то, что имеет в виду человек, использующий этот термин), хотя я также видел/слышал, как его (неправильно) использовали во многих объявлениях о вакансиях и на собеседованиях для обозначения самых разных вещей: от API и библиотек (вроде Boost или Spring) до C++ STL и даже самого C# (самого языка, а не .NET).
Надеюсь, это поможет.
решение2
Разве прошивка BIOS не является промежуточным программным обеспечением?
Правильно. Промежуточное ПО находится выше ОС, используя службы ОС для предоставления служб более высокого уровня. BIOS находится ниже ОС.
Является ли загрузчик ОС прошивкой, промежуточным программным обеспечением или чем-то еще?
Загрузчик — это низкоуровневое приложение. Это не прошивка (потому что она специфична для платформы, а не для оборудования) и не промежуточное ПО (потому что она не использует службы ОС).
Является ли набор инструкций микропрограммным обеспечением ЦП, а не промежуточным программным обеспечением?
Набор инструкций ЦП не является частью программного обеспечения. Так что это не одно из этих понятий. Он может быть реализован в виде оборудования, микрокода или какой-то комбинации.
Есть ли какое-то промежуточное программное обеспечение, а не прошивка?
Middleware зависит от ОС, firmware — нет. Firmware создается для определенного оборудования. Middleware создается для определенной ОС.
Каковы взаимосвязи и различия между драйверами устройств, прошивками и промежуточным программным обеспечением?
Прошивка обычно встроена в оборудование и работает на этом оборудовании. Драйверы устройств являются частью ОС и работают на ЦП, а не на оборудовании, которым они управляют. Промежуточное ПО специфично для ОС и использует службы ОС для предоставления услуг более высокого уровня, а не только для управления оборудованием.
решение3
Программное обеспечение
Если определить его очень обобщенно, то программное обеспечение — это набор инструкций, которые выполняются на процессоре, чтобы дать ему команду на выполнение действия. Согласно этому определению, встроенное ПО, промежуточное ПО и драйверы также являются программным обеспечением, различные термины описывают три разных класса программного обеспечения с существенно различающимися ролями.
Прошивка
Прошивка — это программное обеспечение, которое обычно находится в энергонезависимой памяти (например, в микросхеме EEPROM) и отвечает за начальную загрузку (подготовку к использованию) другого системного оборудования и/или предоставление программного интерфейса к этому оборудованию для программного обеспечения «более высокого уровня», например, операционной системы.
Например, BIOS ПК (или среда EFI на Mac) может считаться прошивкой, поскольку они оба находятся в энергонезависимой памяти (обычно это микросхема на материнской плате IIRC) и отвечают за некоторые аспекты инициализации оборудования, а также за загрузку другого программного обеспечения (например, загрузчика), которое может использовать функциональные возможности BIOS для взаимодействия с оборудованием, например с диском, с которого загружается загрузчик 2-го уровня или ядро операционной системы.
Водитель
Драйвер — это программное обеспечение, которое обеспечивает интерфейс к системному оборудованию для определенной операционной системы. Например, универсальный драйвер клавиатуры Windows понимает сигналы, которые клавиатура будет посылать для всех стандартных клавиш, когда он получает эти сигналы, он представляет их операционной системе таким образом, который понимает Windows. Кроме того, если у вас есть необычная клавиатура с нестандартными клавишами, она будет включать драйвер для включения этих клавиш, поскольку универсальный драйвер клавиатуры не понимает эти нестандартные клавиши.Промежуточное ПО
Промежуточное программное обеспечение — это тип программного обеспечения, которое располагается между двумя другими частями программного обеспечения и действует как посредник между ними, как правило, для облегчения связи между ними.Например, игровой движок можно считать промежуточным программным обеспечением, поскольку он располагается между клиентским приложением (игрой) и различными службами, предоставляемыми операционной системой, которые может использовать игра:
- Графические службы (DirectX для Windows или OpenGL для (Windows, Mac, Linux и других)
- Звуковые службы (DirectSound/Windows Audio для Windows, Core Audio для Mac)
- Сетевые службы (DirectPlay или Windows Sockets для Windows)
Когда игра использует игровой движок, она просит движок выполнить необходимые задачи, а не напрямую обращается к соответствующей службе операционной системы.
Главное преимущество использования сервисов через промежуточный уровень заключается в том, что приложению, использующему сервис, не нужно беспокоиться о специфике работы сервиса. Таким образом, разработчик игры может поручить движку выполнить задачу, например, нарисовать треугольник, и может быть уверен, что треугольник будет нарисован одинаково на Windows и Mac, несмотря на то, что фактические сервисы, выполняющие рисование, могут существенно отличаться с точки зрения программирования.