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

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

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

Обоснование

Мэйнфреймы IBM в семействе System / 360 и последующих версиях работают в одном из двух состояний: состояние проблемы или же государство надзора и в одном из шестнадцати ключей доступа к памяти (от 0 до 15). В состояние проблемы, большой набор общего назначения непривилегированный инструкции доступны для пользовательской программы. В государство надзора, системные программы дополнительно могут использовать небольшой набор привилегированный инструкции, которые обычно предназначены для надзорных функций. Эти функции могут влиять на других пользователей, другие процессоры или всю компьютерную систему. В ключе хранилища 0 программа может получить доступ ко всем адресуемым[а] хранилище, в противном случае оно ограничено областями хранения с совпадающим ключом. программе разрешен доступ к определенным функциям контроля только после тщательной проверки авторизации операционной системой: DEBCHK (SVC 117), TESTAUTH (SVC 119) и, возможно, дополнительных тестов. Программы, не прошедшие ни один из этих тестов, ОТКЛОНЯЮТСЯ, т.е. ненормально прекращенный и немедленно прекратить обработку. Некоторые из этих тестов не были доступны в 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 [system]) за одну операцию, и многие написанные пользователем SVC изначально были предназначены для простого режима и ключевых изменений, так или иначе, и впоследствии единственным специальным требованием было то, чтобы этап задания был авторизован APF[b][c] и чтобы программа, вызывающая MODESET, находилась в конкатенации библиотек, каждая из которых была идентифицирована как авторизованная, и этот безопасный подход полностью находился под контролем установки. Такой подход в целом упрощал пользовательский контроль авторизации, хотя для этого требовались некоторые простые изменения в приложении. В целом, пользовательские установки предпочитали этот подход, и тем самым была значительно повышена общая надежность системы.

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

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

Выполнение

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

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

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

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

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

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

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

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

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

В 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.

КонвенцииТип 1 / Тип 6Тип 2Тип 3Тип 4
Часть программы постоянного контролядадаНетНет
Размер рутиныЛюбойЛюбойМодуль одиночной нагрузки
≤ 1024 байта
Каждый модуль нагрузки
≤ 1024 байта
Повторяемая рутинаНеобязательно, но должен многократно использоваться серийнодадада
Может допускать перерывыНетдадада
Зарегистрируйте содержимое при входеРегистры[d] 3, 4, 5, 6, 7 и 14 содержат указатели связи; регистры 0, 1 и 15 являются регистрами параметров.
Может содержать перемещаемые данныедадаНетНет
Может передавать управление каким другим типам подпрограмм SVCНиктоЛюбой
Может выдать WAITНетДа, используя "WAIT" (SVC 1)
Может выдавать POSTДа, но необходимо использовать запись отключенной ветки "Опубликовать"Да, используя "POST" (SVC 2)
Может запланировать синхронные выходыДа, но необходимо использовать запись отключенной ветви "Exit Effector"Да, с использованием «СИНХРОНИЗАЦИИ» (SVC 12)
Может запланировать аварийное завершение работыДа, используя "Abterm" отключенную запись веткиДа, используя "ABEND" (SVC 13)
Таблица взята из Руководства программиста по операционной системе IBM System / 360 C28-6550-2[3]:стр.33

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

  • Примером типа 1 является SVC 10, используемый как для GETMAIN, так и для FREEMAIN, который выделяет область оперативной памяти для задачи и, соответственно, для ее освобождения. SVC 10 неофициально известен как «REGMAIN», поскольку он обменивается параметрами только через регистры общего назначения и может как ПОЛУЧАТЬ, так и БЕСПЛАТНО. SVC 4 и SVC 5 могут выполнять аналогичные функции GET и FREE соответственно, но обмениваться параметрами через списки параметров в памяти.
  • Примером типа 2 является SVC 42, ATTACH, который создает новую задачу.
  • Примером типа 3 является SVC 33, IOHALT, который завершает операции ввода-вывода на устройстве, не поддерживающем DASD. Этот SVC был изменен на тип 2 в OS / VS, поскольку IOHALT широко используется во многих системах на основе телепроцессов.
  • Примером типа 4 является SVC 19, OPEN, используемый для предоставления набора данных для использования пользовательской программой, который включает модули, общие для всех методов доступа, и вызывает дополнительные модули, специфичные для каждого из них. метод доступа. OPEN также поддерживает наборы данных, которые должны управляться методом доступа "самостоятельно", например, те, к которым осуществляется доступ с помощью EXCP.
  • Примером типа 6 является SVC 107, MODESET, который не получает блокировок, но может изменять системный режим и системный ключ в соответствии с переданными параметрами.

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

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

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

Примечания

  1. ^ То есть, все хранилище в адресных пространствах, недоступное текущему диспетчерская единица.
  2. ^ Первоначально это означало, что программа jobstep была связана с AC (1) и возникла в результате авторизованного объединения библиотек. TSO / E позже добавил средство для авторизованных команд TSO.
  3. ^ несколько системных библиотек всегда были неявно частью конкатенации
  4. ^ Использование регистра SVC в OS / 360 и MVS
    • Адрес вариатора R3
    • R4 Адрес TCB
    • R5 адрес RB
    • Адрес точки входа R6 (только MVS)
    • R7 адрес ASCB (только MVS)
    • R14 обратный адрес CVTEXIR или SVC SLIH

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

  1. ^ Руководство пользователя Assembler Instructions V1.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. ^ Корпорация IBM (1967). Руководство программиста операционной системы IBM System / 360 (PDF).


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