Системный вызов против вызова функции
Типичный процессор выполняет инструкции одну за другой. Но могут быть случаи, когда процессор должен остановить текущую инструкцию и выполнить некоторую другую программу или сегмент кода (находящийся в каком-то другом месте). После этого процессор возвращается к нормальному выполнению и продолжает с того места, где остановился. Системный вызов и вызов функции являются такими случаями. Системный вызов - это вызов подпрограммы, встроенной в систему. Вызов функции - это вызов подпрограммы в самой программе.
Что такое системный вызов?
Системные вызовы предоставляют программам, работающим на компьютере, интерфейс для связи с операционной системой. Когда программе необходимо запросить службу (для которой она не имеет разрешения сделать это самостоятельно) из ядра операционной системы, она использует системный вызов. Процессы уровня пользователя не имеют таких же разрешений, как процессы, напрямую взаимодействующие с операционной системой. Например, для связи с внешним устройством ввода-вывода или взаимодействия с другими процессами программа использует системные вызовы..
Что такое вызов функции?
Вызов функции также называется вызовом подпрограммы. Подпрограмма (также известная как процедура, функция, метод или процедура) является частью более крупной программы, которая отвечает за выполнение определенной задачи. Большая программа может выполнять большую рабочую нагрузку, а подпрограмма может выполнять простую задачу, которая также не зависит от оставшегося программного кодирования. Функция закодирована таким образом, что ее можно вызывать несколько раз и из разных мест (даже из других функций). Когда функция вызывается, процессор может перейти туда, где находится код функции, и выполнить инструкции функции одну за другой. После завершения функций процессор вернется в исходное положение и продолжит выполнение, начиная со следующей инструкции. Функции являются отличным инструментом для повторного использования кода. Многие современные языки программирования поддерживают функции. Коллекция функций называется библиотекой. Библиотеки часто используются как средства обмена и торговли программным обеспечением. В некоторых случаях вся программа может быть последовательностью подпрограмм (например, компиляция потокового кода).
В чем разница между системным вызовом и вызовом функции?
Системный вызов - это вызов подпрограммы, встроенной в систему, а системный вызов - это вызов подпрограммы в программе. В отличие от вызовов функций, системные вызовы используются, когда программе необходимо выполнить какую-то задачу, для которой у нее нет привилегий. Системные вызовы являются точками входа в ядро операционной системы и не связаны с программой (например, вызовы функций). В отличие от системных вызовов, вызовы функций являются переносимыми. Затраты времени на системный вызов превышают накладные расходы на вызов функции, поскольку должен происходить переход между режимом пользователя и режимом ядра. Системные вызовы выполняются в адресном пространстве ядра, а вызовы функций - в адресном пространстве пользователя..