Крім оригінальної System/360, інструкція присутня також у мейнфреймах Amdahl (470V, 580/5880, 5990 та інших), Univac 90/60, 90/70 та 90/80, а також Fujitsu M180/M200.
Обгрунтування
Мейнфрейми IBM System/360 можуть працювати у двох режимах: так званий проблемний режим (англ.problem state) — за сучасною термінологією «режим користувача», у якому запускаються прикладні програми («програми, що вирішують проблеми користувача»), і режим супервізора (англ.supervisor state), призначений для системного програмного забезпечення. Додатково визначаються 16 так званих «ключів доступу до пам'яті» (англ.storage access keys). У «проблемному режимі» програма може використовувати не всі інструкції процесора — деякі так звані привілейовані інструкції доступні лише у режимі супервізора. Код супервізора, для якого поточне значення ключа доступу до пам'яті дорівнює 0, має доступ до всієї пам'яті комп'ютера.
Коли прикладна програма бажає здійснити системний виклик, вона викликає машинну інструкцію SVC, у другому байті якої кодується номер потрібного виклику. У OS/360 немає обмежень на те, які виклики дозволені програмі. Наступні операційні системи, такі як OS/VS1, SVS і MVS/370 додали процедуру авторизації, яку повинна пройти програма перед здійсненням деяких викликів. Авторизація здійснюється такими сервісами, як DEBCHK (номер 117), TESTAUTH (номер 119) і деякими іншими.[уточнити]
У OS/VS1, VS2 і MVS/370 додано спеціальний сервіс MODESET (номер 107), який значно спростив процедуру одночасної зміни режиму (проблемний на супервізора) і ключа доступу (ключі 8-15 призначено для користувацьких програм, а 0-7 — для системних).
Типові програми для мейнфреймів є синхронними, в той час як операційна система є за своєю сутністю асинхронною. Якщо прикладна програма здійснює системний виклик, що є за сутністю асинхронним (такий, наприклад, як процедура канального вводу-виводу), стають потрібні процедури для синхронізації стану програми зі станом пристроїв вводу-виводу. Такими процедурами є, наприклад, WAIT (зупинка програми до настання деякої події), POST (сигналізація того, що сталася деяка подія, після якої прикладна програма може продовжити виконання), і SYNCH (зміна режиму роботи з режиму супервізора у режим користувача, і від системного ключа до ключа користувача).
У таблиці, наведеній нижче, наведено умови, за яких дані механізми синхронізації можуть використовуватися.
Реалізація
SVC є двобайтовою інструкцією з кодом операції 0A0x, де x — номер системного виклику. Обробник SVC є обробником переривання. Інформація до і від обробника передається у регістрах процесора або у оперативній пам'яті.
Виклики супервізора поділяються на кілька типів, спочатку пронумерованих від 1 до 4. MVS/370 додала ще один «тип 6».
Для операційних систем, розроблених у IBM, повернення з обробника для викликів типу 2, 3 і 4 здійснюється функцією EXIT, яка теж має свій номер системного виклику (SVC 3). Для інших типів повернення до прикладної програми здійснюється інструкцією процесора LPSW. OC, розроблені іншими фірмами, використовують винятково LPSW для повернення.
У ОС MVS/370 і пізніших альтернативою викликам SVC є прямі виклики за визначеними адресами (англ.branch and link entry points).
У різних операційних системах IBM сумісність у семантиці викликів SVC вкрай незначна.
У системах, що додали підтримку апаратної віртуалізації (таких, як VM/370 і z/VM) інструкція DIAG є схожою за ідеєю на SVC, але призначена для переходу з режиму супервізора до режиму гіпервізора.
Системні виклики OS/360
У системі OS/360 і її наступниках виклики, нумеровані від 0 до приблизно 127 означені самою IBM, а від 255 і «униз» — доступні для використання у конкретній інсталяції системи. У z/OS розподіл змінився: номери від 0 до приблизно 200 — для IBM, від 255 униз — для інсталяцій як «додаткові системні сервіси» (наприклад, підтримка шифрування і дешифрування).
Власне процедури-обробники SVC повинні мати назви модулів, що починаються на IGC.
Термін «заблоковані» (англ.disabled) означає, що системний виклик заборонений (фізично) для всіх переривань за винятком переривань контролю машини у системах, раніших MVS/370, і заборонений за методом local lock для даного адресного простору у MVS/370 і новіших системах. У кожного адресного простору MVS/370 є свій local lock.
У OS/360 означалися чотири типи процедур SVC, MVS/370 додав «тип 6», аналогічний типові 1, але з фізичним блокуванням. «Тип 5» ніколи не означався.
У наступній таблиці наводяться типи процедур SVC і їх особливості.
Угода
Тип 1 / тип 6
тип 2
тип 3
тип 4
Частина резидентного ядра ОС
Так
Так
Ні
Ні
Розмір коду
будь-який
будь-який
Один модуль завантаження ≤ 1024 байт
Кожен модуль завантаження ≤ 1024 байт
Реентрантна процедура
Опційно
Так
Так
Так
Дозволяє переривання
Ні
Так
Так
Так
Вміст регістрів ЦП на вході
Регістри[a] 3, 4, 5, 6, 7 і 14 містять вказівники на різні ділянки комунікації; регістри 0, 1 і 15 для параметрів.
Можуть мати переміщувані дані
Так
Так
Ні
Ні
Можуть передавати керування іншим типам SVC-підпрограм
Не з'являється
будь-які
Можуть викликати WAIT
Ні
Так, використовуючи WAIT (SVC 1)
Можуть викликати POST
Так, при використанні точки входу Post
Так, використовуючи POST (SVC 2)
Можуть диспетчеризувати синхронний вихід
Так, при використанні точки входу Exit Effector
Так, використовуючи SYNCH (SVC 12)
Можуть викликати аварійне закінчення
Так, при використанні точки входу Abterm
Так, використовуючи ABEND (SVC 13)
Таблицю створено на основі довідника IBM System/360 Operating System: System Programmer's Guide C28-6550-2[1]
Список системних викликів у OS/360 версії 21.6
У таблиці наведено системні виклики операційної системи OS/360 версії 21.6, описані у публікації «IBM Field Engineering Handbook: System/360 Operating System» (липень 1971-го року)[2].