К вопросу о переносимости кода и некоторых возможностях использования кроссплатформенного программного обеспечения - page 2

А.В. Шикуть
2
Переносимость кода напрямую зависит от операционной системы
(ОС) благодаря тому, что обычные исполняемые файлы содержат
большие объемы данных, не являющиеся непосредственно компью-
терной программой, в том числе, описание программного окружения,
в котором программа может быть выполнена; данные для отладки
программы; используемые константы; данные, которые могут пона-
добиться ОС для запуска процессора и др. Кроме того, исполняемые
файлы также содержат вызовы системных библиотечных функций. И
почти всегда набор системных библиотек и формат исполняемого
файла являются уникальными для определенной операционной си-
стемы. Именно поэтому исполняемые файлы, разработанные для од-
ной ОС, не могут быть запущены в другой ОС. Обычно код програм-
мы адаптируется для конкретной ОС, под управлением которой
предполагается ее использование. Так, например, программа, предна-
значенная для использования в режиме потоковой многозадачности,
не может быть использована для 16-разрядной ОС.
Таким образом, с одной стороны, привязка к особенностям опре-
деленной ОС необходима, чтобы получить хорошее быстродействие,
а с другой стороны, зависимость от ОС усложняет процесс переноса
программы.
Некоторые способы и пути повышения переносимости.
Хотя
и не существует жестких правил, позволяющих минимизировать за-
висимость разрабатываемых программ от ОС, однако можно сфор-
мулировать некоторые рекомендации, которых следует придержи-
ваться. Например, следует отделять интерфейсную часть кода от реа-
лизации, чтобы отделить ту часть программы и те модули, которые
взаимодействуют с ОС. В целях обеспечения переносимости кода
между операционными системами и компиляторами следует избегать
применения платформозависимых библиотек при разработке различ-
ных модулей.
Соответственно, созданный программный код требует соответ-
ствующего компилятора для преобразования исходного кода в ма-
шинный для определенного типа процессора.
Один из путей повышения переносимости программы заключа-
ется в том, чтобы сделать параметры независимыми от системы или
процессора путем использования макроса
#define
[1]. Это позволит
сделать параметры независимыми от операционной системы или от
процессора. С помощью
#define
можно определять данные, которые
могут изменяться при переносе программы, например, размер буфе-
ра, используемого при обращении к диску, или специальные коман-
ды при распределении памяти Define-определения упрощают вы-
полнение всей работы, так как при этом значения таких данных
необходимо изменить только один раз и в одном месте, а не во всей
программе.
1 3,4,5,6,7,8
Powered by FlippingBook