4. Services et grands domaines de gestion
4.1 Huit services essentiels
Le cours introduit huit familles de services.
- Exécution des programmes : charger le code et les données, préparer le contexte, lancer l'exécution, traiter la terminaison et récupérer les ressources.
- Entrées-sorties : offrir des opérations abstraites de lecture, d'écriture et de contrôle, puis les traduire vers le pilote approprié.
- Système de fichiers : créer, supprimer, ouvrir, fermer, lire, écrire, rechercher et renommer des fichiers ou répertoires; gérer attributs, propriétaires et permissions.
- Communications : permettre les échanges locaux ou réseau par mémoire partagée ou transfert de messages.
- Détection des erreurs : détecter les erreurs du processeur, de la mémoire, des périphériques ou des programmes et appliquer la réponse appropriée.
- Allocation des ressources : répartir CPU, mémoire, espace de stockage et périphériques entre les activités concurrentes.
- Comptabilité : mesurer la consommation des ressources pour l'administration, le diagnostic, la capacité ou la facturation.
- Protection et sécurité : empêcher les accès non autorisés et les interférences accidentelles ou malveillantes.
La protection concerne particulièrement les frontières internes entre processus, noyau, mémoire et ressources. La sécurité inclut aussi l'identification, l'authentification et la résistance aux attaques.
4.2 Processus et threads
Un programme stocké sur disque est passif. Lorsqu'il est chargé et exécuté, le système crée un processus contenant notamment :
- le code et les données;
- un espace d'adressage;
- l'état du processeur, dont les registres et le compteur ordinal;
- les fichiers et autres ressources ouverts;
- des informations d'ordonnancement;
- un état d'exécution.
Un thread est une unité d'exécution à l'intérieur d'un processus. Plusieurs threads peuvent partager les ressources de leur processus tout en possédant leur propre contexte d'exécution.
Le modèle simplifié distingue les états prêt, actif, bloqué et terminé. Un processus attendant une entrée-sortie n'a généralement pas besoin du CPU. Le système peut le bloquer, exécuter une autre activité, puis le réveiller lorsque l'événement attendu se produit.
4.3 Mémoire
Le système suit les zones libres et occupées, attribue de la mémoire, récupère les zones libérées et protège les allocations. Il collabore avec le matériel pour traduire les adresses virtuelles et appliquer les droits d'accès.
La pagination permet de diviser les espaces d'adressage et la mémoire physique en unités gérables. Le système peut conserver en RAM les pages nécessaires et laisser d'autres données sur un stockage secondaire. Le programmeur n'a pas à organiser manuellement chaque déplacement.
4.4 Fichiers et stockage
Les fichiers donnent une représentation persistante aux données. La gestion des fichiers couvre les noms, répertoires, attributs, permissions, blocs sur disque, espace libre, cohérence et performances. Comme pour la mémoire, il faut allouer, localiser, protéger, partager et récupérer de l'espace.
4.5 Entrées-sorties
Un périphérique peut exiger des séquences très spécialisées : configurer un contrôleur, déplacer une tête de lecture, démarrer un moteur ou gérer un tampon. Le SE et les pilotes masquent ces détails derrière des opérations uniformes.
Plusieurs demandes pouvant viser le même périphérique, le système doit les mettre en attente, choisir leur ordre et coordonner les transferts.