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