Введение
OS/8 — основная операционная система, используемая в миникомпьютере DEC PDP 8. Операционные системы PDP 8, предшествовавшие OS/8, включают: R L Monitor, также известный как MS/8, PS/8, требующий всего 4K памяти, и PDP 8 4K Disk Monitor System. PS/8 ("Programming System/8"), требующий 8K памяти, в 1971 году стала OS/8. Другими операционными системами DEC являются OS/78, OS/278 и OS/12. Последняя представляет собой практически идентичную версию OS/8 и работает на компьютере PDP 12 производства Digital. Digital выпустила образы OS/8 для некоммерческого использования, которые можно эмулировать с помощью SIMH.
OS/8 is the primary operating system used on the Digital Equipment Corporation's PDP 8 minicomputer. PDP 8 operating systems which precede OS/8 include:
R L Monitor, also referred to as MS/8. P?S/8, requiring only 4K of memory. PDP 8 4K Disk Monitor System
PS/8 ("Programming System/8"), requiring 8K. This is what became OS/8 in 1971. Other/related DEC operating systems are OS/78, OS/278, and OS/12. The latter is a virtually identical version of OS/8, and runs on Digital's PDP 12 computer. Digital released OS/8 images for non commercial purposes which can be emulated through SIMH.
Обзор
OS/8 предоставляет простую операционную среду, соизмеримую по сложности и масштабу с компьютерами PDP 8, на которых она работала. Ввод-вывод поддерживается серией поставляемых драйверов, использующих методы опроса (а не прерываний). Драйверы устройств должны быть тщательно разработаны, поскольку они могут занимать лишь одну или две страницы памяти объемом 128 12-битных слов и должны быть способны работать на любой странице в поле 0. Это часто требует значительной изобретательности, например, использования инструкции OPR (7XXX) для небольших отрицательных констант. Постоянно занимаемый объем памяти OS/8 составляет всего 256 слов: 128 слов в верхней части поля 0 и 128 слов в верхней части поля 1. Остальная часть операционной системы (USR, "User Service Routines") прозрачно загружается в память и выгружается из нее по мере необходимости (по отношению к пользовательской программе). Эта резидентная часть OS/8 занимает первые 14K слов (56 блоков) устройства SYS:, включая область подкачки. Содержимое памяти, не занятое операционной системой, сохраняется между некоторыми основными пользовательскими командами. Это используется в процессе создания исполняемых программ: например, программа на языке ассемблера сначала компилируется в бинарный файл BN. Затем один или несколько файлов BN загружаются в память с помощью команды LOAD (ABSLDR). После этого загруженную программу можно выполнить с помощью команды START, отладить с помощью ODT или сохранить в файл SV, который затем можно извлечь с помощью команды GET или немедленно выполнить с помощью команд R или RUN. Информация о текущей загруженной программе хранится в CCB (Core Control Block), расположенном на устройстве SYS:. Эта информация включает в себя, какие части памяти используются программой (какие части необходимо сохранить) и начальный адрес программы. Эта концепция сохранения памяти, связанной с пользователем или задачей, также встречается в других операционных системах DEC, включая TOPS 10 для PDP 10, где такая память известна как контекст. OS/8 может загружаться с жесткого диска и отображать командную строку менее чем за полсекунды.
Конкретный язык команд
Ранние версии OS/8 имеют очень примитивный интерпретатор командной строки с небольшим количеством основных команд: , , , , , . С версией 3 они добавляют более сложный надстройку, называемую CCL (Concise Command Language), которая реализует гораздо больше команд. CCL в OS/8 напрямую основана на CCL, используемой в системах PDP 10 от Digital под управлением TOPS 10. Фактически, большая часть программной системы OS/8 преднамеренно разработана для максимально точного воспроизведения операционной среды TOPS 10. (Командный язык CCL используется на компьютерах PDP 11 под управлением RT 11, RSX 11 и RSTS/E, обеспечивая схожую пользовательскую среду во всех трех архитектурах: PDP 8, PDP 10 и PDP 11.) Базовая ОС и CCL реализуют множество довольно сложных команд, многие из которых до сих пор отсутствуют в современных командных языках, включая MS DOS, Windows и Unix-подобные операционные системы. Например, команда автоматически находит подходящий компилятор для заданного исходного файла и запускает цикл компиляции, сборки и линковки. Команды и позволяют использовать в программе логические имена устройств вместо физических имен (как это необходимо в MS DOS). Например, программа может записывать на устройство , и при начальном "" файл будет создан на физическом устройстве RXA2 (второй дисковод). VAX/VMS и операционная система AmigaOS (а также другие ОС, построенные на базе TRIPOS) в значительной степени используют эту функцию. Команда способна настраивать множество системных параметров, изменяя области в бинарном коде системы. Одна из них, команда в OS 78, – , которая повторно включает команды MONITOR, не входящие в состав OS 78. Команда может переконфигурировать ОС "на лету", даже добавляя драйверы устройств, часто без необходимости перезагрузки ОС.
ASCII (код)
Существует две системы обработки текста ASCII. Файлы ASCII хранятся как три 8-битных символа на пару 12-битных слов. Первые два символа (обозначенные битами a0–a7 и b0–b7 ниже) хранятся целиком в соответствующих словах, а третий символ (биты c0–c7) хранится с половиной своих битов в слове 1 и другой половиной – в слове 2. Недостаточность трехбитного поля года, способного хранить только восемь лет, была выявлена при разработке COS 310.
Основные
В качестве опций доступны однопользовательская версия BASIC и две многопользовательские версии BASIC. Однопользовательский BASIC использует несколько накладок для обеспечения полной функциональности языка; когда OS/8 загружается с DECtape, заметная задержка возникала каждый раз, когда BASIC требовалось переключать накладки, поскольку их необходимо было считывать с ленты. Многопользовательские версии BASIC (EDU20 и EDU25) отличаются только тем, поддерживают ли они устройства с блочной заменой (DECtape или диск). Из-за финансовых ограничений многие PDP 8 имели бумажные ленточные считыватели в качестве единственного устройства ввода-вывода для массового хранения. EDU20 загружается с бумажной ленты и может осуществлять вывод на бумажную ленту, если машина оснащена такой, в то время как EDU25 понимает структуру файловой системы, может загружаться с DECtape или диска и создавать файлы на DECtape или диске. Обе версии могут одновременно запускать несколько программ BASIC, используя примитивный планировщик задач, который осуществляет циклическое переключение между подключенными терминалами. Память всегда ограничена, поскольку PDP 8 использует оперативную память, которая была чрезвычайно дорогой по сравнению с технологией RAM. В 8K 12-битных слов EDU20 может поддерживать до 4 терминалов одновременно, хотя рекомендовалось больше памяти. EDU25 требует дополнительный блок памяти объемом 4K (для минимума 12K), поскольку код содержит драйвер дискового устройства и обработчик файловой системы. В процессе работы EDU20 и EDU25 являются самодостаточными программами, которые не используют системные вызовы OS/8. Сразу после вызова из командного интерпретатора OS/8 они перезаписывают всю резидентную часть OS/8 – все 256 слов. При запуске EDU25 сохраняет содержимое памяти на DECtape или диск и восстанавливает его при завершении работы. Однако EDU20 не может этого делать, поскольку он предназначен для аппаратных конфигураций, не имеющих устройств с блочной заменой.
Фортран
В дополнение к свободному компилятору FORTRAN II, также доступен достаточно полный компилятор FORTRAN IV. Этот компилятор генерирует код для опционального процессора с плавающей точкой FPP 8, который фактически является отдельным центральным процессором, разделяющим память только с процессором PDP 8. При установленной опции FPP 8, код времени выполнения FORTRAN обнаруживает её и использует FPP 8 для выполнения кода основной программы, а процессор PDP 8 функционирует как процессор ввода-вывода. Если FPP 8 отсутствует, код времени выполнения вместо этого вызывает интерпретатор FPP 8, работающий на процессоре PDP 8, что приводит к снижению скорости выполнения программы. Этот компилятор FORTRAN IV версии 1 содержит интересную ошибку: циклы DO считались некорректно – циклы DO выполнялись последовательностью 1, 2, 3, 5, 6, 7 (пропуская 4). Для исправления этой ошибки было оперативно выпущено исправление.