Qu'est-ce qu'un appel système dans Linux et comment cela fonctionne-t-il avec des exemples

Qu'est-ce qu'un appel système dans Linux et comment cela fonctionne-t-il avec des exemples

Un appel système est une fonction qui permet à un processus de communiquer avec le noyau Linux. C'est juste un moyen programmatique pour un programme informatique de commander une installation à partir du noyau du système d'exploitation. Les appels système exposent les ressources du système d'exploitation aux programmes utilisateur via une API (interface de programmation d'application). Les appels système ne peuvent accéder qu'au cadre du noyau. Des appels système sont nécessaires pour tous les services qui ont besoin de ressources.

Le noyau Linux est un logiciel propriétaire qui charge et fonctionne sur l'appareil au stade le moins potentiel. Son travail consiste à organiser tout ce qui se passe sur la machine, du clavier, du lecteur de disque et des événements de réseau à fournir des tranches de temps pour une exécution simultanée de différents programmes. La séparation des logiciels et du matériel crée une bulle sécurisée qui améliore la protection et la fiabilité. Les applications sans privilégiés ne sont pas en mesure d'atteindre le stockage des autres programmes, et si l'on échoue, le noyau suspend le processus afin qu'il n'endommage pas l'ensemble du système.

Wrapper à la plaquette mince:

Les appels du système Linux ne sont pas rendus explicitement au noyau dans certains programmes. Presque tous les programmes utilisent la bibliothèque C de base et offrent un wrapper léger mais essentiel sur les appels du système Linux. Le référentiel fournit ensuite l'appel de machine Linux qui l'accompagne après s'être assuré que les paramètres de fonction sont traduits dans le bon enregistrement de processeur. Chaque fois que l'emballage reçoit des données de l'appel système, il l'analyse et le contribue clairement au programme. Toute opération d'interactive machine dans un programme est finalement convertie en un appel système. Alors, jetons un coup d'œil à certains d'entre eux. Il y a une longue liste d'appels système Linux que nous pouvons utiliser dans notre système Linux. Voici la liste de certains appels système Linux communs et principalement utilisés.

  • Ouvrir
  • Fermer
  • Exécutif
  • Écrire
  • Lire
  • Lseek
  • Sélectionner

Discutons de certains des appels du système Linux en utilisant le langage C de notre article pour obtenir la main avec.

Appel du système ouvert:

Nous pouvons utiliser l'appel du système «ouvert» dans notre distribution Linux pour ouvrir rapidement le document, que nous spécifierons dans notre code de la langue C. Lancez d'abord le terminal de commande. Vous pouvez utiliser le raccourci «Ctrl + Alt + T». Supposons que vous ayez un fichier texte «Test.txt ”dans le répertoire domestique, et il contient du contenu. Ainsi, au début, vous devez créer un nouveau nom de fichier de type C «Nouveau.C ”dans le terminal via un éditeur Nano. Par conséquent, essayez l'instruction simple ci-dessous Nano.

$ nano nouveau.c

Maintenant, l'éditeur Nano a été lancé. Tapez le code décrit ci-dessous. Nous avons deux descripteurs de fichiers dans le code. Les deux fichiers peuvent être ouverts à l'aide de l'appel Open System. Le premier descripteur contient un appel de lecture, et le second contient la fonction d'écriture. Le premier appel ouvert est d'ouvrir le fichier texte «Test.txt »et enregistrer son contenu dans le descripteur de fichiers« FD ». Le deuxième appel système ouvert crée un fichier nommé «Target». Le document «cible» a été remboursé dans un descripteur de fichiers «FD1». L'instruction d'écriture est utilisée pour transcrire les octets des données dans le tampon. Appuyez sur «Ctrl + S» pour enregistrer le code et appuyez sur la touche de raccourci «Ctrl + X» pour quitter le fichier.

Exécutez l'instruction de compilation GCC pour compiler ce code C.

$ gcc nouveau.c

Exécutons le code en utilisant le simple «A.Out ”Requête dans la coquille comme suit:

$ ./un.dehors

Les données de sortie ont été transmises au fichier «cible». Vérifions le fichier «cible» à l'aide de la requête «Cat». L'écran de sortie affiche les données de 20 caractères dans le fichier «cible».

$ cible de chat

Appel système exec:

L'appel du système EXEC est en cours de remise pour exécuter un fichier qui est actuellement en cours de traitement. L'ancien fichier exécutable est substitué et le fichier actuel est exploité chaque fois que l'exécutif est appelé. En utilisant un appel système EXEC, nous pouvons supposer que cela écrasera l'ancien document ou application dans la boucle avec un nouveau. Un nouveau logiciel est utilisé pour remplacer l'ensemble du matériel du processus. Le document dont le titre est donné dans l'instruction chaque fois que l'invocation exec () est remplacée par la section d'informations utilisateur qui exécute l'appel du système exécutif () (). Ouvrez donc le terminal de commande et, à l'aide de l'éditeur Nano, créez un nouveau fichier de type C comme suit:

$ nano exp.c

L'éditeur a été ouvert maintenant. Écrivez l'ensemble du code de la langue C ci-dessous. Il y a trois bibliothèques principales incluses. Après cela, la fonction principale a été instanciée. L'instruction PRINT a affiché les données de chaîne et l'ID de processus du fichier «Exp.C ". La fonction getpid () a été utilisée à cet effet. Ensuite, nous avons un tableau de type de caractère avec certaines valeurs. L'appel système EXEC a été utilisé pour prendre le nom du fichier et le tableau au-dessus d'une ligne au-dessus comme argument. Maintenant le fichier «Bonjour.C ”sera traité. Après cela, une autre déclaration d'impression arrive jusqu'à présent, mais elle ne sera jamais exécutée. Appuyez sur «Ctrl + S» pour enregistrer ce fichier. Appuyez sur «Ctrl + X» pour quitter.

Il est maintenant temps de créer un autre fichier C, «Bonjour.C ”Utilisation de l'éditeur Nano. Utilisez la requête ci-dessous dans la coque pour le faire.

$ nano bonjour.c

Écrivez le code ci-dessous. Ce code contient deux instructions d'impression dans la fonction principale. Le premier est d'imprimer une chaîne donnée dedans, et la seconde est d'imprimer la chaîne tout en récupérant l'ID de processus du fichier actuellement utilisé, qui est «Bonjour.C ".

Compilons les deux fichiers les uns après les autres en utilisant GCC.

$ gcc -o exp.c
$ gcc -o bonjour bonjour.c

Lorsque nous exécutons l'EXP.Fichier C, il sortira la première instruction d'impression de l'EXP.Fichier C et les deux lignes d'impression du bonjour.c fichier.

$ ./ Exp

Conclusion:

Nous avons développé l'ensemble du concept des appels du système Linux et comment ils peuvent être utilisés dans votre système Linux. Nous avons utilisé Ubuntu 20.04 lors de la mise en œuvre de ce concept.