1

Каковы отношения и различия между прошивкой и промежуточным программным обеспечением?

Википедия говорит

Микропрограмма - это сочетание постоянной памяти, программного кода и данных, хранящихся в нем. [1] Типичными примерами устройств, содержащих встроенное программное обеспечение, являются встроенные системы (такие как светофоры, бытовые приборы и цифровые часы), компьютеры, периферийные устройства, мобильные телефоны и цифровые камеры. Микропрограмма, содержащаяся в этих устройствах, обеспечивает управляющую программу для устройства.

Промежуточное программное обеспечение - это компьютерное программное обеспечение, которое предоставляет услуги программным приложениям помимо тех, которые доступны в операционной системе. Его можно описать как "программный клей". [1] Промежуточное программное обеспечение облегчает разработчикам программного обеспечения выполнение связи и ввода / вывода, поэтому они могут сосредоточиться на конкретной цели своего приложения.

  1. Я до сих пор не понимаю различий в их ролях относительно аппаратного обеспечения, программного обеспечения высокого уровня, операционной системы и т.д.

    Например,

    Прошивка BIOS не является промежуточным программным обеспечением?

    Является ли загрузчик для ОС прошивкой, промежуточным программным обеспечением или каким-либо программным обеспечением?

    Набор инструкций для прошивки процессора, а не промежуточного ПО?

    Есть ли какое-то промежуточное ПО, а не прошивка?

  2. Каковы отношения и различия между драйверами устройств, прошивками и промежуточным программным обеспечением?

Спасибо!

3 ответа3

5

Прошивка и промежуточное ПО - это простые отраслевые термины, описывающие определенный набор «некоторого кода».

Прошивка (как говорится в вики) «обычно» представляет программное обеспечение, «обычно» написанное на ассемблере, или C, которое «обычно» работает на / аппаратном обеспечении.

«Вкл / в» означает, что это программное обеспечение находится на постоянном носителе данных (например, небольшая флэш-память), которое напрямую подключено к аппаратному обеспечению, которое должно контролировать программное обеспечение. Это называется «прошивка», потому что это программное обеспечение, специально предназначенное для запуска оборудования.

Я также цитирую это слово обычно, потому что у технической индустрии есть ужасная привычка придумывать термины, а затем искажать их, чтобы никто не мог знать, каково истинное намерение этого слова. «Встроенное программирование» является хорошим текущим примером; в то время как термин обычно относится к программистам, которые разработали то, что по сути является встроенным программным обеспечением (то есть разработчики аппаратного обеспечения низкоуровневого ASM/C), с тех пор этот термин трансформировался и включает в себя разработчиков Android (то есть разработчиков Linux/ ядра, которые могут работать как на уровне Java, так и на уровне C. ). Я не осуждаю никакой практики разработчиков или разработчиков (я сам много раз этим занимаюсь), просто отмечаю, что индустрия технологий любит неправильно использовать слова.

Middleware - еще один пример такого слова; в то время как я еще не слышал и не видел, как «прошивка» использовалась для чего-либо, кроме кода аппаратного уровня, я видел промежуточное программное обеспечение, используемое во всем, от прошивки до .NET/Java. Промежуточное программное обеспечение - это общий термин, который (как разработчик) вы обычно можете расшифровать из контекста того, что задумано, поскольку я видел, что оно использовалось слишком много раз; Итак, чтобы ответить вам прямо:

Я до сих пор не понимаю различий в их ролях по отношению к аппаратному обеспечению, высокоуровневому программному обеспечению, операционной системе и т.д. Прошивка - это программное обеспечение (код, преобразованный в двоичный формат), которое находится на определенном оборудовании и работает на указанном оборудовании. Промежуточное программное обеспечение может использоваться для обозначения 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 ниже ОС.

Является ли загрузчик для ОС прошивкой, промежуточным программным обеспечением или каким-либо программным обеспечением?

Загрузчик является приложением низкого уровня. Это не прошивка (потому что это зависит от платформы, не зависит от оборудования) или промежуточное ПО (потому что она не использует службы ОС).

Набор инструкций для прошивки процессора, а не промежуточного ПО?

Набор команд процессора не является частью программного обеспечения. Так что это не из тех вещей. Это может быть реализовано в виде аппаратного обеспечения, микрокода или некоторой комбинации.

Есть ли какое-то промежуточное ПО, а не прошивка?

Промежуточное программное обеспечение зависит от ОС, а встроенное программное обеспечение - нет. Прошивка построена для конкретного оборудования. Промежуточное программное обеспечение построено для конкретной ОС.

Каковы отношения и различия между драйверами устройств, прошивками и промежуточным программным обеспечением?

Прошивка, как правило, встроена в оборудование и работает на этом оборудовании. Драйверы устройств являются частью ОС и работают на процессоре, а не на оборудовании, которым они управляют. Промежуточное программное обеспечение специфично для ОС и использует службы ОС для предоставления сервисов более высокого уровня, а не только для управления оборудованием.

1

Программного обеспечения

В общем, программное обеспечение - это набор инструкций, которые выполняются на процессоре, чтобы дать ему команду выполнить действие. По этому определению встроенное программное обеспечение, промежуточное программное обеспечение и драйверы также являются программным обеспечением, различные термины описывают три различных класса программного обеспечения с очень разными ролями.

Прошивка

Микропрограмма - это программное обеспечение, которое обычно находится в энергонезависимом хранилище (например, микросхема 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, несмотря на тот факт, что фактические службы, выполняющие рисование, на самом деле могут сильно отличаться с точки зрения программирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .