web-dev-qa-db-fra.com

Quelle est la différence entre un appel de bibliothèque et un appel système sous Linux?

J'aimerais savoir quelle est la différence entre un appel de bibliothèque et un appel système sous Linux. Tous les pointeurs pour une bonne compréhension des concepts des deux seront grandement appréciés.

13
Sen

Il n'y a pas vraiment une chose comme un "appel de bibliothèque". Vous pouvez appeler une fonction liée à une bibliothèque partagée. Et cela signifie simplement que le chemin de la bibliothèque est recherché sur l'exécution pour déterminer l'emplacement de la fonction à appeler.

Les appels système sont des appels de noyau de niveau bas gérés par le noyau.

9
Falmarri

Si vous tapez man man Dans votre shell, vous verrez la liste des sections manuelles

2 appels système (fonctions fournies par le noyau)

3 appels de bibliothèque (fonctions dans les bibliothèques de programme)

Par exemple, vous trouverez chmod dans la section 2 du manuel lors de la frappe man chmod. Et fprintf dans la section 3.

8
uloBasEI

Les appels système sont traités directement par le noyau.

Les appels de bibliothèque sont gérés par une bibliothèque dynamique (ou statiquement liée). Le programme effectuant l'appel de la bibliothèque doit d'abord importer cette bibliothèque, avant que l'appel ne fonctionne. Les appels de bibliothèque peuvent utiliser des appels système.

Parfois, les bibliothèques sont fournies sous forme de "fronts" aux appels système, pour fournir une fonctionnalité supplémentaire ou une facilité d'utilisation non fournie par le noyau.

3
LawrenceC

Appels système sont des fonctions que le système d'exploitation prévoit des applications à utiliser. Alors que les fonctions comme celles de Math.H, String.h, etc. sont celles qui n'ont rien à voir avec l'interface avec le système d'exploitation.

1
yasouser

Il suffit d'ajouter aux différences mentionnées ici dans d'autres réponses.

Étant donné qu'un appel de bibliothèque est simplement un appel de fonction, aucun interrupteur d'espace utilisateur à l'espace du noyau se produit. D'autre part, un appel système entraîne un passage d'un espace utilisateur à l'espace du noyau car l'appel système fonctionne en mode noyau.

1
cout_display_name