Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Мобильность программного обеспечения. Платформенно-независимый интерфейс POSIX




Мобильность программного обеспечения означает подготовленность ПО к переносу из одной аппаратно-­операционной среды в другую. Переносимость программ и дан­ных на различные аппаратные и операционные платформы является важ­ным показателем функциональной пригодности для многих современных программ. Это свойство может оцениваться объемом, трудоемкостью и длительностью необходимых доработок компонентов ПО и операций по адаптации, которые следует выполнить для обеспечения полноценного функциони­рования ПО после переноса на иную платформу.

Мобильность может осуществляться на уровне исходных текстов программ или на уровне объектного кода. Она зависит от структурированности и расширяе­мости комплексов программ и данных, а также от наличия дополнительных ресурсов, необходимых для реализации переносимости и модификации компонентов при их переносе.

Для написания переносимой программы нужно следовать некоторым правилам. Во-первых, большая часть программы должна быть написана на языке, который имеется на всех системах, на которые планируется в дальнейшем ее переносить. Это, прежде всего, означает, что программа должна быть написана на языке высокого уровня, предпочтительно стандартизованном, на­пример на языке С. Программа, написанная на ассемблере, не является в общем случае переносимой. Во-вторых, важно минимизировать или, если возможно, исключить те части кода, которые непосредственно взаимодействуют с аппарат­ными средствами. Зависимость от аппаратуры может иметь много форм. Неко­торые очевидные формы зависимости включают прямое манипулирование реги­страми и другими аппаратными средствами. Наконец, если аппаратно-зависимый код не может быть полностью исключен, то он должен быть изолирован в не­скольких хорошо локализуемых модулях. Аппаратно-зависимый код не должен быть распределен по всей программе. Например, можно спрятать аппаратно-зави­симую структуру в программно задаваемые данные абстрактного типа. Другие модули программы будут работать с этими данными, а не с аппаратурой, используя набор некоторых функций. Когда ПО переносится, то изменяются только эти данные и функции, которые ими манипулируют.

Введение стандартов POSIX преследовало цель обеспечить переносимость создаваемого программного обеспечения.

POSIX (Portable Operating System Interface for Computer Environments) – платформенно независимый системный интерфейс для компьютерного окружения. Это стандарт IEEE, описывающий системные интерфейсы для открытых опера­ционных систем, в том числе оболочки, утилиты и инструментарии. Помимо этого, согласно POSIX, стандартизированными являются задачи обеспечения безопасности, задачи реального времени, процессы администрирования, сетевые функции и обработка транзакций. Стандарт базируется на UNIX-системах, но допускает реализацию и в других ОС.

POSIX возник как попытка всемирно известной организации IEEE (Institute of Electrical and Electronical Engineers – американский Институт инженеров по электротехнике и радиоэлектронике) пропаганди­ровать переносимость приложений в UNIX-средах путем разработки абстракт­ного, платформенно-независимого стандарта. Однако POSIX не ограничивается только UNIX-системами; существуют различные реализации этого стандарта в системах, которые соответствуют требованиям, предъявляемым стандартом IEEE Standard 1003.1-1990 (POSIX.1). Например, известная ОС реального времени QNX соответствует спецификациям этого стандарта, что облегчает перенос приложе­ний в эту систему, но UNIX-системой не является ни в каком виде, ибо ее архи­тектура использует абсолютно иные принципы.

Этот стандарт подробно описывает VMS (virtual memory system, систему вирту­альной памяти), многозадачность (МРЕ, multiprocess executing) и технологию переноса операционных систем (CTOS). Таким образом, на самом деле POSIX представляет собой множество стандартов, именуемых POSIX.1 – POSIX.12.

В табл. 4.1 приведены основные направления, описываемые данными стандар­тами. Следует также особо отметить, что POSIX.1 предполагает язык С как ос­новной язык описания системных функций API.

Таким образом, программы, написанные с соблюдением данных стандартов, будут одинаково выполняться на всех POSIX-совместимых системах. Однако стандарт в некоторых случаях носит лишь рекомендательный характер. Часть стандартов описана очень строго, тогда как другая часть только поверхностно раскрывает основные требования. Нередко программные системы заявляются как POSIX-совместимые, хотя таковыми их назвать нельзя. Причины кроются в формально­сти подхода к реализации POSIX-интерфейса в различных ОС. На рис. 4.2 изо­бражена типовая схема реализации строго соответствующего POSIX приложе­ния.

Рис. 4.2. Приложения, строго соответствующие стандарту POSIX

 

Из рис. 4.2 видно, что для взаимодействия с операционной системой программа использует только библиотеки POSIX.1 и стандартную библиотеку RTL языка С, в которой возможно использование лишь 110 различных функций, также опи­санных стандартом POSIX.1.

К сожалению, достаточно часто с целью увеличить производительность той или иной подсистемы либо из соображений введения фирменных технологий, кото­рые ограничивают использование приложения соответствующей операционной средой, при программировании используются другие функции, не отвечающие стандарту POSIX.

Реализации POSIX API на уровне операционной системы различны. Если UNIX-системы в своем абсолютном большинстве изначально соответствуют специфи­кациям IEEE Standard 1003.1-1990, то WinAPI не является POSIX-совместимым. Однако для поддержки данного стандарта в операционной системе MS Win­dows NT введен специальный модуль поддержки POSIX API, работающий на уровне привилегий пользовательских процессов. Данный модуль обеспечивает конвертацию и передачу вызовов из пользовательской программы к ядру систе­мы и обратно, работая с ядром через WinAPI. Прочие приложения, написанные с использованием WinAPI, могут передавать информацию POSIX-приложениям через стандартные механизмы потоков ввода/вывода (stdin, stdout).





Поделиться с друзьями:


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 1848 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Так просто быть добрым - нужно только представить себя на месте другого человека прежде, чем начать его судить. © Марлен Дитрих
==> читать все изречения...

4218 - | 3990 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.