Системний виклик проти переривання
Типовий процесор виконує інструкції по черзі. Але можуть бути випадки, коли процесору доводиться тимчасово зупинятись і утримувати поточну інструкцію та виконувати якусь іншу програму або сегмент коду (що знаходиться в іншому місці). Після цього процесор повертається до нормального виконання та продовжує роботу з того місця, де його не було. Системний дзвінок та переривання - такі випадки. Системний виклик - це виклик до вбудованої в систему підпрограми. Перерва - це переривання програмного контролю, викликане зовнішніми апаратними подіями.
Що таке системний виклик?
Системні дзвінки надають програмам, що працюють на комп'ютері, інтерфейс для розмови з операційною системою. Коли програмі потрібно запитати послугу (на яку вона сама не має дозволу) у ядра операційної системи, вона використовує системний виклик. Процеси на рівні користувача не мають таких же дозволів, як процеси, безпосередньо взаємодіючі з операційною системою. Наприклад, для спілкування із зовнішнім пристроєм вводу / виводу або для взаємодії з будь-якими іншими процесами програма повинна використовувати системні дзвінки.
Що таке Перерва?
Під час звичайного виконання комп’ютерної програми можуть траплятися події, які можуть спричинити тимчасове припинення роботи процесора. Такі події називаються перериваннями. Перебої можуть бути викликані помилками програмного забезпечення або обладнання. Апаратні переривання називаються (просто) Перериваннями, тоді як програмні переривання називаються Винятками або Пастки. Після підняття переривання (програмного чи апаратного забезпечення) контроль передається спеціальній підпрограмі під назвою ISR (Interrupt Service Routine), яка може обробляти умови, які викликані перериванням.
Як було сказано вище, термін «Переривання» зазвичай зарезервований для апаратних перерв. Вони є перервами управління програмою, викликаними зовнішніми апаратними подіями. Тут зовнішні засоби, зовнішні для процесора. Апаратні переривання зазвичай надходять із багатьох різних джерел, таких як чіп таймера, периферійні пристрої (клавіатури, миша тощо), порти введення / виводу (послідовний, паралельний тощо), дисководи, диски диска, годинник CMOS, карти розширення (звукова карта, відео картка тощо). Це означає, що апаратні переривання майже ніколи не трапляються через якусь подію, пов’язану з виконуваною програмою. Наприклад, така подія, як натискання клавіші на клавіатурі користувачем або внутрішній апаратний таймер вичерпання, може призвести до такого переривання і може повідомити ЦП, що певний пристрій потребує певної уваги. У такій ситуації, що центральний процесор зупинить все, що він робив (тобто призупиняє поточну програму), надає необхідну послугу пристрою та повернеться до звичайної програми.
Яка різниця між системним викликом та перериванням?
Системний виклик - це виклик підпрограми, вбудованої в систему, тоді як Interrupt - подія, яка змушує процесор тимчасово утримувати поточне виконання. Однак одна основна відмінність полягає в тому, що системні виклики є синхронними, тоді як переривання - ні. Це означає, що системні дзвінки відбуваються у визначений час (зазвичай це визначає програміст), але переривання може статися в будь-який час через несподівану подію, таку як натискання клавіші на клавіатурі користувачем. Тому, коли колись відбувається системний виклик, процесору залишається пам'ятати лише, куди слід повернутися, але в разі переривання процесор повинен пам’ятати як місце повернення, так і стан системи. На відміну від системного виклику, переривання зазвичай не має нічого спільного з поточною програмою.