Різниця між системним викликом та функціональним викликом

Системний виклик проти функціонального виклику

Типовий процесор виконує інструкції по черзі. Але можуть бути випадки, коли процесору доводиться припиняти поточну інструкцію та виконувати якусь іншу програму чи кодовий сегмент (проживаючи в іншому місці). Після цього процесор повертається до нормального виконання і продовжує там, де він припинився. Системний дзвінок та виклик функції - такі випадки. Системний виклик - це виклик до вбудованої в систему підпрограми. Виклик функції - це виклик до підпрограми в межах самої програми.

Що таке системний виклик?

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

Що таке функціональний виклик?

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

Яка різниця між системним викликом та функціональним викликом?

Системний виклик - це виклик підпрограми, вбудованої в систему, тоді як виклик функції - виклик підпрограми в рамках програми. На відміну від викликів функцій, системні виклики використовуються тоді, коли програмі необхідно виконати якесь завдання, на яке вона не має привілеїв. Системні дзвінки - це точки входу в ядро ​​операційної системи і не пов'язані з програмою (наприклад, виклики функцій). На відміну від системних викликів, функціональні дзвінки є портативними. Час накладних витрат системного виклику більше, ніж накладних витрат для виклику функції, оскільки повинен відбуватися перехід між режимом користувача та режимом ядра. Системні виклики виконуються в адресному просторі ядра, тоді як виклики функцій виконуються в адресному просторі користувача.