Операционная система PDOS

Операционная система PDOS была разработана на предприятии САМАЛК[1] с целью создания переносимой операционной системы для мини- и микро-ЭВМ.

Название PDOS расшифровывается следующим образом:

  • PDOS – Pascal DOS, так как центральным языком программирования операционной системы является язык Pascal.
  • PDOS – Р-код DOS, так как переносимость операционной системы осуществляется на уровне "виртуального языка" Р.
  • Переносимость PDOS обеспечивается следующими свойствами:

    • программы выполняются на виртуальной машине Р. Свойства Р-машины определены так, что программы, написанные на языке высокого уровня, "удобно" транслируются в Р-код;
    • перенос на другую машину осуществляется не только переносом собственно языка высокого уровня, но и переносом полного его окружения;
    • структура операционной системы построена так, чтобы минимизировалась зависимость от конкретной ЭВМ.

    Таким образом:

    • прикладные программы, написанные в PDOS, переносятся без всякой перекомпиляции;
    • не только прикладные программы, но и почти целиком PDOS является переносимым.

    Как уже было отмечено, ключом переносимости является Р-машина. Р-код представляет собой "язык ассемблера" этой виртуальной машины. Подавляющая часть PDOS состоит из Р-кода. Перенос осуществляется путем написания эмулятора Р-кода для конкретной ЭВМ. Эмулятор Р-машины часто называют Р-интерпретатором. С помощью этого эмулятора эмулируется Р-машина на данной конкретной ЭВМ, программы выполняются в их Р-код представлении. Необходимо еще решить проблему, связанную с разными механизмами операций ввода-вывода. По мере возможности программы ввода-вывода включены в Р-кодовую часть PDOS. Параметры этих программ регулируются на уровне Р-код. На языке ассемблера данной ЭВМ мы должны написать только часть ввода-вывода (драйверы терминалов, печатающих устройств, дисков). Это занимает приблизительно несколько часов.

    Р-машина как модификация и развитие стека типа LIFO

    Р-машина является развитием псевдомашины Р-2, которая была разработана в университете г. Цюрих (Zurich Technical University). P-2-машина представляет собой стек типа LIFO (last-in first-out). Этот стек предназначен для хранения первичных данных. Он содержит параметры процедур, значения функций, описание подпрограмм и операнды команд Р-машины. В этот стек записываются также коды сегментов, которые представляют собой тело программы выполняемого Р-кода. Сегменты динамически загружаются в стек, а после их выполнения место освобождается. Таким образом осуществляется динамический оверлейный механизм выполнения программ. Это очень удобно, так как пользователи имеют возможность написать большие программы на микроЭВМ. Для хранения динамических данных в Р-машине используется куча. Обычно программы содержат два класса данных: динамические и статические данные. Статические данные хранятся в "памяти" (в стеке). Для хранения статических данных сегмента место резервируется в стеке перед загрузкой сегмента. Динамические данные загружаются в кучу при выполнении программы. Кроме стека и кучи Р-машина имеет внешние и внутренние регистры, описывающие состояние Р-машины (рис. 1).

    Р-машина имеет богатый набор команд. Команда содержит код команды и от нуля до четырех операндов. Длина кода команды – обычно 1 байт, но некоторые имеют длину 2 байта. Р-машина представляет собой 16-разрядную машину. Стек и куча строятся из двух байтов. Операнд команды, если он имеется, определяет 16-разрядные данные. Иногда операнд команды имеет длину 1 байт. В этом случае он загружается в 16-разрядный регистр. Р-машина PDOS построена так, чтобы часто выполняемые команды занимали меньше "памяти". Часто выполняемые команды имеют меньшую длину (1–2 байта).

    Команды и типы данных Р-машины

    Р-машина в большинстве случаев использует , тек, а действия над операндами и тип операндов определяет код команды. В Р-машине PDOS имеются следующие типы данных:

    • целые;
    • действительные;
    • логические;
    • множества;
    • массивы из байтов (вектор фиксированной длины);
    • строки (вектор переменной длины);
    • записи;
    • многомерные массивы.

    Команды делятся на семь подгрупп:

    • перемещение данных (локальные, глобальные);
    • арифметические (целые, действительные);
    • логические;
    • операции над строками (сравнение, поиск и т. д.);
    • команды работы с массивами;
    • команды вызова подпрограмм и возвращения из подпрограмм;
    • переходы.

    На рис. 2 приводится пример программы, написанной в Р-коде. Там же приведена программа, написанная на языке ассемблера для мини-ЭВМ семейства PDP-11.

    Эффективность Р-машины

    При использовании Р-машины теряется эффективность по времени, так как выполняется Р-код, а не машинный код данного процессора. Но зато мы получаем переносимость и более компактную Р-код программу. Обычно Р-код данной программы занимает меньше памяти, чем описание тех же действий на языке ассемблера данной ЭВМ (см. рис. 2). Поэтому при больших программах в конце концов Р-код выполняется быстрее, чем программа, написанная на языке ассемблера, так как благодаря своей компактности он требует меньшего оверлея. Поскольку имеются трансляторы с Р-кода на разные языки ассемблера, можно применить смешанную стратегию. Для достижения эффективности часть программы можно оптимизировать на скорость, а другую часть – на занимаемое место. Те части программы, которые являются критическими, при выполнении по времени можно транслировать с Р-кода на язык ассемблера данной ЭВМ.

    OFFSET MNEMONIC OPERANDS HEX CODE 3: SLDC 0 00   STL 2 A402 6: LDCI 9999 810F27   STL 5 A40S 11: SLDL 2 21   SLDL 5 24   LEQI   B2   FJP 30 D40E 16: LAO 6 8606   SLDL 2 21   IXA 1 D701   SLDC 1 01   STO   C4 23: SLDL 2 21   SLDC 1 01   AD1   A2   STL 2 A402 28: UJP 11 8AED 30: SLDC 0 00   STL 3 A403 33: SLDC 1 01   STL 2 A402 36: SLDL 8 27   STL 5 A405 39: SLDL 2 21   SLDL 5 24   LEQI   B2   FJP 107 D43F 44: SLDC 1 01   STL 1 A401 47: SLDL 2 21   SLDC 1 01   SBI   A3   STL 6 A406

     

    Final PDP-11 code

    for segment: 1 PASCALT   .RADIX 10 procedure: 2 PC .EQU R7 Source Object [  6461] SP .EQU R6 P-Code N-Code   MP .EQU R5 (Dec. Offsets)   BASE .EQU R3   0 000276 000007 .WORD   190,7   4         3: 0 250 :p-code NAT     1 234 :p-code NOP     2 005065 000012   CLR 10(MP) 6: 6 012765 023417 000020   MOV #9999, 16(MP) 11: 12 026565 000012 000020 L2: CMP 10(MP), 16(MP)   18 003015   BCT L1 16: 20 016501 000012   MOV 10(MP), R1   24 006301   ASL Rl   26 060301   ADD BASE, Rl   28 012761 000001 000022   MOV #1, 18(R1) 23: 34 016504 000012   MOV 10(MP), R4   38 005204   INC R4   40 010465 000012   MOV R4, 10(MP) 28: 44 000757   BR L2 30: 46 005065 000014 L1: CLR 12(MP) 33: 50 012765 000001 000012   MOV #1, 10(MP) 36: 56 016565 000026 000020   MOV 22(MP), 16(MP) 39: 62 026565 000012 000020 L6: CMP 10(MP), 16(MP)   68 003071   BCT L3 44: 70 012765 000001 000010   MOV #1, 8(MP) 47: 76 016504 000012   MOV 10(MP), R4   80 005304   DEC R4   82 010465 000022   MOV R4, 18(MP)

     

    Построение PDOS по слоям

    Операционную систему PDOS можно разделить на четыре части.

    Самый верхний, машинно-независимый уровень написан на языке Pascal. Эта часть операционной системы является выполняемой для Р-машины. Первый уровень содержит:

    • ядро операционной системы;
    • трансляторы (Pascal, Basic, Fortran-77);
    • файловую систему;
    • текстовые редакторы, связывающий загрузчик и т. д.

    Второй уровень представляет собой эмулятор Р-машины, который написан на языке ассемблера данной ЭВМ. Эта часть зависит от типа процессора, но независима от внешних устройств.

    На третьем уровне реализуется система ввода-вывода. BIOS (Basic Input-Output System) содержит программы ввода-вывода, которые вызываются эмулятором Р-машины. Эти программы написаны на языке ассемблера данной ЭВМ. Но здесь находятся только те программы, которые являются общими для всех типов внешних устройств.

    Четвертый уровень – SIOS (Simplified I/O System). Здесь на самом низком уровне находятся программы, которые зависят не только от данного процессора, но и от данного внешнего устройства.

    На рис. 3 приведены уровни PDOS. В нижней части рисунка дана таблица, где указаны характеристики разных уровней.

     

    Уровень Используемый код Независимость от консоли Независимость от внешних устройств Требуется ли переписывать - Р Нет Да Для нового терминала 1 Р Да Да Нет 2 Ассемблер Да Да Для нового ЦП 3, 4 Ассемблер Да Нет SIOS – да, BIOS – для нового ЦП

     

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

    Этапы развития PDOS

    Операционная система PDOS имеется в трех версиях:

  • PDOS I – близко к Р-2-машине;
  • PDOS II – совместно с операционной системой UCSD;
  • PDOS III – расширение PDOS с обработкой данных (индексно-последовательная файловая система на основе В-деревьев + интерфейс, подобный DBASE III).
  • PDOS имеется для следующих ЭВМ: IBM PC (8086/8088), ЯНУС (одноплатный процессор), подобный LSI-11, СМ4, СР/М-машины (Z80).

    Литература

  • Nori К. V., Ammann U. et al. The Pascal (P) Compiler: Implementation Notes, ETH Zurich Technical Report 10, Dec., 1974.
  • UCSD Pascal User's Manual (Revised), Soflech Microsystems, San Diego, CA, Feb., 1980.
  • Примечания

    1. САМАЛК – Венгерское национальное предприятие по использованию и внедрению вычислительной техники.

    Статья опубликована в сборнике "Методические материалы и документация по пакетам прикладных программ", выпуск 53, Москва, МЦНТИ, 1987 г., стр. 68.






    Рекомендуемый контент




    Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.