Введение
IBM mainframe операционная система, разработанная для использования с менее мощными машинами, а также семейство операционных систем для компьютеров IBM System/360. Дисковая операционная система/360, также DOS/360, или просто DOS, – это первая операционная система в линейке для IBM System/360, System/370 и последующих мейнфреймов. Она была анонсирована IBM в последний день 1964 года и впервые поставлена в июне 1966 года. В свое время DOS/360 была самой распространенной операционной системой в мире.
the family of operating systems for IBM System/360 computers
Disk Operating System/360, also DOS/360, or simply DOS, is the discontinued first member of a sequence of operating systems for IBM System/360, System/370 and later mainframes. It was announced by IBM on the last day of 1964, and it was first delivered in June 1966. In its time, DOS/360 was the most widely used operating system in the world.
BOS/360
Базовая операционная система (BOS) была ранней версией DOS и TOS, способной обеспечивать работоспособность системы, оснащенной всего 8 КБ оперативной памяти и одним дисководом 2311.
TOS/360
TOS/360 (Tape Operating System/360, не DOS в строгом смысле этого слова и не так называемая) была операционной системой IBM для System/360, использовавшейся в начале 1965 года для поддержки System/360 Model 30 и подобных платформ. TOS, как следует из названия "Tape", требовала наличия магнитной ленточной памяти. Она имела общую кодовую базу и часть документации с DOS/360 от IBM. TOS прошла через 14 релизов и была снята с производства, когда диски, такие как IBM 2311 и IBM 2314, стали более доступными по цене во времена System/360, в то время как на IBM 7090 они были дорогостоящей роскошью.
DOS/360
DOS/360 была основной операционной системой для большинства небольших и средних установок С/360.
DOS/VS
DOS/VS был выпущен в 1972 году. Первый выпуск DOS/VS получил номер "Release 28", чтобы указать на постепенное улучшение по сравнению с DOS/360. Он добавил поддержку виртуальной памяти для нового оборудования серии System/370. В нем использовалась таблица фиксированного размера страниц, которая отображала единое адресное пространство объемом до 16 мегабайт для всех разделов в совокупности. DOS/VS увеличил количество разделов (отдельных одновременно выполняемых программ) с трех (Background, Foreground 1 и Foreground 2) до пяти (BG и F1–F4) и разрешал общее количество подзадач в системе – пятнадцать. DOS/VS был заменен DOS/VSE, а затем z/VSE.
DOS/VSE
DOS/VSE был представлен в 1979 году как «расширенная» версия DOS/VS для поддержки новых процессоров 4300. Системы 4300 включали функцию ECPS:VSE, обеспечивавшую единое адресное пространство для процессора и каналов ввода-вывода. DOS/VSE поддерживал ECPS:VSE, но также мог работать на System/370 и без этой функции. VSE была последней бесплатной версией DOS.
ВСЭ/АФ
VSE/Advanced Functions (VSE/AF) — это продукт, который расширяет поддержку устройств и добавляет новые функции в DOS/VSE. Многие пользователи устанавливали VSE/AF, используя такие продукты, как VSE System Installation Productivity Option/Extended (VSE System IPO/E), который включает в себя DOS/VSE, VSE/AF и различные другие продукты.
SSX/VSE
SSX/VSE ("Small System Executive") была попыткой IBM упростить приобретение и установку VSE, предоставив предварительно сгенерированную систему, включающую операционную систему и наиболее востребованные продукты. SSX был выпущен в 1982 году и впоследствии заменен VSE/SP. IBM продавала SSX как комплект из 14 компонентов (Advanced Functions/VSE, VSE/POWER, ACF/VTAME, VSE/VSAM, CICS/DOS/VS, DOS/VS, Sort/Merge, VSE/ICCF, VSE/OCCF, VSE/IPCS, DOS/COBOL, Back Up/Restore, Space Management, VSE/DITTO), и изначально соглашалась предлагать отдельные продукты только посредством RPQ. Однако, под давлением ISV, утверждавших, что комплектация нарушает антимонопольное законодательство, IBM позже согласилась добавить эти продукты по отдельности в свой прайс-лист.
ВСЭ/СП
В 1986 году IBM выпустила VSE/SP ("Системный продукт") одновременно с анонсом процессоров 9370. VSE/SP заменил SSX/VSE и поставлялся в комплекте с наиболее востребованными программными продуктами VSE, такими как VSE/AF, ACF/VTAM, CICS и POWER/VS. Несмотря на просьбы пользователей предоставить версию XA (31 бит), VSE/SP поддерживал только 24-битные адреса.
VSE/ESA
VSE/ESA была 31-битной версией DOS/VSE, выпущенной в 1990 году с поддержкой до 384 МБ оперативной памяти. Она обеспечивала до двенадцати статических разделов и позволяла запускать VSE/POWER и ACF/VTAM в отдельных адресных пространствах. В ней была представлена новая функция – динамические разделы, позволявшая выполнять до 150 одновременных заданий, каждое в своем собственном адресном пространстве. Версия 1 могла работать как в режиме ESA, так и в режиме 370, при этом режим ESA также поддерживал аппаратное обеспечение XA с некоторыми ограничениями. Версия 2 (1995) поддерживала только режим ESA и аппаратное обеспечение ESA. Версия 2 добавила поддержку многопроцессорности через новый Turbo Dispatcher, который позволял различным разделам одновременно выполняться на разных процессорах. Раздел может выполняться только на одном процессоре одновременно, что в основном ограничивает многопроцессорность многозадачностью. Теоретически поддерживается до десяти процессоров ("допускается"), но эффективно используются до четырех. Эти ограничения сохраняются и в последней версии z/VSE.
z/ВСЭ
IBM выпустила z/VSE 3.1 в 2005 году. Это изменение в наименовании отражало новый бренд "System z" для линейки мэйнфреймов IBM, но не являлось фундаментальным изменением архитектуры по сравнению с предшествующей VSE/ESA 2.7. В частности, она не поддерживала новую 64-разрядную архитектуру z/Architecture, работая только в 31-разрядном режиме даже на 64-разрядных машинах. z/VSE 4.1, выпущенная в 2007 году, представила поддержку 64-разрядной реальной адресации с объемом памяти до 8 ГБ. Однако, хотя некоторые части супервизора работают в 64-разрядном режиме, она предоставляет только 31-разрядные виртуальные адресные пространства для приложений пользовательского режима. По оценкам на 2011 год, количество установок, использующих z/VSE, составляло около 4000.
Требования к оборудованию
DOS/360 требовал процессор System/360 (модель 25 и выше) со стандартным набором инструкций (набор инструкций с десятичной и плавающей точкой был необязательным). Минимальный объем памяти составлял 16 КБ; защита хранилища требовалась только при использовании многопрограммного режима. Необходима была клавиатура принтера модели 1052 Model 7, селекторный или мультиплексорный канал, а также как минимум один дисковый накопитель – изначально 2311 объемом 7,25 МБ. Обычно включались считыватель карт, перфоратор и строчный принтер, но вместо магнитных ленточных накопителей можно было использовать дисковые. Для дальнейшего снижения использования памяти, супервизор использовал наложения, называемые транзиентами, которые загружались в одну из двух зарезервированных областей транзиентов по мере необходимости. Физические транзиенты загружались в 556-байтовую область A Transient для обработки аппаратных ошибок (ERP), записи данных об ошибках (OBR/MDR) в IJSYSRC и выдачи сообщений об ошибках. Все имена модулей A Transient начинались с , а логические транзиенты загружались в 1200-байтовую область B Transient для предоставления общих программных сервисов, таких как OPEN и CLOSE для LIOCS. Все имена модулей B Transient начинались с . Использование префиксов и обеспечивало быструю загрузку транзиентов, поскольку их имена хранились в каталоге первыми. DOS/VS добавил обработчики Machine Check и Channel Check, которые представляли собой еще один набор транзиентов, все начинающиеся с и выполняющиеся в области Recovery Transient. Это было сделано в рамках улучшений надежности, доступности и ремонтопригодности (RAS) для System/370. До этого дополнения, проверки машины приводили к завершению работы программы, а проверки канала – к завершению работы программы, обращающейся к устройству, в момент возникновения ошибки.
The use of and prefixes ensured rapid loading of transients because their names were stored first in the directory. DOS/VS added Machine Check and Channel Check Handlers, which were another set of transients all starting with and executing in the Recovery Transient area. This was done as part of the reliability, availability, and serviceability (RAS) enhancements for the System/370. Before this addition, machine checks caused termination of the program running and channel checks caused termination of the program accessing the device, at the time of the error.
Мультипрограммирование
Как и OS/360, первоначальные версии DOS могли запускать только одну программу за раз. Позднейшие версии "настоящего" DOS могли одновременно запускать до трех программ в отдельных разделах памяти, поддерживаемых теми же функциями аппаратной защиты памяти, что и в более масштабируемой операционной системе OS/360. Эти разделы идентифицировались как BG (фоновый), F1 (передний план 1) и F2 (передний план 2). Мультипрограммирование было необязательной функцией DOS/360, выбираемой при генерации системы. Более поздняя опция SYSGEN позволяла пакетный режим работы выполнять в любом из разделов FG. В противном случае программы переднего плана приходилось запускать вручную оператором компьютера. DOS/VS допускал до семи одновременных программ, хотя пять или шесть было более распространенным числом из-за меньшего масштаба аппаратного обеспечения, обычно используемого для систем DOS. И DOS, и DOS/VS позволяли задавать количество разделов при IPL (Initial Program Load) – термин IBM для начальной загрузки.
Библиотеки программ
Исполняемые программы хранились в библиотеке образов ядра. Во время работы DOS не мог освободить место, поскольку программы удалялись или заменялись новыми версиями. Когда библиотека образов ядра заполнялась, её приходилось сжимать с помощью специальной программы, что могло приостанавливать работу над проектами до завершения сжатия. Многие организации просто блокировали изменения на день, сжимали CIL в автономном режиме и загружали новую библиотеку образов ядра в начале рабочего дня. Также поддерживались перемещаемые библиотеки для компоновки объектных программ и библиотеки исходного кода для макросов ассемблера и включаемых файлов. Установки могли определять дополнительные собственные перемещаемые и библиотеки исходного кода на других дисках.
Телекоммуникации
DOS/360 предлагал метод базового доступа к телекоммуникациям (BTAM) и метод доступа к телекоммуникациям с очередью (QTAM). BTAM был примитивным и сложным в использовании по современным меркам, но позволял взаимодействовать практически с любым типом терминала, что было значительным преимуществом в эпоху, когда стандартизация протоколов связи была минимальной. Простота его API также облегчала подключение внешних коммуникационных процессоров, что способствовало использованию машин DOS/360 в качестве узлов в многоуровневых сетях крупных организаций. В отличие от этого, пользователям QTAM не требовалось глубоких знаний об отдельных устройствах, поскольку QTAM работал на логическом уровне, используя макросы OPEN/CLOSE/GET/PUT.
Контроль работы
Все операторные команды DOS начинались с "" в колонках 1 и 2 карточки, за исключением команды "end of job", которая была "", "end of data" – "", и комментариев – "". (В последующем описании символ "" представляет собой один пробел.) Команда // JOB указывает "начало информации управления для задания". Формат: // JOB <имя_задания> <комментарии>. <имя_задания> должно состоять от одного до восьми буквенно-цифровых символов для идентификации задания. Комментарии игнорируются. Команда // EXEC указывает программу, которая должна быть выполнена как шаг задания. "Все операторные команды, необходимые для выполнения, должны быть обработаны" до чтения команды // EXEC. Формат: // EXEC <программа>. Команда // PAUSE "может использоваться для обеспечения действий оператора между шагами задания". Формат: // PAUSE <комментарий>. Комментарий используется для передачи сообщения оператору. Команда может использоваться для отображения сообщения оператору. Формат: Команда "end of data" отмечает конец данных во входном потоке. Формат: /*. Любые данные в команде после пробела игнорируются. Команда "end of job" отмечает конец задания и может указывать на необходимость сброса данных, если задание завершилось с ошибкой. Формат: /&. Любые данные в команде после пробела игнорируются. Команда // OPTION задает значения системных опций, применимых к данному заданию. Формат: // OPTION <опция1>[,<опция2>]. Команда // ASSGN "используется для назначения логического устройства ввода/вывода физическому устройству". Формат: // ASSGN SYSxxx,<устройство>[,<опция_ленты>]. SYSxxx указывает логическую единицу, например, SYS001 или SYSIPT. <устройство> может быть "X'cuu'" для указания физического устройства (канал и блок), "IGN" для игнорирования или "UA" для неназначенного устройства. <опция_ленты> указывает настройки режима ленты, такие как плотность, четность и т.д., или "ALT" для указания альтернативного устройства. Команда // RESET сбрасывает указанные назначения устройств ввода/вывода к их постоянным значениям. Формат: // RESET <опция>. <опция> может быть "SYS" для сброса всех назначений системных логических единиц, "PROG" для сброса всех назначений программиста, "ALL" для сброса всех назначений или "SYSxxx" для сброса назначения для логической единицы "SYSxxx", например, SYS002. Команда // LISTIO инструктирует систему распечатать список всех указанных назначений устройств ввода/вывода, действующих в данный момент. Формат: // LISTIO <опция>. <опция> может быть "SYS" для перечисления всех системных назначений, "PROG", "F1" или "F2" для перечисления всех назначений для фонового или указанного переднего плана, "ALL", "SYSxxx", "X'cuu'", "UNITS" для перечисления всех назначенных единиц, "UA" для перечисления всех неназначенных единиц или "DOWN" для перечисления всех единиц, помеченных как неработоспособные. Команда // MTC выдает команду на магнитную ленту. Формат: // MTC <код_операции>,SYSxxx[,<nn>]. <код_операции> – это функция, такая как "FSF" для перемещения на один файл вперед или "REW" для перемотки ленты. <nn> – число, которое может указывать количество раз, которое операция должна быть выполнена, например, перемещение на два файла вперед. Команда // VOL предоставляет информацию о метке дискового или ленточного тома для стандартной проверки меток. Формат: // VOL SYSxxx,<том>. DOS первоначально предоставлял команду // VOL для информации о метке ленты и команды // ASSGN и // RESET для информации о метке и объеме диска. По крайней мере, с 1968 года команда // VOL была заменена командами // ASSGN и команда // RESET – командами // ASSGN. Эти команды использовали множество позиционных параметров и имели довольно высокую плотность информации.
The statement "can be used to allow for operator action between job steps." The format is // PAUSE <comment>. The comment is used to provide a message to the operator. The statement may be used to display a message to the operator. The format is The end of data statement marks the end of data in the input stream. The format is /*. Any data on the statement following the blank is ignored. The end of job statement marks the end of a job, and may indicate the end of data to be flushed if the job terminates abnormally. The format is /&. Any data on the statement following the blank is ignored. The statement specifies values of system options that apply to this job. The format is // OPTION <option1>[,<option2> ]. The statement "is used to assign a logical I/O unit to a physical device." The format is // ASSGN SYSxxx,<device>[,<tape option>]. SYSxxx indicates a logical unit such as SYS001 or SYSIPT. is either "X'cuu'" to indicate a physical device (channel and unit), "IGN" for ignore, or "UA" for unassigned. specifies either tape mode settings such as density, parity, etc., or "ALT" to indicate an alternate device. The statement resets specified I/O unit assignments to their permanent values. The format is // RESET <option>. may be "SYS" to reset all system logical unit assignments, "PROG" to reset all programmer assignments, "ALL" to reset all assignments, or "SYSxxx" to reset the assignment for the logical unit "SYSxxx", for example SYS002. The statement instructs the system to print a listing of all specified I/O assignments currently in effect. The format is // LISTIO <option>. is "SYS" to list all system assignments, "PROG", "F1", or "F2" to list all assignments for the background or specified foreground partition, "ALL", "SYSxxx", "X'cuu'", "UNITS" to list all assigned units, 'UA" to list all unassigned units, or "DOWN" to list all units marked as inoperative. The statement issues command to a magnetic tape unit. The format is // MTC <opcode>,SYSxxx[,<nn>]. is a function such as "FSF" to forward space one file or "REW" to rewind the tape. is a number that can specify the number of times the operation is to be performed, such as forward space two files. The statement provides disk or tape volume label information for standard label checking. The format is // VOL SYSxxx,<volume>. DOS originally provided the statement for tape label information and the and statements for disk label and extent information. At least as early as 1968 the statement had been replaced by and the statement by These statements used numerous positional parameters and had fairly high information densities.
Язык управления работой
DOS JCL разрабатывался с акцентом на скорость разбора и простоту; получившийся позиционный синтаксис оказался значительно более сложным для понимания, чем управляемый ключевыми словами контроль заданий OS/360.
Закручивание
Ранние версии DOS не имели подсистемы спулинга для повышения эффективности ввода-вывода данных с перфокарт и строчных принтеров. К концу 1960-х годов компании IBM и сторонние разработчики начали восполнять этот пробел. Спулер IBM предлагался как опция под названием POWER, а компания Software Design, Inc., независимый разработчик программного обеспечения, продавала спулер под названием GRASP.
Загрузка программы
DOS/360 не имел перемещаемого загрузчика, поэтому программистам приходилось компоновать отдельную исполняемую версию каждой программы для каждого раздела или адресного пространства, в котором она могла быть запущена. Альтернативно, программы на языке ассемблера можно было написать самомодифицируемыми, но это усложняло разработку и приводило к увеличению размера программы, хотя и незначительному. Крупные организации, использующие DOS с множеством машин и различными схемами разбиения диска, часто разрабатывали собственные перемещаемые загрузчики для решения этой проблемы.
Интерфейс программирования приложений
Интерфейс программирования приложений DOS/360 был несовместим с OS/360. Программы на языках высокого уровня, написанные для DOS, требовалось компилировать и связывать, прежде чем их можно было использовать с OS/360. Незначительные различия между компиляторами DOS и OS иногда требовали внесения изменений в программы. Перенос в обратном направлении, однако, был более сложной задачей. Поскольку API OS/360 поддерживал значительно больше функций, любое их использование необходимо было исключать из программ при переносе в DOS. Для программистов, работающих на языках высокого уровня, таких как COBOL, это представляло меньшую проблему. Программы на языке ассемблера, напротив, как правило, чаще использовали эти функции и обычно требовали более существенной модификации для работы в DOS.