Les logiciels informatiques se divisent en logiciels système et logiciels d'application.
- Le logiciel système fait partie intégrante du système informatique et supporte l'exécution des logiciels d'application. Exemples : systèmes d'exploitation, compilateurs, chargeurs, programmes de diagnostic et systèmes de gestion de bases de données.
- Le logiciel d'application est développé par les utilisateurs pour des objectifs spécifiques en exploitant les ressources matérielles et logicielles de l'ordinateur. Exemples : calculs scientifiques, ingénierie, traitement de données, bureautique, CAO et traitement en temps réel.
Le système d'exploitation (Operating System, OS) est le logiciel système central d'un ordinateur. Les autres logiciels s'appuient sur le système d'exploitation qui assure leur gestion et leur exécution, servant d'interface entre l'utilisateur et l'ordinateur.
Définition : un système d'exploitation organise efficacement et gère diverses ressources matérielles et logicielles, rationalise le flux de travail du système informatique, contrôle l'exécution des programmes et fournit aux utilisateurs un environnement de travail ergonomique avec une interface conviviale.
Deux rôles essentiels :
- Amélioration de l'efficacité du système informatique par la gestion des ressources (matérielles et logicielles).
- Amélioration de l'interface homme-machine en offrant un environnement de travail convivial.
Les quatre caractéristiques des systèmes d'exploitation sont la concurrence, le partage, la virtualité et l'indétermination.
Les fonctions d'un système d'exploitation se divisent en cinq parties principales : la gestion des processus, la gestion des fichiers, la gestion de la mémoire, la gestion des périphériques et la gestion des tâches.
- Gestion des processus : gestion du temps d'exécution du processeur, allocation rationnelle du temps CPU aux différentes tâches via des techniques comme la multiprogrammation. Comprend le contrôle des processus, la synchronisation, la communication et l'ordonnancement.
- Gestion des fichiers : gestion de l'espace de stockage, des répertoires, des opérations de lecture/écriture et du contrôle d'accès.
- Gestion de la mémoire : gestion de l'espace mémoire principal, comprenant l'allocation et le recyclage, la protection, la transformation d'adresses et l'extension de la mémoire principale.
- Gestion des périphériques : gestion des équipements matériels, y compris l'allocation, le lancement, l'achèvement et le recyclage des périphériques d'entrée/sortie.
- Gestion des tâches : gestion des interfaces, interaction homme-machine, interfaces graphiques, contrôle vocal et réalité virtuelle.
Ces cinq composants travaillent en coordination pour gérer les ressources du système informatique et contrôler l'exécution des tâches.
Types de Systèmes d'Exploitation
Les systèmes d'exploitation se classent en plusieurs types : traitement par lots, temps partagé, temps réel, réseau, distribué et embarqué.
- Système par lots : l'utilisateur soumet un ensemble de tâches (exécution de programmes, traitement de données) qui sont traitées automatiquement et séquentiellement par le système.
- Système temps partagé : un système informatique connecté à plusieurs terminaux. Le temps CPU est divisé en tranches très courtes, servant alternativement chaque utilisateur terminal.
- Système temps réel : capable de traiter les informations externes à une vitesse suffisamment rapide et de réagir dans le délai imparti par l'objet contrôlé.
- Système réseau : permet aux ordinateurs connectés de partager efficacement les ressources réseau en fournissant divers services aux utilisateurs via des logiciels et protocoles appropriés.
- Système distribué : composé de plusieurs ordinateurs interconnectés sans hiérarchie, où n'importe quelle paire d'ordinateurs peut échanger des informations.
- Système embarqué : fonctionne dans un environnement de puce intelligente embarquée, coordonnant et contrôlant uniformément la puce et les divers composants qu'elle manipule.
- Gestion des Processus
Concepts de Base et Modèles des Processus
Un processus est l'exécution d'un programme sur un ensemble de données. C'est l'unité indépendante d'allocation et d'ordonnancement des ressources. Il se compose de trois parties : le bloc de programme, le bloc de contrôle de processus (PCB) et le bloc de données.
Différences entre processus et programme :
- Un processus est l'exécution d'un programme ; sans programme, il n'y a pas de processus.
- Un programme est une collection d'instructions pour accomplir une fonction spécifique ; il existe tant qu'il n'est pas détruit.
- Un programme est un concept statique, tandis qu'un processus est dynamique : il est créé lors de son exécution et disparaît à sa terminaison. Le processus est l'unité d'allocation et d'ordonnancement des ressources, contrairement au programme.
Le modèle à trois états comprend :
- État d'exécution : occupe le processeur et est en cours d'exécution.
- État prêt : les conditions d'exécution sont réunies, en attente d'allocation du processeur.
- État d'attente : aussi appelé état bloqué ou endormi, les conditions d'exécution ne sont pas réunies, en attente de la résolution d'un événement.
Les transitions du modèle à trois états :
- Exécution → Attente : en attente d'une ressource (ex: transfert périphérique, intervention manuelle).
- Attente → Prêt : la ressource devient disponible (ex: fin du transfert, intervention terminée).
- Exécution → Prêt : fin de la tranche de temps, ou processus de priorité plus élevé apparaît.
- Prêt → Exécution : allocation du CPU lorsqu'il est disponible.
Contrôle des Processus
Le contrôle des processus consiste à gérer efficacement leur cycle de vie, de la création à la terminaison.
La synchronisation concerne le contraint direct entre processus coopératifs qui doivent travailler ensemble. L'exclusion mutuelle concerne le contraint indirect entre processus en compétition pour des ressources critiques.
- Ressource critique : ressource utilisable par un seul processus à la fois, nécessitant un accès exclusif (ex: imprimante, lecteur de bande).
- Section critique : segment de code où accède à une ressource critique. Les quatre principes de gestion des sections critiques sont :
- Entrée libre lorsque possible.
- Attente si occupée.
- Temps d'attente limité.
- Abandon du processeur si impossible d'entrer.
- Sémaphore : variable spéciale utilisée pour la synchronisation.
La signification physique d'un sémaphore S : S ≥ 0 indique le nombre de ressources disponibles ; si S < 0, sa valeur absolue représente le nombre de processus en attente de cette ressource.
Les opérations P et V sont des primitives de communication de bas niveau indivisibles pour réaliser la synchronisation et l'exclusion mutuelle. L'opération P demande une ressource, l'opération V libère une ressource.
Voici une implémentation des opérations P et V en Pascal modifié :
Procedure Verrouiller(Var S: Semaphore);
Debut
S := S - 1;
Si S < 0 alors
EnfilerAttente(S) {Le processus exécutant P est mis en attente}
Fin;
Procedure Deverrouiller(Var S: Semaphore);
Debut
S := S + 1;
Si S <= 0 alors
DefilerAttente(S) {Débloquer un processus de la file d'attente}
Fin;
Utilisation des opérations P et V pour l'exclusion mutuelle : initialisez un sémaphore mutex à 1, exécutez P avant d'entrer dans la section critique et V après en sortir.
Utilisation des opérations P et V pour la synchronisation : utilisez un sémaphore S pour indiquer la disponibilité d'un message. Un processus peut tester la disponibilité avec P et notifier la préparation avec V.
Deadlocks
Un deadlock se produit lorsqu'un processus attend un événement qui ne se produira jamais. Si un ou plusieurs processus sont en deadlock, le système entier peut être paralysé.
Quatre conditions nécessaires au deadlock :
- Exclusion mutuelle
- Attente et détention
- Non-préemption
- Attente circulaire
Stratégies de gestion des deadlocks :
- Stratégie d'ignorance (comme l'autruche)
- Prévention : briser une des quatre conditions
- Évitement : ne pas permettre au système d'atteindre un état non sûr
- Détection et récupération : détection périodique et résolution des deadlocks
L'algorithme du banquier vérifie chaque demande de ressource pour s'assurer que le système resterait dans un état sûr après allocation. Il améliore l'utilisation des ressources mais augmente la charge système.
- Gestion de la Mémoire
La gestion de la mémoire concerne principalement la mémoire principale (ou mémoire vive).
Fonctions principales de la gestion de la mémoire :
- Allocation et recyclage de l'espace mémoire
- Optimisation de l'utilisation de la mémoire
- Extension de la mémoire
- Protection efficace des informations en mémoire
Partitionnement de la Mémoire
L'idée de base est de diviser la zone utilisateur de la mémoire en plusieurs régions, chacune utilisée par une tâche utilisateur, avec une restriction à leur zone d'exécution.
- Partitionnement fixe : méthode statique où la mémoire est divisée en partitions de taille fixe à la génération du système.
- Partitionnement variable : méthode dynamique où les partitions sont créées au chargement des tâches, avec une taille égale aux besoins de la tâche. Algorithmes de gestion : premier ajustement, prochain ajustement, meilleur ajustement, pire ajustement.
- Partitionnement relocalisable : déplacement de toutes les partitions allouées pour créer un espace contigu.
Mémoire Paginée
La mémoire paginée divise l'espace d'adressage d'un processus en pages de taille égale, et la mémoire physique en blocs (ou cadres de pages) de même taille. Les pages d'un processus peuvent être allouées à des blocs non contigus.
Un tableau de pages (page table) assure la correspondance entre les pages logiques et les blocs physiques. Le numéro de bloc plus l'adresse intra-page donne l'adresse physique.
Avantages : bonne utilisation de la mémoire, petits fragments, allocation simple. Inconvénients : surcharge système, risque de phénomène de "thrashing".
Mémoire Segmentée
L'espace d'adressage est divisé en segments logiques (programme principal, sous-programmes, données, etc.), chacun ayant un nom et une adresse commençant à 0. L'adresse se compose de numéro de segment et adresse intra-segment.
Avantages : facilité de partage et de protection entre programmes. Inconvénients : utilisation inefficiente de la mémoire, grands fragments.
Mémoire Segmentée-Paginée
Principe : diviser la mémoire en blocs de taille fixe, segmenter le programme, puis paginer chaque segment. L'adresse comprend numéro de segment, numéro de page intra-segment et adresse intra-page.
Avantages : petits espaces gaspillés, partage facile, protection efficace, connexion dynamique possible. Inconvénients : complexité et surcharge accrues.
Mémoire Virtuelle
La mémoire virtuelle permet de charger partiellement les programmes et d'échanger avec le disque, étendant logiquement la capacité mémoire. Sa mise en œuvre est transparente pour l'utilisateur.
Algorithmes de remplacement de page :
- Optimal (OPT)
- First-In First-Out (FIFO)
- Least Recently Used (LRU)
- Not Recently Used (NRU)
- Gestion des Disques
Un disque peut être partagé par plusieurs processus. Sa structure comprend des pistes et des secteurs, avec la piste 0 à l'extérieur.
Algorithmes d'Ordonnancement Disque
-
<strong>First-Come First-Served (FCFS)</strong>: Ordonnancement selon l'ordre d'arrivée des requêtes. Avantages : équité et simplicité. Inconvénients : temps de recherche moyen potentiellement élevé.
-
<strong>Shortest Seek Time First (SSTF)</strong>: Sélection de la piste la plus proche de la tête actuelle. Minimise chaque temps de recherche mais ne garantit pas le temps moyen minimal.
-
<strong>SCAN (ascenseur)</strong>: Considère à la fois la distance et la direction actuelle de déplacement de la tête.
-
<strong>CSCAN</strong>: Similaire à SCAN mais avec un déplacement unidirectionnel de la tête.
Le temps de lecture de données disque comprend trois composantes :
- Temps de déplacement de la tête vers la bonne piste
- Temps de rotation pour atteindre le bon secteur
- Temps de transfert des données
- Gestion des Fichiers
Concepts de Base
Un fichier est une collection d'informations logiquement liées, identifiée par un nom. Un fichier comprend le corps (contenu réel) et des métadonnaines (nom, type, emplacement, taille, permissions, etc.).
Le système de fichiers est l'ensemble des logiciels et données qui gèrent les fichiers de manière unifiée.
Types de fichiers :
- Par nature : système, bibliothèque, utilisateur
- Par durée : temporaire, archive, permanent
- Par protection : lecture seule, lecture/écriture, exécutable, non protégé
- Sous UNIX : normal, répertoire, périphérique (spécial)
Structure des Fichiers
Structure logique :
- Fichier enregistrement (structuré)
- Fichier flux (non structuré)
Structure physique :
- Séquentielle : informations logiquement continues stockées dans des blocs physiques contigus
- Liée : informations logiquement continues stockées dans des blocs physiques non contigus, liés par des pointeurs
- Indexée : informations logiquement continues stockées dans des blocs physiques non contigus, avec un tableau d'index
Gestion des Répertoires
Le bloc de contrôle de fichier (FCB) contient le nom du fichier et son adresse physique. La collection ordonnée de FCB forme le répertoire.
Dans un système de fichiers à répertoires hiérarchiques, l'accès à un fichier nécessite le chemin complet (absolu) ou relatif depuis le répertoire courant.
Gestion de l'Espace de Stockage
Les méthodes courantes pour gérer l'espace libre sont :
-
<strong>Table des zones libres</strong>: liste des zones continues non allouées
-
<strong>Carte de bits (bitmap)</strong>: chaque bit indique l'état d'un bloc (0=libre, 1=occupé)
-
<strong>Chaînage des blocs libres</strong>: chaque bloc libre contient un pointeur vers le suivant
-
<strong>Groupement</strong>: méthode utilisée dans UNIX
- Gestion des Périphériques
Les périphériques sont les interfaces entre le système informatique et le monde externe, responsables des entrées/sorties. Le système d'E/S (Input/Output) comprend les périphériques, contrôleurs, canaux, bus et logiciels d'E/S.
Classification des périphériques :
- Par organisation des données : blocs ou caractères
- Par fonction : entrée, sortie, stockage, réseau, alimentation
- Par allocation : exclusif, partagé, virtuel
- Par débit : lent, moyen, rapide
Objectifs de la gestion des périphériques : améliorer l'utilisation des périphériques et fournir une interface unifiée aux utilisateurs. L'accent est mis sur le parallélisme entre CPU et périphériques.
Techniques clés : interruption, DMA, canaux, tamponnage et Spooling.
La technologie Spooling utilise un type de périphérique pour simuler un autre, transformant des périphériques exclusifs en périphériques virtuels partagés. Elle comprend des programmes de pré-entrée, de sortie différée et de gestion des "puits", avec des zones de stockage pour les entrées et sorties.
Le Spooling résout le déséquilibre entre CPU et périphériques, transformant les périphériques exclusifs en périphériques partagés et virtuels.