Un appel système est un moyen pour un programme utilisateur d'interagir avec le système d'exploitation. Le programme demande plusieurs services et le système d'exploitation répond en appelant une série d'appels système pour satisfaire la demande. Un appel système peut être écrit en langage assembleur ou dans un langage de haut niveau tel que C ou Pascal . Les appels système sont des fonctions prédéfinies que le système d'exploitation peut appeler directement si un langage de haut niveau est utilisé.
Dans cet article, vous découvrirez les appels système dans le système d'exploitation et discuterez de leurs types et bien d'autres choses.
Qu'est-ce qu'un appel système ?
Un appel système est une méthode permettant à un programme informatique de demander un service au noyau du système d'exploitation sur lequel il s'exécute. Un appel système est une méthode d'interaction avec le système d'exploitation via des programmes. Un appel système est une requête d'un logiciel informatique adressée au noyau d'un système d'exploitation.
Le Interface de programme d'application (API) connecte les fonctions du système d'exploitation aux programmes utilisateur. Il agit comme un lien entre le système d'exploitation et un processus, permettant aux programmes au niveau utilisateur de demander les services du système d'exploitation. Le système du noyau n'est accessible qu'à l'aide d'appels système. Les appels système sont requis pour tous les programmes qui utilisent des ressources.
Comment sont effectués les appels système ?
Lorsqu'un logiciel informatique doit accéder au noyau du système d'exploitation, il effectue un appel système. L'appel système utilise une API pour exposer les services du système d'exploitation aux programmes utilisateur. C'est la seule méthode pour accéder au système du noyau. Tous les programmes ou processus nécessitant des ressources pour leur exécution doivent utiliser des appels système, car ils servent d'interface entre le système d'exploitation et les programmes utilisateur.
Vous trouverez ci-dessous quelques exemples de la façon dont un appel système diffère d'une fonction utilisateur.
java est une instance de
- Une fonction d'appel système peut créer et utiliser des processus de noyau pour exécuter le traitement asynchrone.
- Un appel système a une plus grande autorité qu’un sous-programme standard. Un appel système avec le privilège du mode noyau s'exécute dans le domaine de protection du noyau.
- Les appels système ne sont pas autorisés à utiliser des bibliothèques partagées ou des symboles qui ne sont pas présents dans le domaine de protection du noyau.
- Le code et les données des appels système sont stockés dans la mémoire globale du noyau.
Pourquoi avez-vous besoin d’appels système dans le système d’exploitation ?
Il existe diverses situations dans lesquelles vous devez exiger des appels système dans le système d'exploitation. Les situations suivantes sont les suivantes :
- Il est indispensable lorsqu'un système de fichiers souhaite créer ou supprimer un fichier.
- Les connexions réseau nécessitent des appels système pour envoyer et recevoir des paquets de données.
- Si vous souhaitez lire ou écrire un fichier, vous devez utiliser des appels système.
- Si vous souhaitez accéder à des périphériques matériels, notamment une imprimante, un scanner, vous avez besoin d'un appel système.
- Les appels système sont utilisés pour créer et gérer de nouveaux processus.
Comment fonctionnent les appels système
Les applications s'exécutent dans une zone de mémoire appelée espace utilisateur. Un appel système se connecte au noyau du système d'exploitation, qui s'exécute dans l'espace du noyau. Lorsqu'une application crée un appel système, elle doit d'abord obtenir l'autorisation du noyau. Il y parvient en utilisant une demande d'interruption, qui met en pause le processus en cours et transfère le contrôle au noyau.
Si la requête est autorisée, le noyau effectue l'action demandée, comme créer ou supprimer un fichier. En entrée, l'application reçoit la sortie du noyau. L'application reprend la procédure après réception de l'entrée. Une fois l'opération terminée, le noyau renvoie les résultats à l'application puis déplace les données de l'espace noyau vers l'espace utilisateur en mémoire.
Un simple appel système peut prendre quelques nanosecondes pour fournir le résultat, comme récupérer la date et l'heure du système. Un appel système plus complexe, comme la connexion à un périphérique réseau, peut prendre quelques secondes. La plupart des systèmes d'exploitation lancent un thread de noyau distinct pour chaque appel système afin d'éviter les goulots d'étranglement. Les systèmes d'exploitation modernes sont multithread, ce qui signifie qu'ils peuvent gérer plusieurs appels système en même temps.
survoler en CSS
Types d'appels système
Il existe généralement cinq types d'appels système. Ceux-ci sont les suivants :
Vous allez maintenant découvrir tous les différents types d’appels système un par un.
Contrôle de processus
Le contrôle des processus est l'appel système utilisé pour diriger les processus. Certains exemples de contrôle de processus incluent la création, le chargement, l'abandon, la fin, l'exécution, le traitement, la fin du processus, etc.
Gestion de fichiers
La gestion de fichiers est un appel système utilisé pour gérer les fichiers. Certains exemples de gestion de fichiers incluent la création de fichiers, la suppression de fichiers, l'ouverture, la fermeture, la lecture, l'écriture, etc.
Gestion d'appareils
La gestion des appareils est un appel système utilisé pour gérer les appareils. Quelques exemples de gestion des périphériques incluent la lecture, le périphérique, l'écriture, l'obtention des attributs du périphérique, la libération du périphérique, etc.
Gestion des informations
La maintenance des informations est un appel système utilisé pour conserver les informations. Il existe quelques exemples de maintenance des informations, notamment l'obtention de données système, la définition de l'heure ou de la date, l'obtention de l'heure ou de la date, la définition des données système, etc.
Communication
La communication est un appel système utilisé pour la communication. Il existe quelques exemples de communication, notamment créer, supprimer des connexions de communication, envoyer, recevoir des messages, etc.
Exemples d'appels système Windows et Unix
Il existe divers exemples d'appels système Windows et Unix. Ceux-ci sont répertoriés ci-dessous dans le tableau :
'formule de maçon'
Processus | les fenêtres | Unix |
---|---|---|
Contrôle de processus | CréerProcess() Processus de sortie() Attendre un seul objet() | Fourchette() Sortie() Attendez() |
Manipulation de fichiers | Créer un fichier() LireFichier() ÉcrireFichier() FermerHandle() | Ouvrir() Lire() Écrire() Fermer() |
Gestion d'appareils | DéfinirConsoleMode() LireConsole() ÉcrireConsole() | Ioctl() Lire() Écrire() |
Gestion des informations | ObtenirCurrentProcessID() Régler la minuterie() Dormir() | Getpid() Alarme() Dormir() |
Communication | Créer un tuyau() CreateFileMapping() MapViewOfFile() | Tuyau() Shmget() Mmap() |
protection | SetFileSecurity() InitializeSecurityDescriptor() SetSecurityDescriptorgroup() | Chmod() umask() Chown() |
Ici, vous découvrirez brièvement certaines méthodes :
ouvrir()
Le ouvrir() L'appel système vous permet d'accéder à un fichier sur un système de fichiers. Il alloue des ressources au fichier et fournit un handle auquel le processus peut faire référence. De nombreux processus peuvent ouvrir un fichier en même temps ou par un seul processus. Tout est basé sur le système de fichiers et la structure.
lire()
Il est utilisé pour obtenir des données à partir d'un fichier sur le système de fichiers. Il accepte trois arguments en général :
- Un descripteur de fichier.
- Un tampon pour stocker les données lues.
- Le nombre d'octets à lire dans le fichier.
Le descripteur de fichier du fichier à lire pourrait être utilisé pour l'identifier et l'ouvrir à l'aide de ouvrir() Avant la lecture.
attendez()
Dans certains systèmes, un processus peut devoir attendre qu'un autre processus termine son exécution avant de continuer. Lorsqu'un processus parent crée un processus enfant, l'exécution du processus parent est suspendue jusqu'à ce que le processus enfant soit terminé. Le attendez() L'appel système est utilisé pour suspendre le processus parent. Une fois que le processus enfant a terminé son exécution, le contrôle est rendu au processus parent.
écrire()
Il est utilisé pour écrire des données depuis un tampon utilisateur vers un périphérique comme un fichier. Cet appel système est un moyen pour un programme de générer des données. Il faut trois arguments en général :
créer des tableaux en latex
- Un descripteur de fichier.
- Pointeur vers le tampon dans lequel les données sont enregistrées.
- Le nombre d'octets à écrire à partir du tampon.
fourchette()
Les processus génèrent des clones d'eux-mêmes en utilisant le fourchette() appel système. C'est l'un des moyens les plus courants de créer des processus dans les systèmes d'exploitation. Lorsqu'un processus parent génère un processus enfant, l'exécution du processus parent est interrompue jusqu'à la fin du processus enfant. Une fois que le processus enfant a terminé son exécution, le contrôle est rendu au processus parent.
fermer()
Il est utilisé pour mettre fin à l’accès au système de fichiers. Lorsque cet appel système est invoqué, cela signifie que le programme n'a plus besoin du fichier, que les tampons sont vidés, que les informations du fichier sont modifiées et que les ressources du fichier sont désallouées en conséquence.
exécutable()
Lorsqu'un fichier exécutable remplace un fichier exécutable antérieur dans un processus déjà en cours d'exécution, cette fonction système est invoquée. Comme aucun nouveau processus n'est construit, l'ancienne identification du processus reste, mais le nouveau processus remplace les données, la pile, les données, la tête, etc.
sortie()
Le sortie() est un appel système utilisé pour terminer l’exécution du programme. Cet appel indique que l'exécution du thread est terminée, ce qui est particulièrement utile dans les environnements multithread. Le système d'exploitation récupère les ressources dépensées par le processus suite à l'utilisation du sortie() fonction du système.