stringtranslate.com

Инструкция по вызову супервизора

В этой статье описаны конкретные инструкции для мэйнфреймов IBM System/360 и последующих моделей , а также совместимых машин. Общую концепцию инструкции для вызова операционной системы см. в разделе Системный вызов .

Команда вызова супервизора ( SVC ) — это аппаратная инструкция , используемая семейством мейнфреймов IBM System/360 вплоть до современных процессоров zSeries , Amdahl 470V/5, 470V/6, 470V/7, 470V/8, 580, 5880, 5990M. , и 5990А и другие; Univac 90/60 , 90/70 и 90/80 и возможно другие; Fujitsu M180 (UP) [1] и M200 (MP) и другие; а также используется в программном обеспечении для эмуляции мэйнфреймов Hercules с открытым исходным кодом . Это вызывает прерывание для запроса службы у операционной системы . Системная процедура, предоставляющая эту услугу, называется процедурой SVC . SVC — это системный вызов .

Обоснование

Мэйнфреймы IBM в семействах System/360 и последующих работают в одном из двух состояний: состоянии проблемы или состоянии супервизора и в одном из шестнадцати ключей доступа к хранилищу (от 0 до 15). В состоянии проблемы пользовательской программе доступен большой набор непривилегированных инструкций общего назначения. В состоянии супервизора системные программы дополнительно могут использовать небольшой набор привилегированных инструкций, которые обычно предназначены для функций контроля. Эти функции могут повлиять на других пользователей, другие процессоры или всю компьютерную систему. В ключе хранилища 0 программа может получить доступ ко всей адресуемой [a] памяти, в противном случае она ограничивается областями хранения с соответствующим ключом. Программе разрешен доступ к определенным контролирующим функциям только после тщательной проверки авторизации операционной системой: DEBCHK (SVC 117), TESTAUTH (SVC 119) и, возможно, дополнительных тестов. Программы, не прошедшие ни один из этих тестов, подвергаются ABEND, то есть аварийно завершаются и немедленно прекращают обработку. Некоторые из этих тестов не были доступны в OS/360, но были добавлены в OS/VS1 , SVS или MVS/370 , но все они были доступны в MVS/370 или последующих выпусках и доступны по сей день.

В OS/VS1 , OS/VS2 (SVS) , MVS/370 и последующих версиях ОС функция MODESET (SVC 107) устранила необходимость во многих написанных пользователем SVC, поскольку этот системный SVC учитывал оба изменения режима (состояния проблемы). в состояние супервизора) и ключ (от 8-15 [пользователь] до 0-7 [система]) за одну операцию, и многие написанные пользователем SVC изначально предназначались для простого изменения режима и ключей, в любом случае, и впоследствии это было единственное специальное требование заключалось в том, что шаг задания должен быть авторизован APF [b] [c] и чтобы программа, вызывающая MODESET, находилась в конкатенации библиотек, каждая из которых была определена как авторизованная, и этот безопасный подход находился полностью под контролем установки. Такой подход в целом упрощал пользовательский контроль над авторизацией, хотя при этом требовались некоторые простые изменения в приложении. В целом, пользовательские установки отдавали предпочтение этому подходу, и тем самым была значительно повышена общая надежность системы.

Хотя приложения для мэйнфреймов обычно представляют собой синхронные процессы, сама операционная система по своей природе является асинхронной , хотя система также поддерживает многие процессы, которые по своей природе являются синхронными . Когда приложение запрашивает системную службу, которая по своей природе является асинхронной , например, обработку ввода/вывода, необходимо использовать механизм синхронизации приложения и операционной системы. Этот важный механизм реализуется через функции, которые встроены в операционную систему или специально поддерживаются ею, включая: WAIT (временная остановка обработки приложения до тех пор, пока не произойдет внешнее событие); POST (указывает возникновение внешнего события, чтобы обработка приложения могла продолжиться); и SYNCH (изменить режим обработки системы — супервизор на пользователя и системный ключ на пользовательский ключ — при сохранении целостности системы и синхронно выполнить функцию от имени приложения, после чего обработка супервизора может продолжиться).

В приведенной ниже таблице SVC OS/360 указаны условия, при которых могут использоваться эти средства синхронизации.

Выполнение

SVC — это двухбайтовая инструкция с шестнадцатеричным кодом операции 0A ; второй байт инструкции, номер SVC , указывает на конкретный запрос. [2] Номер SVC может иметь любое значение от 0 до 255, при этом конкретный номер SVC определяется разработчиком операционной системы, например, в MVS IBM SVC 3 используется для завершения программы, а в UNIVAC VS/ 9 и Fujitsu BS2000, для той же цели использовался SVC 9.

Когда программа выдает SVC, происходит прерывание. PSW, 8-байтовый (в System 360 и S/370) или 16-байтовый (в z/System) привилегированный регистр, содержащий, среди прочего, текущий адрес выполняемой команды, бит привилегии ( 1, если он привилегирован), а ключ хранения сохраняется по реальному адресу [d] . Это локации 32-39 на 360 и 370; 320-335 в системе z/System. Затем PSW загружается с другого реального адреса [d] ; это 96-103 на 360 и 370, 448-463 на z/system. Выполнение возобновляется по адресу, который был загружен в PSW. Биты 24–31 сохраненного PSW (реальный адрес [d] 35 на 360 и 370, 323 на z/System) содержат номер вызова супервизора.

SVC вызывает функцию контроля, обычно реализуемую как «закрытую подпрограмму» системного обработчика прерываний SVC . Информация, передаваемая в процедуры SVC и из них, передается в регистрах общего назначения или в памяти.

В OS/360 и последующих версиях возврат из подпрограммы SVC осуществляется для подпрограмм SVC типа 2, 3 и 4 через вызов SVC 3 (EXIT), а для других типов SVC - через команду привилегированной загрузки PSW (LPSW), и которая выполняется от имени процедуры SVC диспетчером управляющей программы или обработчиком прерываний SVC.

В операционных системах, разработанных не IBM, таких как MUSIC/SP, разработанная Университетом Макгилла в Монреале, Канада, для мэйнфреймов IBM, а для мэйнфреймов сторонних производителей - VS/9 , разработанная Univac (из операционной системы TSOS для серии RCA Spectra 70). компьютеры) для линейки мэйнфреймов UNIVAC Series 90 и операционная система B800 (также разработанная на основе операционной системы TSOS) для мэйнфреймов Fujitsu — все они используют команду LPSW для выхода из вызова супервизора.

Выбор того, будет ли вызов супервизора возвращаться в вызывающую программу напрямую через команду LPSW или с помощью каких-либо других средств, таких как инструкция возврата из подпрограммы или сам вызов супервизора, является вопросом проектирования. Не существует очевидного «правильного» способа сделать это; могут быть причины для обоих методов. Использование инструкции LPSW для выхода из процедуры SVC позволяет ускорить выполнение, но означает, что фактическое тестирование процедуры должно выполняться на выделенной машине, на которой выполняется код как часть реального супервизора операционной системы. Если код был написан как обычная подпрограмма, его можно протестировать так же, как и любую обычную программу, и потенциально развернуть без необходимости ее модификации. Это также позволит измерять показатели того, сколько времени потребовалось процедуре вызова супервизора для выполнения своей задачи, что позволит анализировать процедуры, которые слишком длительны по времени выполнения (или очень быстрые).

В OS/360 и более поздних версиях ОС точки входа ветвей и ссылок являются альтернативой вызовам SVC для некоторых процедур режима супервизора. В MVS/SP V1R3 и более поздних версиях ОС записи Program Call (PC) дополнили SVC для вызова многих функций контроля как авторизованными, так и неавторизованными программами; а некоторые функции могут быть вызваны только через записи филиала или ПК, например STARTIO . (Это также имеет то преимущество, что предотвращает запуск операционных систем IBM на оборудовании сторонних производителей.)

Различные операционные системы IBM мало совместимы в конкретных используемых кодах или в службах супервизора, которые могут быть вызваны. Системы VM/370 и z/VM используют инструкцию DIAG аналогичным образом и оставляют SVC для использования операционными системами, работающими на виртуальных машинах. Большинство SVC OS/360 поддерживаются для «устаревших» программ, но некоторые SVC были «расширены» с течением времени.

SVC OS/360 и последующих систем

В OS / 360 и последующих системах номера SVC от 0 до примерно 127 определяются IBM, а номера 255 и ниже доступны для использования персоналом системного программирования установки. z/OS изменила это число на номера SVC от 0 до примерно 200 для IBM и на 255 ниже для установки, поскольку дополнительные системные службы, в первую очередь для поддержки шифрования/дешифрования, реализовывались IBM с использованием SVC. Подпрограммы SVC должны иметь имена модулей в определенном формате, начинающиеся с IGC.

В конструкции системы термин «отключено» означает отключение для всех прерываний, за исключением прерываний проверки машины в системах до MVS/370, и с удержанием «локальной блокировки», но не «отключено» для любых прерываний в MVS/370 и все более поздние системы. Первое — это физическое отключение, второе — логическое отключение, поскольку «локальная блокировка» адресного пространства оказывает такое же влияние в его адресном пространстве, как и физическое отключение, но не влияет на другие адресные пространства.

OS/360 определила четыре типа подпрограмм SVC, называемых «Тип 1» – «Тип 4»; В MVS/370 добавлен дополнительный «Тип 6», который аналогичен «Типу 1», за исключением того, что процедура SVC физически отключена. «Тип 5» не был ни определен, ни реализован. Следующая информация, являющаяся частью таблицы для OS/360, дополненной для MVS/370 и последующих систем, дает представление о соображениях, связанных с написанием процедуры SVC.

Ограничения на размер подпрограмм SVC типов 3 и 4 необходимы, поскольку при вызове они загружаются в назначенные «переходные области» (PLPA в пост-MVT).

Безопасность

В OS/360 вообще не было никаких способов ограничить использование SVC. Следовательно, существовало довольно много непреднамеренных нарушений целостности системы и данных, которые были возможны при использовании определенных последовательностей SVC и других инструкций. Для любопытных пользователей стало обычной практикой пытаться обнаружить эти уязвимости, но некоторые системные программисты использовали эти уязвимости, а не разрабатывали свои собственные SVC, написанные пользователями.

Начиная с MVS/370, IBM считала дефектом продукта , если ошибка проектирования системы позволяла прикладной программе войти в состояние супервизора без авторизации. Они потребовали, чтобы все IBM SVC были защищены, чтобы закрыть все угрозы целостности системы и данных. Они «гарантировали» закрытие таких разоблачений по мере их обнаружения. К выпуску 3.7 MVS/370 в 1977 году почти каждая такая уязвимость действительно была выявлена ​​и закрыта за счет 100 000 утвержденных отчетов об анализе программы (APAR) и соответствующих временных исправлений программы (PTF). Это было выдающееся достижение, поскольку после этого время работоспособности системы измерялось годами , а не днями или даже часами .

Примечания

  1. ^ Т.е. вся память в адресных пространствах, доступных текущему диспетчерскому устройству .
  2. ^ Первоначально это означало, что программа jobstep была связана с AC(1) и получена из авторизованной конкатенации библиотек. Позже TSO/E добавил возможность авторизованных команд TSO.
  3. ^ несколько системных библиотек всегда были неявно частью объединения
  4. ^ abc То есть адрес, который подлежит префиксу, но не подлежит динамическому преобразованию адресов. IBM использует термин «абсолютный адрес» только для адреса, который не подлежит ни DAT, ни префиксу.
  5. ^ ab Резидентные процедуры SVC в OS/360, OS/VS1 и SVS не обязательно должны быть обновляемыми.
    Подпрограммы SVC в FLPA не обязательно должны быть обновляемыми.
  6. ^ В MVS SVC типа 1 удерживает локальную блокировку и может принимать прерывания.
  7. ^ Использование регистра SVC в OS/360 и MVS запрещено.
    • Адрес вариатора R3
    • Адрес R4 TCB
    • Адрес РБ R5
    • Адрес точки входа R6 (только MVS)
    • Адрес R7 ASCB (только MVS)
    • Обратный адрес R14 CVTEXIR или SVC SLIH

Рекомендации

  1. ^ Руководство пользователя «Инструкции по ассемблеру версии 1.3», Fujitsu Solutions GmBH, https://bs2manuals.ts.fujitsu.com/download/manual/959.1 (PDF), июнь 2010 г., стр. 167 (по состоянию на 9 ноября 2020 г.)
  2. ^ Корпорация IBM. Принципы работы IBM System/360 (PDF) . п. 72.
  3. ^ Можно использовать ABEND, но это не считается лучшей практикой.
  4. ^ Корпорация IBM (1967). Руководство программиста операционной системы IBM System/360 (PDF) .

дальнейшее чтение