Разница между системным вызовом и вызовом функции

Разница между системным вызовом и вызовом функции
Разница между системным вызовом и вызовом функции

Видео: Разница между системным вызовом и вызовом функции

Видео: Разница между системным вызовом и вызовом функции
Видео: Урок 30. Системные вызовы ОС 2024, Июль
Anonim

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

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

Что такое системный вызов?

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

Что такое вызов функции?

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

В чем разница между системным вызовом и вызовом функции?

Системный вызов - это вызов подпрограммы, встроенной в систему, а вызов функции - это вызов подпрограммы внутри программы. В отличие от вызовов функций, системные вызовы используются, когда программе необходимо выполнить какую-то задачу, для которой у нее нет привилегий. Системные вызовы являются точками входа в ядро операционной системы и не связаны с программой (как вызовы функций). В отличие от системных вызовов, вызовы функций переносимы. Затраты времени на системный вызов больше, чем на вызов функции, поскольку должен иметь место переход между режимом пользователя и режимом ядра. Системные вызовы выполняются в адресном пространстве ядра, а вызовы функций - в адресном пространстве пользователя.

Рекомендуемые: