Réponses:
Il n'y a pas vraiment 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é au moment de l'exécution pour déterminer l'emplacement de la fonction à appeler.
Les appels système sont des appels de noyau de bas niveau gérés par le noyau.
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.
Les appels système sont gérés directement par le noyau.
Les appels de bibliothèque sont gérés par une bibliothèque dynamique (ou liée statiquement). Le programme appelant la bibliothèque doit d'abord importer cette bibliothèque, avant que l'appel ne fonctionne. Les appels de bibliothèque eux-mêmes peuvent utiliser des appels système.
Parfois, les bibliothèques sont fournies comme "frontaux" aux appels système, pour fournir des fonctionnalités supplémentaires ou une facilité d'utilisation non fournie par le noyau.
Les appels système sont des fonctions que le système d'exploitation fournit aux applications à utiliser. Alors que les fonctions comme celles de math.h, string.h, etc. sont celles qui n'ont rien à voir avec l'interfaçage avec le système d'exploitation.
Fondamentalement, il existe deux modes de visualisation du noyau Linux.
Tout noyau Linux bascule entre ces deux modes. Généralement, les appels de bibliothèque sont exécutés en mode utilisateur et les appels système sont exécutés en mode noyau . En termes de système d'exploitation, le mode noyau est de nature atomique et son en mode Supervision. Presque tous les appels de bibliothèque ont besoin de l'aide du noyau pour effectuer ses tâches. Chaque appel de bibliothèque appelle à son tour l'appel système sous-jacent. Rendons l'idée plus claire en utilisant l'exemple suivant
Chaque fois que dans le programme c, vous utilisez fopen () du fichier d'en-tête. L'environnement de programmation appelle l'appel système open () à partir du noyau et effectue sa tâche d'ouverture de fichier. Encore une fois après l'exécution, le flux de contrôle revient en mode utilisateur.
Pour illustrer cela, effectuez les tâches suivantes
man man
: vous trouverez ici une section du manuel de 1 à 8 chacune ayant un objectif spécifique.man fopen
: vous verrez une réponse comme FOPEN(3)
, ici 3 indique la section manuelle 3 des pages de manuel qui est la section des appels de c-library.À faire man open
: vous verrez une réponse comme OPEN(2)
, ici 2 indique la section manuelle 2 des pages de manuel qui est la section des appels système.
J'espère que vous avez compris le concept.
Ajoutant simplement aux différences mentionnées ici dans d'autres réponses.
Puisqu'un appel de bibliothèque est simplement un appel de fonction, aucun passage de l'espace utilisateur à l'espace noyau ne se produit. D'un autre côté, un appel système entraîne un basculement de l'espace utilisateur vers l'espace noyau car l'appel système fonctionne en mode noyau.