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