Системний виклик проти функціонального виклику
Типовий процесор виконує інструкції по черзі. Але можуть бути випадки, коли процесору доводиться припиняти поточну інструкцію та виконувати якусь іншу програму чи кодовий сегмент (проживаючи в іншому місці). Після цього процесор повертається до нормального виконання і продовжує там, де він припинився. Системний дзвінок та виклик функції - такі випадки. Системний виклик - це виклик до вбудованої в систему підпрограми. Виклик функції - це виклик до підпрограми в межах самої програми.
Що таке системний виклик?
Системні дзвінки надають програмам, що працюють на комп'ютері, інтерфейс для розмови з операційною системою. Коли програмі потрібно попросити послугу (на яку вона не має дозволу це робити сама) з ядра операційної системи, вона використовує системний виклик. Процеси на рівні користувача не мають таких же дозволів, як процеси, безпосередньо взаємодіючі з операційною системою. Наприклад, для спілкування з зовнішнім пристроєм вводу / виводу або для взаємодії з будь-якими іншими процесами програма використовує системні дзвінки.
Що таке функціональний виклик?
Виклик функції також називається викликом підпрограми. Підпрограма (також відома як процедура, функція, метод або рутина) є частиною більшої програми, яка відповідає за виконання конкретного завдання. Більш велика програма може виконати велике навантаження, а підпрограма може виконувати просто просте завдання, яке також не залежить від кодування програми, що залишилася. Функція кодується таким чином, що її можна викликати кілька разів і з різних місць (навіть зсередини інших функцій). Коли функція викликається, процесор може переходити туди, де знаходиться код цієї функції, і виконувати вказівки функції по черзі. Після завершення функцій процесор повернеться туди, де він зупинився, і продовжить виконання, починаючи з наступної інструкції. Функції - чудовий інструмент для повторного використання коду. Багато сучасних мов програмування підтримують функції. Сукупність функцій називається бібліотекою. Бібліотеки часто використовуються як засоби обміну та торгівлі програмним забезпеченням. У деяких випадках вся програма може бути послідовністю підпрограм (наприклад, компіляція з потоковим кодом).
Яка різниця між системним викликом та функціональним викликом?
Системний виклик - це виклик підпрограми, вбудованої в систему, тоді як виклик функції - виклик підпрограми в рамках програми. На відміну від викликів функцій, системні виклики використовуються тоді, коли програмі необхідно виконати якесь завдання, на яке вона не має привілеїв. Системні дзвінки - це точки входу в ядро операційної системи і не пов'язані з програмою (наприклад, виклики функцій). На відміну від системних викликів, функціональні дзвінки є портативними. Час накладних витрат системного виклику більше, ніж накладних витрат для виклику функції, оскільки повинен відбуватися перехід між режимом користувача та режимом ядра. Системні виклики виконуються в адресному просторі ядра, тоді як виклики функцій виконуються в адресному просторі користувача.