Совместимость двоичного кода - Binary-code compatibility

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

Для скомпилированной программы в общей операционной системе двоичная совместимость часто подразумевает двоичную совместимость не только процессоров ( наборов инструкций ) двух компьютеров, но также интерфейсов и поведения операционной системы и API , а также соответствующих им ABI. API-интерфейсы достаточно равны, то есть «совместимы».

Термин " обратная совместимость" обычно подразумевает совместимость объектного кода. Это означает, что новое компьютерное оборудование и / или программное обеспечение имеют (практически) все функции старого, а также дополнительные возможности или производительность. Таким образом, более старый исполняемый код будет работать без изменений в новом продукте. Для скомпилированной программы, работающей непосредственно на ЦП под ОС, «двоично-совместимая операционная система» в первую очередь означает совместимость двоичного интерфейса приложения (ABI) с другой системой. Однако это также часто подразумевает, что API-интерфейсы, от которых приложение зависит, прямо или косвенно (например, Windows API ), достаточно похожи. Аппаратное обеспечение (помимо ЦП, например, для графики) и периферийные устройства, к которым обращается приложение, также могут быть фактором полной совместимости, хотя многие аппаратные различия скрыты современными API-интерфейсами (часто частично предоставляемыми самой ОС и частично конкретными драйверами устройств ) .

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

Двоичная совместимость - главное преимущество при разработке компьютерных программ, запускаемых в нескольких операционных системах. Некоторые ОС на основе Unix , такие как FreeBSD или NetBSD , предлагают двоичную совместимость с более популярными ОС, такими как ОС Linux , поскольку большинство двоичных исполняемых файлов обычно не распространяются для таких ОС.

Большинство ОС обеспечивают двоичную совместимость в каждой версии ОС для большинства двоичных файлов, созданных для работы в более ранних версиях ОС. Например, многие исполняемые файлы, скомпилированные для Windows 3.1 , Windows 95 или Windows 2000, также могут быть запущены в Windows XP или Windows 7 , а многие приложения для DOS работают в гораздо более новых версиях Windows вплоть до Windows 10, пока поддерживается NTVDM. .

Бинарно совместимое оборудование

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

Бинарно-совместимые операционные системы

Бинарно-совместимые операционные системы - это операционные системы, которые стремятся реализовать бинарную совместимость с другой ОС или другим вариантом той же марки. Это означает, что они совместимы с ABI (для двоичного интерфейса приложения ). Поскольку задача ОС - запускать программы, архитектуры набора команд, запускающие ОС, должны быть одинаковыми или совместимыми. В противном случае программы можно использовать в эмуляторе ЦП или в более быстром механизме динамической трансляции , чтобы сделать их совместимыми.

Например, ядро Linux несовместимо с Windows. Это не означает, что Linux не может быть двоично совместим с приложениями Windows. Для этого в некоторой степени доступно дополнительное программное обеспечение Wine . ReactOS усилия в области развития стремится создать с открытым исходным кодом , бесплатное программное обеспечение OS, которая двоичная совместима с Microsoft, Windows NT семейства операционных систем , использующих Wine для совместимости приложений и переопределении ядра Windows , для дополнительной совместимости , такие как для водителей , тогда как Linux будет использовать драйверы Linux не Драйверы для Windows. FreeBSD и другие члены BSD семейства имеют двоичную совместимость с ядром Linux в UserMode по переводу Linux системных вызовов в тот BSD. Это позволяет запускать код приложений и библиотек, которые работают в операционных системах на базе Linux, также и в BSD.

Обратите внимание, что бинарно-совместимая ОС отличается от запуска альтернативной ОС посредством виртуализации или эмуляции , которая выполняется для запуска программного обеспечения в альтернативной ОС в случае, если ОС хоста несовместима. Иногда виртуализация предоставляется вместе с ОС хоста (или такое программное обеспечение может быть получено), что фактически делает ОС хоста совместимой с программами. Например, режим Windows XP для Windows 7 позволяет пользователям запускать 64-разрядную версию Windows 7 и позволяет старому программному обеспечению по-прежнему работать на 32-разрядной виртуальной машине под управлением Windows XP ; VMware Workstation / VMware Fusion , Parallels Workstation и Windows Virtual PC позволяют запускать другие ОС в Windows, Linux и macOS.

Другой пример: Mac OS X на PowerPC имела возможность запускать Mac OS 9 и более ранние прикладные программы через Classic, но это не делало Mac OS X бинарно-совместимой ОС с Mac OS 9. Вместо этого классическая среда фактически работала. Mac OS 9.1 на виртуальной машине , работающей как обычный процесс внутри Mac OS X.

Смотрите также

использованная литература

внешние ссылки

  • KDE Techbase Policies - сборник практических правил разработки на C ++ (с некоторыми примерами ), чтобы не нарушать бинарную совместимость между выпусками библиотеки.
  • ABI Analysis Tools  - набор инструментов с открытым исходным кодом для анализа ABI и обратной двоичной совместимости, реализующих политики KDE Techbase.