Совместимость двоичного кода
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2013 г. ) |
Совместимость с двоичным кодом (совместимость с двоичным кодом или совместимость с объектным кодом ) — это свойство компьютерной системы , означающее, что она может запускать тот же исполняемый код , обычно машинный код для компьютера общего назначения центрального процессора (ЦП) , что и другой компьютер. система может работать. совместимость исходного кода С другой стороны, перекомпиляция или интерпретация означает, что перед запуском программы в совместимой системе необходима .
Для скомпилированной программы в общей операционной системе двоичная совместимость часто подразумевает, что не только процессоры ( наборы команд ) двух компьютеров двоично совместимы, но также интерфейсы и поведение операционной системы (ОС) и интерфейсы прикладного программирования (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 семейством направлены на создание ОС с открытым исходным кодом , свободной программной двоично совместимой с ОС 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 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. [1] [2]
См. также
[ редактировать ]- Обратная совместимость
- Бинарный интерфейс приложения (ABI)
- Совместимость с компьютером
- Ошибка совместимости
- Совместимость штекеров
- Ремейк видеоигры
- Мультиархитектурный двоичный файл
Ссылки
[ редактировать ]- ^ «Архитектура системы Mac OS X» . 2002. Архивировано из оригинала 2 августа 2002 года.
- ^ Сингх, Амит (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.