RT-11 ( Real-time 11 ) — это снятая с производства небольшая, бюджетная, [2] однопользовательская операционная система реального времени для всей линейки 16-разрядных компьютеров PDP-11 компании Digital Equipment Corporation . RT-11 была впервые реализована в 1970 году. Она широко использовалась для систем вычислений реального времени , управления процессами и сбора данных на всех PDP-11. Она также использовалась для недорогих вычислений общего назначения. [2]
RT-11 был написан на языке ассемблера . Интенсивное использование функций условной сборки и макропрограммирования ассемблера MACRO-11 обеспечивало значительную степень конфигурируемости и позволяло программистам указывать высокоуровневые инструкции, которые в противном случае не были бы предусмотрены в машинном коде. Дистрибутивы RT-11 включали исходный код операционной системы и ее драйверов устройств со всеми удаленными комментариями и программу под названием «SYSGEN», которая собирала операционную систему и драйверы в соответствии с указанной пользователем конфигурацией. Документация разработчика включала листинг ядра , включающий комментарии.
В RT-11 драйверы устройств [3] [4] были загружаемыми, за исключением того, что до версии V4.0 драйвер устройства для системного устройства (загрузочного устройства) встраивался в ядро во время конфигурации. Поскольку RT-11 обычно использовался для управления устройствами и сбора данных, разработчикам было свойственно писать или улучшать драйверы устройств. DEC поощряла такую разработку драйверов, делая свои аппаратные подсистемы (от структуры шины до кода) открытыми, документируя внутреннее устройство операционной системы, поощряя сторонних поставщиков оборудования и программного обеспечения и способствуя развитию Общества пользователей цифровых компьютеров .
Системы RT-11 не поддерживали вытесняющую многозадачность , но большинство версий могли запускать несколько приложений одновременно. Все варианты мониторов предоставляли фоновое задание . Мониторы FB, XM и ZM также предоставляли задание переднего плана и шесть системных заданий , если они были выбраны с помощью программы генерации системы SYSGEN . Эти задачи имели фиксированные приоритеты , с фоновым заданием самым низким и заданием переднего плана самым высоким. Можно было переключаться между заданиями из пользовательского интерфейса системной консоли , и SYSGEN мог генерировать монитор, который предоставлял одно фоновое задание (варианты SB, XB и ZB). [2] Термины передний план и фон нелогичны; фоновое задание обычно было интерпретатором командной строки пользователя ; задание переднего плана могло выполнять что-то вроде неинтерактивного сбора данных.
Пользователи обычно управляли RT-11 через печатающий терминал или видеотерминал , первоначально через выбираемую ремешком токовую петлю (для обычных телетайпов) или через интерфейс RS-232 (позже также RS-422 ) на одной из плат ЦП; DEC также поддерживала графические устройства отображения VT11 и VS60 ( векторные графические терминалы с графическим генератором символов для отображения текста и световым пером для графического ввода). Фаворитом сторонних производителей было семейство Tektronix 4010 .
Keyboard Monitor (KMON) интерпретировал команды, введенные пользователем, и вызывал различные утилиты с формами командного интерпретатора (CSI) команд. Командный язык RT-11 имел много функций (таких как команды и имена устройств), которые можно было найти позже в линейке операционных систем DOS , которые в значительной степени заимствовали из RT-11. Форма CSI ожидала входные и выходные имена файлов и параметры («переключатели» в RT-11) в точном порядке и синтаксисе. Переключатели командной строки были разделены косой чертой ( /
), а не тире ( -
), используемым в операционных системах типа Unix . Все команды имели полную форму и краткую, до которой они могли быть сокращены. Например, команда RENAME могла быть сокращена до REN .
Пакетные файлы и пакетный процессор могли использоваться для выдачи серии команд с некоторым элементарным потоком управления . Пакетные файлы имели расширение .BAT.
В более поздних выпусках RT-11 можно было вызывать ряд команд с помощью командного файла .COM, но они выполнялись бы последовательно без управления потоком. Еще позже стало возможным выполнять ряд команд с большим контролем с помощью Indirect Command File Processor (IND), который принимал файлы управления .CMD в качестве входных данных.
Файлы с расширением .SAV были своего рода исполняемыми. Они были известны как «файлы сохранения», поскольку команда RT-11 SAVE могла использоваться для сохранения содержимого памяти в файл на диске, который можно было загрузить и выполнить позднее, что позволяло сохранять любой сеанс.
Команда SAVE, наряду с GET, START , REENTER, EXAMINE и DEPOSIT, были основными командами, реализованными в KMON. Некоторые команды и утилиты были позже заимствованы в линейке операционных систем DOS . К этим командам относятся DIR , COPY , RENAME , ASSIGN , CLS , DELETE , TYPE , HELP и другие. Команда FORMAT использовалась для форматирования физического диска, хотя она не могла создавать файловую систему, для чего использовалась команда INIT (аналог команды DOS FORMAT /Q). Большинство команд поддерживали использование подстановочных знаков в именах файлов.
Имена физических устройств были указаны в форме 'dd{n}:', где 'dd' было двухбуквенным буквенным именем устройства, а необязательный 'n' был номером устройства (0–7). Если номер устройства был опущен, предполагалось устройство 0. Например, TT: относилось к консольному терминалу, LP: (или LP0:) относилось к параллельному линейному принтеру, а DX0:, DY1:, DL4: относились к дисковым томам (RX01 unit 0, RX02 unit 1, RL01 или RL02 unit 4 соответственно). Имена логических устройств состояли из 1–3 буквенно-цифровых символов и использовались вместо имени физического устройства. Это достигалось с помощью ASSIGN
команды. Например, можно было выдать ASSIGN DL0 ABC
, которая заставит все будущие ссылки на 'ABC:' сопоставляться с 'DL0:'. Зарезервированное логическое имя DK: относилось к текущему устройству по умолчанию. Если устройство не было включено в спецификацию файла, предполагалось DK:. Зарезервированное логическое имя SY: относится к системному устройству (устройству, с которого была загружена система).
Более поздние версии RT-11 позволяли указывать до 64 единиц (0–77 восьмеричных) для определенных устройств, но имя устройства по-прежнему ограничивалось тремя буквенно-цифровыми символами. Эта функция была включена через выбор SYSGEN и применялась только к обработчикам устройств DU и LD. В этих двух случаях форма имени устройства стала 'dnn:', где 'd' было 'D' для устройства DU и 'L' для устройства LD, а 'nn' было 00–77 (восьмеричное).
RT-11 распространялся с утилитами для выполнения множества действий. Утилиты DIR , DUP , PIP и FORMAT были для управления томами дисков. TECO , EDIT и визуальные редакторы KED (для DEC VT100 ) и K52 (для DEC VT52 ) использовались для создания и редактирования исходных файлов и файлов данных. MACRO , LINK и LIBR были для сборки исполняемых файлов. ODT , VDT и устройство SD использовались для отладки программ. Версия Runoff [5] от DEC была для создания документов. Наконец, VTCOM использовался для подключения и использования (или передачи файлов на и с) другой компьютерной системы по телефону через модем.
Система была достаточно полной, чтобы справиться со многими современными задачами персональных компьютеров. Программное обеспечение для повышения производительности, такое как LEX-11, пакет обработки текста и электронная таблица от Saturn Software, используемое в других операционных системах PDP-11, также работало на RT-11. [6] Большое количество бесплатного программного обеспечения для RT-11, предоставленного пользователями, было доступно в Digital Equipment Computer Users Society (DECUS), включая реализацию C. Хотя инструменты для разработки и отладки программ на языке ассемблера были предоставлены, другие языки, включая C, Fortran , Pascal , [7] и несколько версий BASIC были доступны от DEC в качестве «многоуровневых продуктов» за дополнительную плату. Версии этих и других языков программирования также были доступны из других сторонних источников. Можно даже объединить машины RT-11 в сеть с помощью DECNET , Интернета и протоколов, разработанных другими сторонними источниками.
Операционная система RT-11 могла загружаться и выполнять полезную работу на машине, состоящей из двух 8-дюймовых 250-килобайтных дискет и 56-килобайтной памяти, и могла поддерживать 8 терминалов. Другие варианты загрузки включают съемный жесткий диск RK05 2,5 МБ или магнитную ленту . Дистрибутивы были доступны предустановленными или на перфоленте , магнитной ленте, картриджной ленте или дискете. Минимальная, но полная система, поддерживающая одного пользователя в реальном времени, могла работать на одной дискете и в 8-килобайтных 16-битных словах (16 КБ) оперативной памяти, включая пользовательские программы. Этому способствовала поддержка подкачки и наложения. Чтобы реализовать работу на такой небольшой системе памяти, пользовательский интерфейс команд клавиатуры выгружался во время выполнения программы пользователя, а затем выгружался в память по завершении программы. Система поддерживала часы реального времени , печатающий терминал, векторный графический блок VT11, 16-канальный АЦП 100 кГц с 2-канальным ЦАП, последовательный порт 9600 бод, 16-битные двунаправленные платы и т. д.
RT-11 реализовал простую и быструю файловую систему , использующую шестисимвольные имена файлов с трехсимвольными расширениями (6.3), закодированными в RADIX-50 , что упаковывало эти девять символов всего в три 16-битных слова (шесть байт). Это привело к тому, что допустимыми символами имени файла стали 'A'-'Z', 'a'-'z', принудительно переведенные в верхний регистр, '0'-'9', '$', '%', '*'. Имена файлов могли быть снабжены префиксом в виде имени устройства, чтобы указать устройство, отличное от устройства по умолчанию DK:, также закодированного в RADIX-50.
Все файлы были непрерывными, то есть каждый файл занимал последовательные блоки (минимально адресуемая единица дискового хранилища, 512 байт) на диске. Это означало, что весь файл мог быть прочитан (или записан) очень быстро. Побочным эффектом этой структуры файловой системы было то, что по мере того, как файлы создавались и удалялись на томе с течением времени, неиспользуемые блоки диска, скорее всего, не оставались непрерывными , что могло стать ограничивающим фактором при создании больших файлов; средством было периодическое «сжатие» (или «выдавливание») диска для объединения неиспользуемых частей. [8] [9]
Каждый том имеет только один каталог, который был предварительно выделен в начале тома. Каталог состоит из массива записей, по одной на файл или нераспределенное пространство. Каждая запись каталога представляет собой 8 (или более) 16-битных слов, хотя опция sysgen допускает дополнительное хранилище, специфичное для приложения. [10]
Многие программы RT-11 (те, которым не требовались специализированные периферийные устройства или прямой доступ к оборудованию) могли быть напрямую выполнены с использованием RT=11 RTS ( Run-time system ) системы разделения времени RSTS/E или с помощью RTEM (RT Emulator) на различных версиях RSX-11 и VMS .
Реализация DCL для RT-11 повысила его совместимость с другими операционными системами DEC. Хотя каждая операционная система имела команды и опции, которые были уникальны для этой операционной системы, было несколько команд и опций команд, которые были общими.
DEC также продавала RSX-11 , многопользовательскую многозадачную операционную систему с функциями реального времени, и RSTS/E (первоначально называвшуюся RSTS-11) многопользовательскую систему с разделением времени, но RT-11 оставалась операционной системой выбора для систем сбора данных , где требовался ответ в реальном времени. Операционная система Unix также стала популярной, но ей не хватало функций реального времени и чрезвычайно малого размера RT-11.
RT-11 работал на всех членах семейства DEC PDP-11, как на базе Q-Bus , так и на базе Unibus , от PDP-11/05 (его первая цель, в 1970 году (обратите внимание, что PDP-11/05 был выпущен в 1972 году, так что это, вероятно, был PDP-11/20)), до финальных реализаций PDP-11 (PDP-11/93 и /94). Кроме того, он работал на Professional Series и системах PDT-11 "Programmed Data Terminal", также от DEC. Поскольку архитектура PDP-11 была реализована в заменяющих продуктах другими компаниями (например, M100 и семейство от Mentec ), или в качестве реверс-инжиниринговых клонов в других странах (например, DVK из Советского Союза), RT-11 работает и на этих машинах.
Добавление поддержки драйверов для периферийных устройств, таких как плоттер CalComp , [11] обычно включало копирование файлов и не требовало SYSGEN. [2]
Fuzzball , программное обеспечение маршрутизации для интернет-протоколов , было способно запускать программы RT-11. [12]
HAMMONDsoftware распространяла ряд операционных систем, совместимых с RT-11, включая STAReleven, раннюю многокомпьютерную систему, и SHAREplus, многопроцессную/многопользовательскую реализацию RT-11, которая заимствовала некоторые архитектурные концепции из операционной системы VAX/VMS . Для работы требовались драйверы устройств RT-11. Прозрачный доступ устройств к другим PDP-11 и VAX/VMS поддерживался с помощью сетевой опции. Также была доступна ограниченная совместимость с приложениями RSX-11 . У SHAREplus была самая сильная пользовательская база в Европе.
TSX-11 [ 13], разработанный S&H Computing, был многопользовательской, многопроцессорной реализацией RT-11. Единственное, чего он не делал, так это не управлял процессом загрузки, поэтому любая машина TSX-Plus должна была сначала загрузить RT-11 перед запуском TSX-Plus в качестве пользовательской программы. После запуска TSX-Plus он полностью брал на себя управление машиной от RT-11. Он обеспечивал настоящую защиту памяти для пользователей от других пользователей, предоставлял учетные записи пользователей и поддерживал разделение учетных записей на дисковых томах, а также реализовывал надмножество запрограммированных запросов RT-11 EMT.
S&H написали оригинальный TSX, потому что «трата $25K на компьютер, который мог поддерживать только одного пользователя, раздражала [основателя Гарри Сандерса]»; результатом стал первый TSX для четырех пользователей в 1976 году. [14] TSX-Plus (выпущенный в 1980 году) был преемником TSX, выпущенного в 1976 году. [14] Система была популярна в 1980-х годах. Программы RT-11 обычно запускались, без изменений, под TSX-Plus и, по сути, большинство утилит RT-11 использовались «как есть» под TSX-Plus. Драйверы устройств обычно требовали лишь незначительных изменений.
В зависимости от модели PDP-11 и объема памяти система могла поддерживать минимум 12 пользователей [14] (14-18 пользователей на 2 Мб 11/73, в зависимости от рабочей нагрузки). [15] Последняя версия TSX-Plus имела поддержку TCP/IP .
Пользователи могли выбирать из вариантов с различными уровнями поддержки многозадачности , объемом памяти и раздельным адресным пространством I & D (инструкции и данные):
На базе RT-11 было продано несколько специализированных систем PDP-11:
В СССР было создано несколько клонов РТ-11:
Сжатие тома с помощью команды SQUEEZE монитора
Команда SQUEEZE объединяет в одной области все неиспользуемые ...
эффективное, универсальное разделение времени для 20 пользователей 23.11 и 34.11 на основе ...