Jump to content

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

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

( Инструкция вызова супервизора SVC ) — это аппаратная инструкция , используемая System/360 семейством мейнфреймов IBM вплоть до современных процессоров 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] и М200 (МП) и другие; а также используется в Hercules с открытым исходным кодом программном обеспечении для эмуляции мэйнфреймов . Это вызывает прерывание для запроса службы у операционной системы . Системная процедура, предоставляющая эту услугу, называется процедурой SVC . SVC — это системный вызов .

Обоснование

[ редактировать ]

Мэйнфреймы IBM в семействах System/360 и последующих работают в одном из двух состояний: состоянии проблемы или состоянии супервизора и в одном из шестнадцати ключей доступа к хранилищу (от 0 до 15). В состоянии проблемы большой набор непривилегированных пользовательской программе доступен инструкций общего назначения. В состоянии супервизора системные программы дополнительно могут использовать небольшой набор привилегированных инструкций, которые обычно предназначены для функций контроля. Эти функции могут повлиять на других пользователей, другие процессоры или всю компьютерную систему. В ключе памяти 0 программа имеет доступ ко всем адресуемым [а] хранилище, в противном случае оно ограничивается областями хранения с соответствующим ключом.Программе разрешен доступ к определенным контролирующим функциям только после тщательной проверки авторизации операционной системой: 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 [б] [с] и чтобы программа, вызывающая MODESET, находилась в конкатенации библиотек, каждая из которых была определена как авторизованная, и этот безопасный подход находился полностью под контролем установки. Такой подход в целом упрощал пользовательский контроль над авторизацией, хотя при этом требовались некоторые простые изменения в приложении. В целом, пользовательские установки отдавали предпочтение этому подходу, и тем самым была значительно повышена общая надежность системы.

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

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

Выполнение

[ редактировать ]

SVC — это двухбайтовая инструкция с шестнадцатеричным кодом операции. ; второй байт инструкции, номер 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, если он привилегирован), а ключ хранения сохраняется в реальном [д] адрес. Это локации 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 и из них, передается в регистрах общего назначения или в памяти.

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

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

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

Примечания

[ редактировать ]
  1. ^ Т.е. вся память в адресных пространствах, доступных текущему диспетчерскому устройству .
  2. ^ Первоначально это означало, что программа jobstep была связана с AC(1) и получена из авторизованной конкатенации библиотек. Позже TSO/E добавил возможность авторизованных команд TSO.
  3. ^ несколько системных библиотек всегда были неявно частью объединения
  4. ^ Jump up to: а б с То есть адрес, который подлежит префиксу, но не подлежит динамической трансляции адресов. IBM использует термин «абсолютный адрес» только для адреса, который не подлежит ни DAT, ни префиксу.
  5. ^ Jump up to: а б Резидентные процедуры SVC в OS/360, OS/VS1 и SVS не требуют обновления.
    Подпрограммы SVC в FLPA не обязательно должны обновляться.
  6. ^ В MVS SVC типа 1 удерживает локальную блокировку и может принимать прерывания.
  7. ^ Использование регистра SVC в OS/360 и MVS ограничено.
    • Адрес вариатора R3
    • Адрес R4 TCB
    • Адрес РБ R5
    • Адрес точки входа R6 (только MVS)
    • Адрес ASCB R7 (только 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) .

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

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 74363cab57372e4fc80f83739d4757dc__1669126140
URL1:https://arc.ask3.ru/arc/aa/74/dc/74363cab57372e4fc80f83739d4757dc.html
Заголовок, (Title) документа по адресу, URL1:
Supervisor Call instruction - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)