OS/360 , официально известная как операционная система IBM System/360 , [1] [2] — это прекращенная операционная система пакетной обработки , разработанная IBM для их нового на тот момент мэйнфрейма System/360 , анонсированного в 1964 году; на нее оказали влияние более ранние пакеты IBSYS/IBJOB и Input/Output Control System (IOCS) для IBM 7090/7094 [ требуется ссылка ] и в еще большей степени PR155 Operating System для процессоров IBM 1410/7010 . [ требуется ссылка ] Это была одна из самых ранних [NB 1] операционных систем, требовавших, чтобы аппаратное обеспечение компьютера включало по крайней мере одно устройство хранения данных с прямым доступом .
Хотя сама OS/360 была прекращена, последующие операционные системы, включая виртуальное хранилище MVS и 64-разрядную z/OS , по состоянию на 2023 год продолжают работать [update]и поддерживают совместимость с OS/360 на уровне приложений.
IBM анонсировала три различных уровня OS/360, созданных с помощью одних и тех же лент и разделяющих большую часть их кода. IBM в конечном итоге переименовала эти опции и внесла некоторые существенные изменения в дизайн:
Пользователи часто придумывали прозвища, например, «Big OS», «OS/MFT», но ни одно из этих названий не имело официального признания со стороны IBM.
IBM предоставила OS/360 в качестве набора библиотек на ленте, которые инсталляция должна была восстановить на DASD для выполнения генерации системы . IBM также предложила набор дополнительных исходных лент, которые инсталляция могла использовать для изменения и сборки модулей, которые IBM обычно предоставляла как объектный код. Кроме того, IBM предложила микрофиши , которые имели листинг сборки основного программного материала и последующего обслуживания. [NB 3] IBM продолжала распространять исходный код, пока не ввела политику «Только объектный код» [3] (OCO) для лицензионного программного обеспечения.
Другой основной операционной системой для оборудования System/360 была DOS/360 .
OS/360 находится в открытом доступе [4] и может быть свободно загружена. Помимо того, что она может быть запущена на реальном оборудовании System/360, ее можно запустить на бесплатном эмуляторе Hercules , который работает под управлением большинства UNIX и Unix-подобных систем, включая Linux , Solaris и macOS , а также Windows . Существуют готовые компакт-диски OS/360, которые предоставляют предварительно сгенерированные системы OS/360 21.8, готовые к запуску под Hercules.
IBM изначально предполагала, что System/360 будет иметь только одну пакетно-ориентированную [NB 4] операционную систему, OS/360, [2] способную работать на машинах размером до 32 КБ. [NB 5] Она также намеревалась поставлять отдельную операционную систему с разделением времени , TSS/360 , для System/360 Model 67. Существует по крайней мере два объяснения того, почему IBM в конечном итоге решила создать другие, более простые пакетно-ориентированные операционные системы:
IBM ввела ряд временных мер для предотвращения краха продаж оборудования System/360 — сначала Basic Programming Support (BPS) и BOS/360 (Basic Operating System, для самых маленьких машин с памятью 8 Кбайт), затем TOS/360 (Tape Operating System, для машин с памятью не менее 16 Кбайт и только с ленточными накопителями) и, наконец, DOS/360 (Disk Operating System), которая стала основной операционной системой и является предком сегодняшней широко используемой VSE n . [6] [7]
IBM выпустила три варианта OS/360: PCP (Primary Control Program), временная мера, которая могла выполнять только одно задание одновременно, в 1966 году; MFT ( Multiprogramming with Fixed number of Tasks) для машин среднего уровня и MVT (Multiprogramming with Variable number of Tasks) для топовых машин. [8] MFT и MVT использовались по крайней мере до 1981 года, [9] спустя десятилетие после запуска их преемников. [10] Разделение между MFT и MVT возникло из-за ограничений по хранению и ограничений по планированию. Первоначально IBM утверждала, что MFT и MVT были просто «двумя конфигурациями программы управления OS/360 », хотя позже IBM описала их как «отдельные версии OS/360». [2] [ указать ] [11]
Первоначально IBM написала OS/360 на языке ассемблера . Позже IBM написала часть кода OS/360 на новом языке, Basic Systems Language (BSL), [12], полученном из PL/I. Большая часть кода TSO в Release 20 была написана на BSL.
TSS/360 был настолько запоздалым и ненадёжным, что IBM отменила его, хотя IBM позже выпустила три версии TSS/370 PRPQ. К этому времени CP-67 работал достаточно хорошо, чтобы IBM могла предложить его без гарантии в качестве временного ресурса для нескольких крупных клиентов. [13]
Эти три варианта предлагали настолько схожие возможности, что перенос приложений между ними обычно требовал минимальных усилий; одни и те же версии большинства [NB 6] IBM Program Products , приложений и утилит работали на обоих. В тексте ниже PCP , MFT и MVT в основном рассматриваются как просто новые названия для исходных SSS , MSS и MPS , хотя были некоторые изменения в конструкции. Кроме того, в тексте не проводится различий между M65MP и MVT.
Официально PCP, MFT и MVT не являются отдельными операционными системами от OS/360, [2] они являются только параметрами конфигурации времени установки — говоря сегодняшним языком, тремя различными вариантами ядра ОС и планировщика. Однако из-за совершенно разного поведения и требований к памяти пользователи обычно считают их фактически отдельными операционными системами и называют их «ранняя OS/360», «OS/MFT», «OS/MVT» соответственно. MFT отличается от MVT в основном тем, как она управляет памятью: при установке MFT клиенты указывают в поколении системы (SysGen) фиксированное [NB 7] количество разделов , областей памяти с фиксированными границами, в которых прикладные программы могут быть запущены одновременно. [11]
Основная программа управления (PCP) была предназначена для машин с небольшим объемом памяти. Она похожа на MFT [NB 8] с одним разделом . Опыт показал, что нецелесообразно устанавливать OS/360 на системы с объемом памяти менее 128 КБ, хотя ограниченное использование в производстве было возможно на гораздо меньших машинах, например, с 48 КБ памяти. IBM отказалась от опции PCP в финальных версиях OS/360, оставив только MFT II и MVT, обе из которых требовали больше памяти.
Также упоминается как SYS=MIN в макрорасширениях, зависящих от системы.
Мультипрограммирование с фиксированным числом задач (MFT) было призвано служить временной мерой до тех пор, пока в 1967 году не стало доступно мультипрограммирование с переменным числом задач (MVT), предполагаемая целевая конфигурация OS/360. Ранние версии MVT имели много проблем, поэтому более простая MFT продолжала использоваться в течение многих лет. После внедрения новых машин System/370 с виртуальной памятью в 1972 году IBM разработала MFT 2 в OS/VS1 , последнюю систему этой конкретной линейки.
Первая версия MFT [14] разделяла большую часть кода и архитектуры с PCP и была ограничена четырьмя разделами . Было очень обременительно запускать несколько разделов. Многие установки использовали Houston Automatic Spooling Priority (HASP) для снижения сложности.
MFT версии II (MFT-II) [15] разделяла гораздо больше кода программы управления и планировщика с MVT и была гораздо более гибкой в запуске. Максимальное количество разделов увеличилось до 52.
Более поздние модификации MFT-II добавили подзадачность , так что фиксированное количество задач больше не было фиксированным, хотя количество разделов оставалось ограничением.
Опыт показал, что нецелесообразно устанавливать MFT на системы с объемом памяти менее 256 КБ [16] , что в 1960-х годах было довольно большим объемом.
Также упоминается как SYS=INT в макрорасширениях, зависящих от системы.
Мультипрограммирование с переменным числом задач (MVT) [17] было самой сложной из трех доступных конфигураций управляющей программы OS/360 и одной из двух доступных конфигураций в финальных выпусках. [18] MVT предназначалась для самых больших машин в семействе System/360. Представленная в 1964 году, она не была доступна до 1967 года. Ранние версии имели много проблем, и более простая MFT продолжала использоваться в течение многих лет. Опыт показал, что нецелесообразно устанавливать MVT на системы с менее чем 512 КиБ памяти.
MVT рассматривала всю память, не используемую операционной системой, как единый пул, из которого смежные области могли быть выделены по мере необходимости неограниченному [NB 9] числу одновременных приложений и системных программ. Эта схема была более гибкой, чем MFT, и в принципе использовала память более эффективно, но была подвержена фрагментации - через некоторое время можно было обнаружить, что, хотя в целом было достаточно свободной памяти для запуска программы, она была разделена на отдельные фрагменты, ни один из которых не был достаточно большим. [11] System/360 не имела оборудования для перемещения памяти, поэтому уплотнение памяти не могло использоваться для уменьшения фрагментации. Функция, называемая Rollout/Rollin, могла выгрузить работающее задание во вторичное хранилище, чтобы сделать его память доступной для другого задания. Однако развернутое задание должно было быть развернуто в исходные ячейки памяти, когда они снова становились доступными. [19]
В 1971 году опция разделения времени (TSO) для использования с MVT была добавлена как часть выпуска 20.1. TSO стал широко использоваться для разработки программ, поскольку он предоставлял редактор, возможность отправлять пакетные задания, получать уведомления об их завершении и просматривать результаты, не дожидаясь распечатанных отчетов, а также отладчики для некоторых языков программирования, используемых в System/360. TSO в OS/360 [NB 10] взаимодействовал с терминалами с помощью метода доступа к телекоммуникациям (TCAM). Название TCAM предполагает, что IBM надеялась, что он станет стандартным методом доступа для передачи данных, но на самом деле TCAM в OS/VS2 использовался почти исключительно для TSO и был в значительной степени вытеснен методом доступа к виртуальным телекоммуникациям (VTAM) в середине-конце 1970-х годов.
Также упоминается как SYS=VMS при вызовах некоторых макросов, зависящих от системы.
Модель 65 Multiprocessing (M65MP) — это вариант MVT. Он работает на 360/65 в многосистемном режиме [20] M65MP перехватывает использование инструкции Set System Mask (SSM) для сериализации отключенного кода между двумя ЦП. По большей части система M65MP имеет то же поведение и интерфейсы, что и любая другая система MVT.
Ключевой параметр SYS=VMS включает M65MP, а также однопроцессорный MVT.
PCP, MFT и MVT предоставляют схожие возможности с точки зрения прикладных программ:
Некоторые функции были доступны только для MFT и MVT:
Когда System/370 был анонсирован в 1970 году, он предлагал по сути те же возможности, что и System/360, но с примерно в 4 раза большей скоростью процессора, чем аналогичные по цене процессоры System/360. [21] Затем в 1972 году IBM анонсировала System/370 Advanced Functions , основным пунктом которой было то, что будущие продажи System/370 будут включать возможности виртуальной памяти , и это также может быть установлено на существующих процессорах System/370. Поэтому IBM также взяла на себя обязательство поставлять усовершенствованные операционные системы, которые могли бы поддерживать использование виртуальной памяти. [22] [23]
IBM предоставила опцию OS/360 SYSGEN для поддержки S/370, которая не поддерживала DAT, но:
OS/VS1 является преемником MFT и предлагает схожие возможности с несколькими дополнениями, например, RES, виртуальную память. VSAM (см. ниже) изначально был доступен как независимый компонентный выпуск (ICR), а затем интегрирован в базу OS/VS1. [11] IBM выпускала довольно незначительные усовершенствования OS/VS1 до 1983 года, а в 1984 году объявила, что больше их не будет. AIX/370 , AIX/ESA , DPPX , IX/370 , OS/VS1 и TSS/370 — единственные операционные системы System/370, у которых нет современных потомков.
OS/VS2 release 1 представляла собой просто MVT плюс виртуальную память и VSAM (см. ниже). [11] Эта версия была в конечном итоге переименована в OS/VS2 SVS (Single Virtual Storage), когда был представлен OS/VS2 Release 2, также известный как MVS (Multiple Virtual Storage). SVS задумывался как ступенька от MVT к MVS и сегодня представляет только исторический интерес.
В 1974 году IBM выпустила то, что она описала как OS/VS2 Release 2, но которая на самом деле была новой операционной системой, которая была совместима снизу вверх с OS/VS2 Release 1. Supervisor новой системы был в значительной степени переписан на новом диалекте BSL, PL/S ; [24] [25] BSL и PL/S были диалектами PL/I с расширениями, предназначенными для транскрибирования кода языка ассемблера , включая привилегированные инструкции, необходимые для управления компьютером в целом. Чувствительные ко времени компоненты ОС, такие как диспетчер ОС и IOS , в частности, среди многих других, оставались закодированными на языке ассемблера , который был улучшен для OS/VS в IFOX00 Assembler [NB 13] (из более старого, OS/360 IEUASM Assembler).
Самой заметной особенностью новой версии была поддержка нескольких виртуальных адресных пространств — разные приложения думали, что они используют один и тот же диапазон виртуальных адресов, но возможности виртуальной памяти новой системы отображали их в разные диапазоны реальных адресов памяти. Адресное пространство каждого приложения состоит из 3 областей: операционная система (один экземпляр, общий для всех заданий); область приложения, которая была уникальной для каждого приложения; общая виртуальная область, используемая для различных целей, включая межзадачное взаимодействие. IBM обещала, что области приложений всегда будут иметь размер не менее 8 МБ. Такой подход устранил риск фрагментации памяти , который присутствовал в MVT и SVS, и улучшил внутреннюю безопасность системы. [11] Новая система быстро стала известна как « MVS » (Multiple Virtual Storages), оригинальная OS/VS2 стала известна как «SVS» (Single Virtual Storage), и сама IBM приняла эту терминологию и обозначила преемников MVS как «MVS/ xxx ». [26]
MVS представил новый подход к управлению рабочей нагрузкой, позволяющий пользователям определять целевые показатели производительности для высокоприоритетных пакетных заданий. Это позволило пользователям давать своим системам больше работы, чем раньше, не влияя на производительность высокоприоритетных заданий. [27]
MVS была первой основной операционной системой IBM на System/370 [NB 14], которая поддерживала то, что IBM называла тесно связанной многопроцессорной обработкой , в которой 2 (позже до 12 для мэйнфреймов IBM и до 16 для мэйнфреймов Amdahl ) ЦП совместно использовали одновременный доступ к одной и той же памяти (и к одной копии операционной системы и периферийных устройств), обеспечивая большую вычислительную мощность и определенную степень постепенного снижения производительности в случае отказа одного ЦП (что, к счастью, становилось все более редким событием, поскольку время безотказной работы системы увеличилось с нескольких часов до нескольких дней , а затем и до нескольких лет ).
Первоначально MVS поставлялся с менеджером очереди заданий под названием JES2 (Job Entry Subsystem 2), который произошел от HASP ( Houston Automatic Spooling Priority ), а также поддерживал удаленный ввод заданий с рабочих станций, расположенных в другом месте. JES2 может управлять заданиями только для одного ЦП (который может быть тесно связанной многопроцессорной системой). В 1976 году IBM предоставила еще одну опцию, JES3 (Job Entry Subsystem 3), потомок ASP ( Attached Support Processor ), который позволяет одному ЦП управлять одной очередью заданий, подавая работу нескольким физически отдельным ЦП, и, следовательно, позволяет одной консоли оператора управлять работой всех этих ЦП. [28] Примечание: JES1 был менеджером очереди заданий для OS/VS1 (см. выше).
IBM надеялась, что метод виртуального доступа к хранилищу (VSAM) заменит предыдущие последовательные, индексированные и прямые методы доступа, поскольку он предоставил их улучшенные версии: [29] [30]
Форматы VSAM легли в основу систем управления базами данных IBM IMS/VS и DB2 — обычно ESDS для фактического хранения данных и KSDS для индексов.
VSAM также предоставляет новую реализацию функции каталога, которая позволяет приложениям получать доступ к файлам по имени, без необходимости знать, на каком диске(ах) они находятся. Наборы данных VSAM должны быть определены в каталоге VSAM до их использования, а наборы данных, не относящиеся к VSAM, также могут быть перечислены в каталоге VSAM. Главный каталог MVS должен быть каталогом VSAM. [30] Каталоги изначально предоставлялись в OS/360 в форме CVOL; MVS добавила отдельную структуру каталога для VSAM; позже IBM добавила третий тип каталога, известный как каталог ICF. [32] (IBM удалила поддержку каталогов CVOL и VSAM с 2000 года, поскольку они не соответствовали Y2K; поэтому в z/OS поддерживаются только каталоги ICF.) [33]
В 1974 году IBM анонсировала Systems Network Architecture , которая должна была снизить стоимость эксплуатации больших сетей терминалов, в основном за счет более эффективного использования линий связи. Она доступна только для операционных систем виртуальной памяти IBM, поскольку ее программный компонент для мэйнфреймов, VTAM, доступен только с этими операционными системами.
В 1977 году IBM анонсировала MVS/System Extensions, программный продукт (то есть стоивший дополнительных денег), который улучшил производительность MVS и добавил функциональность. [34]
Потомки оригинальной MVS по-прежнему используются в последних потомках System/360, System/390 и zSeries ; она была переименована в OS/390 для System/390, а 64-разрядная версия для zSeries была названа z/OS .
Из-за размера этот раздел концентрируется на варианте MVT OS/360; PCP и MFT очень похожи; с изменениями в номенклатуре и некоторыми незначительными различиями. OS/VS1 и SVS имеют во многом ту же структуру, что и MFT II и MVT, в то время как MVS , хотя и сохраняет большую часть логики MVT, имеет основные усовершенствования, которые лучше рассмотреть в отдельной статье. Эта статья придерживается использования IBM термина storage, а не memory .
OS/360 назначает процессоры задачам, которые аналогичны облегченным процессам или потокам в других системах. Каждая задача имеет блок управления задачами (Task Control Block, TCB) и стек блоков запросов [NB 15] (RB). Задача может быть либо диспетчеризируемой, либо недиспетчеризируемой [NB 16] , а RB либо ожидает [NB 17] , либо не ожидает. Диспетчер выбирает диспетчеризируемую задачу с наивысшим приоритетом, текущий RB которой не ожидает.
MVS назначает процессоры адресным пространствам , которые аналогичны процессам, а также блоку запросов на обслуживание (SRB) и задачам в адресных пространствах. Каждое адресное пространство имеет блок управления адресным пространством (ASCB), очередь SRB и очередь TCB.
В OS/360 все хранилище видимо для всего кода, хотя защита от выборки может предотвратить доступ непривилегированного кода к некоторым блокам управления или между заданиями. Основное хранилище для MVT разделено на системную ( фиксированную ) область внизу реального хранилища, общую область вверху и частную область в середине. Они содержат следующие области.
SYS1.NUCLEUS(IEANUCxx)
, где xx обычно равен 01. Для модели 65 MP (M65MP) существует отдельная копия префикса (места 0-4095) для каждого процессора [35] : 72 , а термин абсолютный адрес относится к адресу, фактически отправленному в память после любого префикса, в то время как термин реальный адрес относится к адресу до применения любого префикса. Ядро содержит обработчики прерываний, блоки управления, процедуры SVC типа 1 и типа 2 , переходную область SVC, процедуры, которые могут быть напрямую вызваны непривилегированным кодом, и процедуры, которые могут быть вызваны только привилегированным кодом."Это раздел хранилища с наивысшим физическим адресом. Он содержит
SVS аналогичен, за исключением того, что системная область находится вверху и внизу виртуального хранилища, а не реального хранилища, ядро находится в хранилище Virtual=Real (V=R), частная область содержит область локальной системной очереди (LSQA) для каждого региона, а LPA разделена на:
В MVS все адресные пространства разделяют системную область [NB 19], но не частную область. MVS добавляет:
В MVS/XA и более поздних версиях под ними располагаются системные, частные и общие области.16 Mi B (2 24 байта) строка и расширенные области между ними16 миль Б и2 ГиБ ( 2 31 байт).
В z/OS структура хранилища [36] аналогична структуре MVS/XA, MVS/ESA и OS/390; хранилище выше Бар 2 Gi B управляется другими службами, нежели хранилище под бар.
Когда операторы изначально выбирают LOAD
, система отправляет READ IPL
команду выбранному устройству, считывая 24 байта из цилиндра 0, дорожки 0, записи 1, в ячейку хранения 0. [35] : 22 байта 8-23 считываются и передаются в загрузочную запись [37] цилиндр 0, дорожка 0, запись 2, которая, в свою очередь, считывается и передается в загрузчик IPL. Загрузчик IPL выполняет начальное обслуживание, находит запрошенное ядро и загружает его с помощью перемещения; обработчик прерываний csect всегда находится в ячейке 0, а csect инициализации ядра всегда последний, так что в конечном итоге его можно отбросить. Программа инициализации ядра (NIP) инициализирует различные компоненты системы.
Первоначально NIP должен предоставлять необходимые ему сервисы. Однако по мере инициализации различных возможностей ОС он начинает использовать стандартные сервисы, например, использует макрос OBTAIN
для чтения блока управления набором данных (DSCB) из таблицы содержимого тома (VTOC).
NIP считывает элементы из SYS1.PARMLIB
набора данных для получения различных рабочих данных. Эти элементы могут быть указаны по умолчанию, оператором или параметрами в других элементах.
В конечном итоге NIP создает область главного расписания из частной области и передает ее в IEEVIPL для инициализации главного планировщика и задачи связи, что завершает инициализацию системы.
В дополнение к пакетным заданиям OS/360 поддерживает несколько категорий работ, которые она обрабатывает аналогично пакетным заданиям. Во всех случаях система должна обработать JCL, выделить регион, выделить устройства и инициировать программу шага задания. Для пакетного задания Reader/Interpreter обрабатывает JCL с внешнего устройства; для START
команд, MOUNT
команд и TSO LOGON
система генерирует JCL, вызывая каталогизированную процедуру.
OS/360 имеет блок управления, известный как Communications Vector Table (CVT), который содержит указатели на другие блоки управления и различные процедуры. Некоторые макрокоманды OS/360 ссылаются на поля в CVT и других блоках управления.
В OS/360 имеются макросы для предоставления отображений dsect некоторых блоков управления, хотя многие макросы имеют жестко закодированные смещения, а не имена в макросах отображения.
Службы OS/360 обычно имеют параметры в регистре 1; некоторые используют регистры 0 и 1, а некоторые используют регистры 0, 1 и 15.
Макросы служб OS/360 часто имеют три формы:
Многие из важных служб реализованы в подпрограммах SVC и сохраняют регистры 2-14. Другие реализованы как напрямую вызываемые подпрограммы с адресами входа в блоках управления системой и требуют, чтобы регистр 13 указывал на стандартную область сохранения; они обычно сохраняют регистры 2-13. В любом случае регистр 15 на выходе обычно содержит код возврата; многие службы возвращают дополнительные данные в регистрах 0 и 1.
OS/360 требует как минимум одну консоль оператора; существует два уровня поддержки
Каждое сообщение, выданное Write To Operator (WTO) или Write To Operator с ответом (WTOR), имеет связанный с ним один или несколько кодов маршрутизации. Оператор может ограничить консоль отображением только определенных кодов маршрутизации. Типичным применением этого будет размещение консоли в ленточной библиотеке и отображение на ней только сообщений, относящихся к библиотекарю ленточных лент. Специальный код маршрутизации 7 приводит к включению текста сообщения в журнал сообщений задания.
Каждое сообщение также имеет дескриптор, который управляет тем, как оно обрабатывается.
Одной из ключевых команд оператора является REPLY
, которая обеспечивает ответ на WTOR
макрос. Оператор может ответить на WTOR только на консоли, которая получила его текст сообщения.
Ключевой командой для дисплейных консолей, например, 2250 , 2260 , 3270 , является CONTROL ( K ), которая задает параметры обработки, например, для прокрутки.
Эти данные взяты из IBM 360 Operating Systems Release History, System/370 Market Chronology of Products & Services, IBM. "z/OS, z/OS.e и OS/390 marketing and service announce, available, and cancellation dates". Архивировано из оригинала 14 марта 2008 г.и письма-объявления IBM.