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

What Is System Call Linux



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 (Application Programming Interface). Les appels système ne peuvent accéder qu'au framework du noyau. Les appels système sont nécessaires pour tous les services nécessitant des ressources.

Le noyau Linux est un logiciel propriétaire qui se 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 réseau à la fourniture de tranches de temps pour l'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 non privilégiées sont incapables d'atteindre le stockage d'un autre programme, et en cas d'échec, le noyau suspend le processus afin qu'il n'endommage pas l'ensemble du système.







Emballage mince de gaufrette :

Les appels 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 système Linux. Le référentiel fournit ensuite l'appel machine Linux associé après s'être assuré que les paramètres de fonctionnalité sont traduits dans les registres de processeur appropriés. Chaque fois que le wrapper reçoit des données de l'appel système, il les analyse et les contribue clairement au programme. Toute opération interactive machine dans un programme est finalement convertie en un appel système. Alors, jetons un coup d'œil à certains d'entre eux. Il existe 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 courants et les plus utilisés.



  • Ouvert
  • proche
  • Exécutif
  • Écrivez
  • Lire
  • Chercher
  • Sélectionner

Discutons de certains des appels système Linux utilisant le langage C dans notre article pour nous familiariser avec.



Appel système ouvert :

Nous pouvons utiliser l'appel système Open dans notre distribution Linux pour ouvrir rapidement le document, que nous spécifierons dans notre code de langage 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 personnel et qu'il contienne du contenu. Ainsi, au début, vous devez créer un nouveau nom de fichier de type C new.c dans le terminal via l'éditeur nano. Par conséquent, essayez l'instruction nano ci-dessous.





$nanonouveau.c

Maintenant, l'éditeur Nano a été lancé. Tapez-y le code ci-dessous. Nous avons deux descripteurs de fichiers dans le code. Les deux fichiers peuvent être ouverts à l'aide de l'appel système open. Le premier descripteur contient un appel de lecture et le second contient la fonction d'écriture. Le premier appel ouvert ouvre le fichier texte test.txt et enregistre son contenu dans le descripteur de fichier fd. Le deuxième appel système ouvert crée un fichier nommé target. La cible du document a été remboursée à un descripteur de fichier fd1. L'instruction d'écriture est utilisée pour transcrire les octets de 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.

$gccnouveau.c

Exécutons le code en utilisant la simple requête a.out dans le shell comme suit :

$./a.out

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.

$chatcible

Appel système exécutif :

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

$nanoexp.c

L'éditeur est maintenant ouvert. Écrivez tout le code du langage C ci-dessous. Il contient trois bibliothèques principales. Après cela, la fonction principale a été instanciée. L'instruction print a montré les données de chaîne et l'ID de processus du fichier exp.c. La fonction getpid() a été utilisée à cette fin. Ensuite, nous avons un tableau de types de caractères avec quelques valeurs. L'appel système exec a été utilisé pour prendre le nom du fichier et le tableau d'une ligne ci-dessus comme argument. Le fichier hello.c va maintenant être traité. Après cela, une autre instruction print 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, hello.c à l'aide de l'éditeur nano. Utilisez la requête ci-dessous dans le shell pour le faire.

$nanoBonjour c

Écrivez-y le code ci-dessous. Ce code contient deux instructions d'impression dans la fonction principale. Le premier imprime uniquement une chaîne qui y est donnée, et le second imprime la chaîne tout en récupérant l'ID de processus du fichier actuellement utilisé, qui est hello.c.

Compilons les deux fichiers l'un après l'autre en utilisant gcc.

$gcc–o exp exp.c

$gcc–O bonjour bonjour.c

Lorsque nous exécutons le fichier exp.c, il affichera la première instruction d'impression du fichier exp.c et les deux lignes d'impression du fichier hello.c.

$./exp

Conclusion:

Nous avons développé tout le concept des appels 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.