Двоичная совместимость и совместимость исходных текстов
Необходимо различить
- совместимость на двоичном уровне - приложения обычно хранятся в ОС в виде исполняемых файлов, содержащие двоичные образы кодов и данных. Двоичная совместимость достигается в том случае, когда можно взять исполняемую программу и запустить его на исполнение в среде другой ОС.
- совместимость на уровне исходных текстов требует наличия соответствующего компилятора в составе программного обеспечения компьютера, на котором предполагается выполнять данное приложение, а так же совместимости на уровне библиотек и системных вызовов. При этом необходима перекомпиляция имеющихся исходных текстов в новый используемый модуль.
Совместимость на уровне исходных текстов важна в основном для разработчиков приложений, в распоряжении которых эти исходные тексты всегда имеются. Но для конечных пользователей практическое значение имеет только двоичная совместимость, т. к. только в этом случае они могут использовать один и тот же коммерческий продукт, поставляемый в виде двоичного исполняемого кода, в различных ОС и на разных машинах.
Обладает ли новая ОС двоичной совместимостью или совместимостью исходных текстов с существующими ОС, зависит от многих факторов. Самый главный из них – архитектура процессора, на котором работает новая ОС.
1.Если процессор использует тот же набор команд (возможно, с некоторыми добавлениями) и тот же диапазон адресов, тогда двоичная совместимость может быть достигнута довольно просто. Для этого достаточно соблюдения следующих условий:
· вызовы функций API, которые содержит приложение, должны поддерживаться данной ОС;
· внутренняя структура используемого файла приложения должна соответствовать структуре используемых файлов данной ОС.
2. Гораздо сложнее достичь двоичной совместимости ОС, предназначенных для выполнения на процессорах, имеющие разные архитектуры. Помимо соблюдения приведенных выше условий необходимо организовать эмуляции двоичного кода.
Эмулятор последовательно выбирает каждую двоичную инструкцию одного процессора, программным способом дешифрировать ее, чтобы определить, какие действия она задает, а затем выполняет эквивалентную программу, написанную в инструкциях другого процессора. Т. к. у этого процессора нет в точности таких же регистров, флагов внутреннего арифметического устройства, как впервом, он должен также имитировать (эмулировать) все эти элементы с использованием своих регистров или памяти. Состояние эмулируемых регистров и флагов после выполнения каждой команды должно быть абсолютно таким же, как и реальном процессоре.
Это простая, но очень медленная работа, т. к. одна команда первого процессора используется значительно быстрее, чем эмулирующая его последовательность команд другого процессора.
Дата добавления: 2016-06-05; просмотров: 2942;