Comment fonctionnent les appels du système UNIX
Les appels système sont l'interface fondamentale entre un programme utilisateur et le noyau du système d'exploitation. Ils permettent aux programmes de demander des services du noyau, tels que l'accès au matériel, la gestion des processus et l'interaction avec les fichiers. Voici une ventilation de leur fonctionnement:
1. Demande de programme utilisateur:
* Un programme utilisateur, en cours d'exécution dans l'espace utilisateur, a besoin d'un service spécifique, comme la lecture d'un fichier, la création d'un nouveau processus ou l'accès à un appareil.
* Le programme utilise une fonction de bibliothèque (par exemple, `Open () ',` Fork ()', `lecture () ') pour faire la demande.
2. Appel de la fonction de bibliothèque:
* La fonction de bibliothèque est responsable de la construction d'une structure d'appel système spécifique. Cette structure contient des informations sur l'appel système souhaité (par exemple, numéro de fonction, arguments).
* Cette structure est ensuite transmise au noyau en utilisant une instruction spéciale connue sous le nom de Interrupteur d'appel système (souvent `int 0x80` ou« syscall »).
3. Manipulation du noyau:
* L'interruption provoque un commutateur de contexte, transférant le contrôle du programme utilisateur vers le noyau.
* Le noyau identifie l'appel système demandé en fonction de son numéro.
* Le noyau valide les arguments d'appel système et vérifie les autorisations.
* Le noyau exécute le service demandé, impliquant potentiellement des interactions avec le matériel, le système de fichiers ou d'autres processus.
4. Valeur de retour:
* Une fois le noyau terminé le service demandé, il renvoie un code d'état et potentiellement des données au programme utilisateur.
* La fonction de bibliothèque interprète le code d'état et renvoie un résultat au programme utilisateur.
5. Réponse du programme utilisateur:
* Le programme utilisateur reçoit le résultat, le traite et poursuit son exécution.
Points clés:
* Les appels système sont les éléments constitutifs fondamentaux de tout système d'exploitation de type UNIX.
* Ils fournissent une interface standardisée, sécurisée et contrôlée entre les programmes utilisateur et le noyau.
* Le noyau protège les ressources système et garantit que les programmes ne peuvent pas accéder ou modifier les composants au niveau du système sans autorisation.
* L'interface d'appel système est généralement cohérente sur différents systèmes de type UNIX, garantissant la portabilité des applications.
Exemple:
Considérons l'appel du système «Read ()». Un programme peut utiliser la fonction de bibliothèque `lire ()` pour lire les données d'un fichier. Cette fonction:
1. Création d'une structure d'appel système avec le numéro de fonction `LIRE () ', le descripteur de fichiers, l'adresse tampon et le numéro d'octets à lire.
2. Exécute l'interruption d'appel système pour transférer le contrôle vers le noyau.
3. Le noyau valide les arguments, récupère les données du fichier et les copie dans le tampon fourni par l'utilisateur.
4. Le noyau renvoie le nombre d'octets lus au programme utilisateur.
5. Le programme utilisateur reçoit le résultat et utilise les données selon les besoins.
Il est essentiel de comprendre comment le travail des appels du système est essentiel pour comprendre le fonctionnement interne des systèmes d'exploitation de type UNIX et des programmes d'écriture qui interagissent efficacement avec le noyau.
|