Dans le monde actuel, les systèmes d'ex­ploi­ta­tion doivent offrir aux uti­li­sa­teurs non seulement le plus grand confort possible, mais aussi une stabilité et une sécurité maximales. Les dé­ve­lop­peurs de systèmes tels que Linux ou Windows sont donc soucieux, entre autres, de minimiser le risque de com­pli­ca­tions po­ten­tielles du système dues à une né­gli­gence per­son­nelle in­vo­lon­taire ou à des attaques ciblées de l'ex­té­rieur. Une des mesures les plus im­por­tantes prises à cet effet est la sé­pa­ra­tion stricte du noyau du système d'ex­ploi­ta­tion et des pro­grammes d'ap­pli­ca­tion ou des processus uti­li­sa­teur. Cela signifie que les pro­grammes et les processus qui n'ap­par­tien­nent pas au système n'ont pas d'accès direct à l'unité centrale et à la mémoire, mais dépendent de ce que l'on appelle les system calls.

Qu'est-ce qui se cache exac­te­ment derrière ces appels et quels sont les types d'appels ?

Qu'est-ce qu'un appel système (Syscall) ?

Un appel système ou syscall est une méthode utilisée par les pro­grammes d'ap­pli­ca­tion pour com­mu­ni­quer avec le noyau du système. Dans les systèmes d'ex­ploi­ta­tion modernes, cette méthode est utilisée lors­qu'une ap­pli­ca­tion ou un processus uti­li­sa­teur a besoin de trans­mettre des in­for­ma­tions au matériel, à d'autres processus ou au noyau lui-même, ou de lire des in­for­ma­tions à partir de ceux-ci. Ainsi, un tel appel est le lien entre le mode uti­li­sa­teur (User Mode) et le mode noyau (Kernel mode), les deux modes de privilège et de sécurité es­sen­tiels pour le trai­te­ment des ins­truc­tions du CPU dans les systèmes in­for­ma­tiques.

Tant qu'un appel système n'a pas été traité et les données cor­res­pon­dantes trans­mises ou reçues, le noyau système prend le contrôle du programme ou du processus. L'exé­cu­tion est in­ter­rom­pue pendant cette période. Une fois que l'action demandée par un appel système a été effectuée, le noyau abandonne le contrôle et le code de programme continue à partir du point où le syscall a été pré­cé­dem­ment lancé.

Note

Une majorité de systèmes d'ex­ploi­ta­tion modernes four­nis­sent certains appels système sous la forme de fonctions de bi­blio­thèque qui peuvent être exécutées via une interface de pro­gram­ma­tion également fournie. Cela facilite gran­de­ment le travail des dé­ve­lop­peurs de logiciels, car il n'est plus né­ces­saire de connaître avec précision le fonc­tion­ne­ment interne du logiciel système concerné.

À quoi servent les appels système ?

La nécessité des appels système est étroi­te­ment liée au modèle moderne de système d'ex­ploi­ta­tion avec mode uti­li­sa­teur et mode noyau, qui a été introduit en réponse au nombre croissant de processus s'exé­cu­tant si­mul­ta­né­ment dans la mémoire prin­ci­pale (RAM) des or­di­na­teurs. Ainsi, chaque processus in­di­vi­duel dispose de ses propres données avec des droits d'accès spéciaux, et ce n'est qu'avec une ré­par­ti­tion équitable des res­sources qu'il est possible d'exé­cu­ter cor­rec­te­ment le système et les pro­grammes d'ap­pli­ca­tion.

Le mode pri­vi­lé­gié supérieur du noyau est ici l'ins­tance de contrôle décisive, car - comme déjà indiqué - non seulement tous les services et processus du système lui-même y sont exécutés, mais aussi les actions critiques du système des pro­grammes d'ap­pli­ca­tion qui sont bloqués en mode uti­li­sa­teur. La condition préalable est le system call approprié par le programme respectif. Dans la plupart des cas, il s'agit sim­ple­ment d'accéder à la puissance de calcul (CPU) ou aux struc­tures de mémoire (mémoire de travail et espace disque dur). Par exemple, si une ap­pli­ca­tion nécessite plus de puissance de calcul ou d'espace de stockage, ou si un fichier non spé­ci­fique à l'ap­pli­ca­tion est demandé (ouverture, lecture, édition, etc.), les appels système sont in­dis­pen­sables.

En résumé

On peut dire de manière sim­pli­fiée qu'un appel système est né­ces­saire chaque fois qu'un processus s'exé­cu­tant en mode uti­li­sa­teur veut exécuter une fonction qui n'est exé­cu­table qu'en mode noyau.

Quels sont les types d'appels système ?

En principe, tous les appels système peuvent être utilisés comme unités de commande pour la com­mu­ni­ca­tion entre les processus d'ap­pli­ca­tion et le système d'ex­ploi­ta­tion ou le matériel, comme mentionné ci-dessus. En outre, les appels de système établis peuvent également être classés en dif­fé­rentes ca­té­go­ries, les cinq types de clas­si­fi­ca­tion suivants étant notamment établis :

  • Contrôle des processus : tous les processus d'un système in­for­ma­tique doivent être contrôlés de manière à pouvoir être arrêtés ou contrôlés par d'autres processus à tout moment. À cette fin, les appels système de cette catégorie sur­veil­lent, par exemple, le lancement ou l'exé­cu­tion ou l'arrêt/la fin des processus.
  • Gestion des fichiers : les appels système de ce type sont né­ces­saires aux pro­grammes d'ap­pli­ca­tion pour accéder aux opé­ra­tions typiques des fichiers. Ces méthodes de ma­ni­pu­la­tion de fichiers com­pren­nent entre autres « create » (créer), « delete » (supprimer), « open » (ouvrir), « close » (fermer), « write » (écrire) et « read » (lire).
  • Gestion des pé­ri­phé­riques : la catégorie « Gestion des pé­ri­phé­riques » comprend tous les appels système qui servent à demander ou à gérer les res­sources ma­té­rielles né­ces­saires, comme la puissance de calcul ou l'espace de stockage.
  • Gestion de l'in­for­ma­tion : les processus sont liés à une grande quantité d'in­for­ma­tion, où la rapidité et l'in­té­grité jouent un rôle important. Pour les échanger ou les demander, les pro­grammes d'ap­pli­ca­tion utilisent des appels système pour la gestion ou la main­te­nance des in­for­ma­tions.
  • Com­mu­ni­ca­tion entre les processus : une in­te­rac­tion fluide entre le système d'ex­ploi­ta­tion et les dif­fé­rents pro­grammes d'ap­pli­ca­tion actifs n'est garantie que si les dif­fé­rents processus sont bien coor­don­nés. Pour ce faire, la com­mu­ni­ca­tion via des system calls cor­res­pon­dants est in­dis­pen­sable.

Windows et Linux : les appels système en un coup d'œil

La mesure dans laquelle les types d'appels système énumérés peuvent être mis en œuvre ou utilisés dépend prin­ci­pa­le­ment du matériel et de l'ar­chi­tec­ture du système utilisés, mais aussi du système d'ex­ploi­ta­tion utilisé. Sous Linux, par exemple, les appels système sont stockés di­rec­te­ment dans le noyau Linux dans la « System Call Table ». Chaque entrée de cette table se voit attribuer un numéro unique et une fonction spé­ci­fique à exécuter en mode noyau. Pour exécuter un Linux system call, le numéro cor­res­pon­dant est chargé dans la mémoire du CPU puis chargé par l'in­ter­rup­tion lo­gi­cielle 128 (appel d'une sous-fonction du système d'ex­ploi­ta­tion qui in­ter­rompt l'exé­cu­tion du programme en mode uti­li­sa­teur).

< iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/KqgMG­ZyiLnU" fra­me­bor­der="0" allow="ac­ce­le­ro­me­ter ; autoplay ; encrypted-media ; gyroscope ; picture-in-picture" al­low­fulls­creen></iframe>

La fonc­tion­na­lité est similaire dans les systèmes Windows, où un appel système est toujours d'abord converti en interne : une fonction de bi­blio­thèque de l'API Windows (WinAPI en abrégé) devient ainsi au­to­ma­ti­que­ment un appel système lisible par le système d'ex­ploi­ta­tion, incluant un numéro unique qui se réfère à la fonction souhaitée en mode noyau.

Quelques exemples d'appels système Windows et Linux concrets sont donnés dans le tableau suivant :

Type de l'appel système Fonction Linux Windows
Contrôle de processus Créer un processus fork() Crea­te­Pro­cess()
Contrôle de processus Processus final exit() Exit­Pro­cess()
Gestion des fichiers Créer/ouvrir un fichier open() Crea­te­File()
Gestion des fichiers Lire le fichier read() ReadFile()
Gestion des fichiers Éditer le fichier write() WriteFile()
Gestion des fichiers Fermer le fichier close() Clo­se­Handle()
Gestion des appareils Ouvrir le pé­ri­phé­rique read() Read­Con­sole()
Gestion des appareils Fermer le pé­ri­phé­rique close() Clo­se­Con­sole()
Gestion de l'in­for­ma­tion Dé­fi­ni­tion d'un in­ter­valle de temps spé­ci­fique alarm() SetTimer()
Gestion de l'in­for­ma­tion Pause (p. ex. d'un processus) sleep() Sleep()
Com­mu­ni­ca­tion Create Pipe (tampon pour le flux de données entre deux processus) pipe() Crea­te­Pipe()
Com­mu­ni­ca­tion Création d'une mémoire partagée (Shared Memory) shmget() Crea­te­Fi­le­Map­ping()
Conseil

Vous re­cher­chez un matériel puissant pour gérer vos processus d'ap­pli­ca­tion ? Les solutions VPS de IONOS vous offrent des serveurs sur la base d’un Cloud à la pointe de la tech­no­lo­gie à un prix ex­cep­tion­nel - avec Windows ou Linux comme système d'ex­ploi­ta­tion.

Aller au menu principal