Совместимость двоичного кода - 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, и множество приложений для ДОС работают также на современных версиях Windows.[нужна цитата ]

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

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

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

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

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

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

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

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

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

  1. ^ «Архитектура системы Mac OS X». 2002. Архивировано с оригинал 2 августа 2002 г.
  2. ^ Сингх, Амит (29 июня 2006 г.). Внутреннее устройство Mac OS X: системный подход. Эддисон-Уэсли. Раздел 2.11.8: Классический. ISBN  0-321-27854-2. Classic Startup - это приложение Mach-O, которое запускает Mac OS 9 в своем адресном пространстве. Он обеспечивает уровень аппаратной абстракции между Mac OS 9 и Mac OS X за счет виртуализации ловушек, системных вызовов и прерываний. Он работает в среде с защищенной памятью, в которой несколько процессов Mac OS 9 расположены поверх одного процесса Mac OS X BSD.

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

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