Ключевая разница - системный вызов и библиотечный вызов
Системный вызов и вызов библиотеки связаны с операционной системой компьютера. Компьютер может работать в двух режимах; а именно, пользовательский режим и режим ядра. Ключевое различие между системным вызовом и библиотечным вызовом заключается в том, что системный вызов - это функция, предоставляемая ядром для входа в режим ядра для доступа к аппаратным ресурсам, тогда как библиотечный вызов - это функция, предоставляемая программными библиотеками. Например, open() - это системный вызов, а fopen() - библиотечный вызов. Когда fopen() в программе C, используется библиотека заголовков stdio.h. Затем ядро использует системный вызов «open (),» для завершения задачи открытия файла.
Что такое системный вызов?
Компьютер работает в двух режимах. Это пользовательский режим и режим ядра. Некоторые процессы выполняются в компьютерной системе. Процесс – это выполняемая программа. Когда прикладные программы работают, компьютер находится в пользовательском режиме. Если требуется аппаратный ресурс, процесс отправляет запрос ядру, и компьютер переходит в режим ядра. Эти запросы отправляются с помощью системных вызовов. Компьютер часто переключается между этими двумя режимами. Когда задача завершена, компьютер возвращается в пользовательский режим из режима ядра. Этот переход режима известен как «переключение контекста». Системные вызовы - это интерфейс между операционной системой и пользовательскими программами.
Рисунок 01: Системные вызовы
Существуют различные типы системных вызовов. Создать, завершить процесс, выполнить процесс, выделить и освободить память можно с помощью «Системных вызовов управления процессами». «Системные вызовы управления файлами» можно использовать для создания, удаления, чтения, записи, открытия и закрытия файлов. Процесс требует некоторых ресурсов для завершения выполнения. Запрос и освобождение устройств выполняются через «Системные вызовы управления устройствами». «Системные вызовы управления информацией» можно использовать для получения системных данных, а также для получения атрибутов процессов и устройств. Процессы взаимодействуют друг с другом. Это общение осуществляется с использованием «системных вызовов связи». Отправка информации о состоянии, создание и удаление коммуникационных соединений, а также отправка и получение сообщений могут осуществляться с помощью системных вызовов связи.
Что такое звонок в библиотеку?
Вызов библиотеки - это функция, предоставляемая библиотеками программирования. Перед вызовом библиотеки эту библиотеку следует импортировать. Вызов библиотеки может зависеть от системного вызова.
В языке C эти функции можно использовать в программе, включив заголовочные файлы. Заголовочные файлы включаются с помощью директивы предварительной обработки include. Препроцессор сканирует указанный файл, прежде чем продолжить работу с остальной частью исходного файла. Ниже приведены некоторые общие функции библиотеки. Библиотека «math.h» включает функции, связанные с математическими операциями. Библиотека «stdio.h» предоставляет функции для выполнения ввода и вывода. «fopen()» открывает указанное имя файла. «fclose()» закрывает файл. «printf() используется для отправки форматированного вывода на стандартный вывод. «fprintf()» используется для отправки форматированного вывода в поток. «scanf()» используется для чтения форматированного ввода из стандартного ввода. «stdlib.h» предоставляет функции для управления памятью, а «time.h» предоставляет функции для управления временем и датой.
В чем сходство между системным вызовом и библиотечным вызовом?
Оба связаны с операционной системой
В чем разница между системным вызовом и библиотечным вызовом?
Системный вызов против библиотечного вызова |
|
Системный вызов - это функция, предоставляемая ядром для входа в режим ядра для доступа к аппаратным ресурсам. | Вызов библиотеки - это функция, предоставляемая библиотекой программирования. |
Режим исполнения | |
Системный вызов выполняется в режиме ядра. | Вызов библиотеки выполняется в пользовательском режиме. |
Переключение режимов | |
Переключение системного вызова из пользовательского режима в режим ядра. | В вызове библиотеки нет переключения из пользовательского режима в режим ядра. |
Портативность | |
Системный вызов не переносим. | Вызов библиотеки переносим. |
Сводка – Системный вызов против библиотечного вызова
Системный вызов реализован в ядре, а библиотечный вызов реализован в пользовательском пространстве. Разница между системным вызовом и библиотечным вызовом заключается в том, что системный вызов - это функция, предоставляемая ядром для входа в режим ядра для доступа к аппаратным ресурсам, а библиотечный вызов - это функция, предоставляемая программными библиотеками. Вызовы библиотеки могут зависеть от системных вызовов для выполнения задачи. open(), fork(), cd() - вот некоторые примеры системных вызовов. fopen(), fprintf() - примеры библиотечных вызовов.
Загрузить PDF-версию System Call vs Library Call
Вы можете загрузить PDF-версию этой статьи и использовать ее в автономном режиме в соответствии с примечанием к цитированию. Пожалуйста, загрузите PDF-версию здесь. Разница между системным вызовом и библиотечным вызовом