2. Le système d'exploitation comme médiateur
2.1 Gestionnaire de ressources
Un système d'exploitation arbitre l'utilisation du processeur, de la mémoire, des fichiers et des périphériques. Son rôle est à la fois pratique — offrir des abstractions simples — et protecteur — empêcher une application d'accéder arbitrairement aux ressources des autres programmes ou au matériel.
Quatre domaines annoncés seront approfondis plus tard :
- pagination et mémoire virtuelle : conserver en mémoire physique seulement les pages nécessaires et laisser l'OS gérer leur présence;
- fichiers : allouer, localiser, protéger, partager et récupérer l'espace persistant;
- entrées-sorties : masquer les détails des contrôleurs et pilotes derrière des opérations comme lire et écrire;
- multiprocesseurs : ajouter le parallélisme réel et les problèmes de coordination entre processeurs.
2.2 Interfaces complémentaires
La GUI n'est que la partie visible de l'OS. L'image de l'iceberg rappelle que l'essentiel se trouve sous l'interface : processus, mémoire, fichiers, périphériques, sécurité et communications.
- Une GUI facilite l'interaction humaine par fenêtres, menus, icônes et pointeur.
- Une CLI reçoit des commandes textuelles. Une commande peut être intégrée au shell ou correspondre à un programme externe recherché puis exécuté.
- Une API fournit au programmeur une interface de haut niveau, par exemple POSIX ou Win32.
- Un appel système est l'entrée contrôlée dans le noyau.
- Les programmes système fournissent les outils usuels : gestion de fichiers, inspection de l'état, éditeurs, traitement de texte et services d'arrière-plan.
Ces niveaux ne doivent pas être confondus. printf() est une fonction de bibliothèque : elle formate les données et peut ensuite utiliser write() pour faire écrire les octets par le noyau. Une fonction de bibliothèque peut donc déclencher un appel système sans être elle-même cet appel.
2.3 Catégories d'appels système
| Catégorie | Services typiques |
|---|---|
| Contrôle de processus | Créer, terminer, charger, exécuter, attendre, allouer de la mémoire |
| Gestion des fichiers | Créer, supprimer, ouvrir, fermer, lire, écrire, modifier les attributs |
| Gestion des périphériques | Réserver, libérer, lire, écrire, consulter les attributs |
| Communication | Établir une connexion, envoyer ou recevoir, partager de la mémoire |
| Protection | Consulter ou modifier les droits et contrôler les accès |
Le chemin général est : appel d'API → préparation du numéro et des paramètres → instruction de transition → validation par le noyau → exécution du service → valeur de retour ou erreur. Le programme doit connaître le contrat de l'interface, pas l'implémentation interne du noyau.