stringtranslate.com

Совместимость двоичного кода

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

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

Такой термин, как обратная совместимость, обычно подразумевает совместимость объектного кода. Это означает, что новое компьютерное оборудование и/или программное обеспечение имеет (практически) все функции старого, а также дополнительные возможности или производительность. Таким образом, старый исполняемый код будет работать без изменений на новом продукте. Для скомпилированной программы, работающей непосредственно на ЦП под ОС, «бинарно совместимая операционная система» в первую очередь означает совместимость двоичного интерфейса приложения (ABI) с другой системой. Однако это также часто подразумевает, что API, от которых приложение зависит, напрямую или косвенно (например , API Windows ), достаточно похожи. Аппаратное обеспечение (помимо ЦП, например, для графики) и периферийные устройства, к которым приложение получает доступ, также могут быть фактором полной совместимости, хотя многие аппаратные различия скрыты современными 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 направлены на создание ОС с открытым исходным кодом , свободно распространяемой , двоично совместимой с семейством ОС Windows NT от Microsoft, использующей 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 Virtual PC позволяют запускать другие ОС на Windows, Linux и macOS.

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

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

Ссылки

  1. ^ "Архитектура системы Mac OS X". 2002. Архивировано из оригинала 2 августа 2002 года.
  2. ^ Сингх, Амит (29 июня 2006 г.). Внутреннее устройство Mac OS X: системный подход . Addison-Wesley . Раздел 2.11.8: Classic. 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.

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