Русский | English   поискrss RSS-лента

Главная  → История развития программного обеспечения  → 

Средства обеспечения горизонтальной мобильности прикладных и инструментальных систем

В СССР и других странах СЭВ разработан и выпускается широкий спектр микроЭВМ на основе микропроцессоров семейства К1810ВМ86. Важнейшим фактором их эффективного использования, при соблюдении прочих условий, является мобильность прикладного и инструментального программного обеспечения (ПО), которое разрабатывается для указанных микроЭВМ в среде семи различных операционных систем. Под горизонтальной мобильностью мы понимаем возможность переноса ПО без (или с минимальной) адаптации из одной ОС в другую в рамках одной ЭВМ или семейства совместимых ЭВМ. В статье рассматривается решение проблемы горизонтальной мобильности, предложенное для микроЭВМ СМ 1810 семейства М16-1 СМ ЭВМ, которое может быть использовано как в персональных компьютерах ЕС ЭВМ, так и в других микро-ЭВМ этого класса.

Методы достижения мобильности ПО

Назовем систему, откуда производится перенос ПО, – инструментальной (независимо от того, разрабатывались ли в ней мобильные программы или нет), а систему, куда переносится ПО, – объектной. Вертикальная мобильность ПО в нашей терминологии – это перенос программ на ЭВМ с другой (несовместимой) системой команд.

Существуют три основных метода достижения мобильности ПО:

1) перенос текстов программ, написанных на языках программирования высокого уровня (ЯВУ), а также применение макропроцессоров [1, 2];

2) постановка мобильных операционных систем, например, систем типа UNIX;

3) применение Универсальных программных интерфейсов (УПИ) [3-6].

В первом методе мобильность достигается за счет переноса исходных текстов ПО с инструментальной ЭВМ на объектную, на которой производится их перетрансляция и дальнейшая обработка объектных модулей (создание библиотек, компоновка и т. д.). Метод требует наличия компилятора с используемого ЯВУ как на инструментальной, так и на объектной ЭВМ, причем реализации ЯВУ на обеих ЭВМ должны быть достаточно близки. С ростом объема ПО сложность проблем, связанных с применением данного метода, растет.

Постановка мобильных ОС решает многие вопросы по переносу ПО, но, во-первых, не всегда возможна, так как требует определенной поддержки со стороны аппаратного обеспечения, а во-вторых, заставляет пользователя работать в жестко заданной программной среде, не всегда адекватной его проблемной области.

Третий метод получил распространение в последние годы и был использован нами при создании мобильной системы программирования (МСП) для микроЭВМ семейства СМ 1810.

Универсальный программный интерфейс

Так как наибольшие усилия затрачиваются на разработку инструментальных средств (трансляторов с языков программирования, систем текстообработки, интегрированных пакетов, систем ведения проектов, анализаторов, символических отладчиков, пакетов программ поддержки и т. д.), то очевидна необходимость мобильности таких систем в первую очередь. Мобильность прикладного ПО вторична по отношению к мобильности инструментального ПО.

Принципиальным решением при создании систем с гарантированной горизонтальной мобильностью является создание и использование абстракции ОС, которая затем отображается на реальную операционную систему, при этом различие между инструментальной и объектной ОС стирается.

Одной из наиболее удачных абстракций ОС является УПИ.

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

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

При горизонтальном переносе программ, реализованных с использованием УПИ возникают три основные технические проблемы:

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

Единый формат объектных модулей требует, чтобы при реализации УПИ был реализован также загрузчик для работы с этим форматом. Такой загрузчик сам может быть написан с использованием только вызовов УПИ и является таким образом мобильным, хотя его применение в конкретной ОС может потребовать дополнительной доработки из-за таких ее свойств, как динамическое распределение памяти, наличие виртуальной памяти и т. д.

Проведенный авторами анализ системных вызовов ОС ДЕМОС 16.1 показал возможность реализации УПИ в этой системе. Реализация мобильной системы программирования в мобильной операционной системе показывает принципиальные разлитая этих двух подходов к мобильности:

Инструментальная среда, предоставляемая мобильной системой программирования на СМ 1810, включает в себя трансляторы с языков Макроассемблер-86, ПЛ/М-86, Фортран-86, Паскаль-86 и Си-86, экранный редактор текстов, пакет программ обслуживания объектных модулей, пакет программ поддержки арифметического сопроцессора, пакет программ для документирования, а также отдельные инструментальные средства.

Этот набор средств достаточен для ведения разработки. Однако, для того чтобы разрабатывать большие программные системы на современном уровне предполагается расширить состав мобильной системы средствами сопровождения проекта, единым символическим отладчиком для языков высокого уровня, пакетом инструментальных средств.

УПИ в операционных системах ДОС 1810, МИКРОС-86 и МДОС 1810 реализован как надстройка над ОС и реализуется программами RUN, в которых содержится специфика реализации УПИ в конкретной ОС.

Для операционной системы МИКРОС-86 разработка программы RUN потребовала 5 чел.-мес. Сложность реализации УПИ зависит от развитости ОС объектной ЭВМ. Если набор системных вызовов шире набора вызовов УПИ, то реализация значительно упрощается.

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

Набор вызовов УПИ приведен в таблице.

Код вызова Имя вызова Назначение
0 DQ$ALLOCATE Запрашивает сегмент памяти заданного размера
1 DQ$FREE Возвращает сегмент памяти системе
2 DQ$GET$SIZE Возвращает размер выделенного сегмента
3 DQ$TRAP$CC Захватывает управление при вводе с клавиатуры символа УС-C (CTRL-C)
4 DQ$TRAP$EXCEPTION Определяет подпрограмму пользователя для обработки особых ситуаций
5 DQ$GET$EXCEPTIONS-HANDLER Возвращает адрес текущей подпрограммы обработки особых ситуаций
6 DQ$DECODE$EXCEPTION Преобразует цифровой код особой ситуации в полное сообщение о ней
7 DQ$GET$SYSTEM$ID Возвращает сообщение, идентифицирующее имя операционной системы, в которой выполняется программа
8 DQ$GET$TIME Возвращает текущие дату и время
9 DQ$DELETE Удаляет существующий файл
10 DQ$RENAME Изменяет полное имя файла на заданное
11 DQ$ATTACH Создает присоединение к заданному файлу
12 DQ$CREATE Создает новый файл
13 DQ$OPEN Открывает файл для операций ввода/вывода
14 DQ$CLOSE Закрывает файл для операций ввода/вывода
15 DQ$DETACH Удаляет присоединение (но не файл), установленное вызовами DQ$ATTACH или DQ$CREATE
16 DQ$READ Производит буферизованное чтение из файла
17 DQ$WRITE Производит буферизованную запись в файл
18 DQ$SEEK Изменяет положения маркера записи/чтения в файле
19 DQ$TRUNCATE Отсекает оставшуюся часть файла
20 DQ$GET$CONNECTION$- STATUS Возвращает информацию о присоединении файла
21 DQ$CHANGE$EXTENSION Изменяет расширение имени файла
22 DQ$OVERLAY Загружает оверлейный модуль
23 DQ$SPECIAL Определяет возможность редактирования информации, вводимой оператором с консоли
24 DQ$GET$ARGUMENT Получает следующий аргумент из командной строки вызова программы
25 DQ$SWITCH$BUFFER Подставляет новую командную строку вместо существующей
26 DQ$EXIT Передает управление и код завершения из программы операционной системе
27 DQ$FILE$INFO Возвращает информацию об указанном файле
28 DQ$RESERVE$IO$MEMORY Резервирует память для операций ввода/вывода
29 DQ$DECODE$TIME Возвращает системное время и дату в двоичном и символьном представлениях
30 DQ$CHANGE$ACCESS Изменяет права доступа к указанному файлу

 

Структура вызовов УПИ

Вызов УПИ имеет следующую структуру:

Порядок следования параметров в стеке:

При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php