Chapitre1 Introduction -Système D'exploitation 2024 PDF
Document Details
Uploaded by Deleted User
2024
Tags
Summary
This document provides an introduction to operating systems, outlining key objectives, functionalities and problem statements. It's designed for a computer science course.
Full Transcript
Objectifs du cours : Ce cours vise à vous familiariser avec les concepts et les techniques fondamentales des systèmes d'exploitation. Entre autres les éléments suivants: Comprendre le fonctionnement d’un ordinateur en liaison avec le système d’exploitation Expliquer et analyser le fon...
Objectifs du cours : Ce cours vise à vous familiariser avec les concepts et les techniques fondamentales des systèmes d'exploitation. Entre autres les éléments suivants: Comprendre le fonctionnement d’un ordinateur en liaison avec le système d’exploitation Expliquer et analyser le fonctionnement des différents modules liés à la gestion de processus La compréhension du fonctionnement de la gestion de la mémoire La gestion des fichiers 2 Plan du cours Chapitre1: Introduction 1. Qu’est ce que le système d’exploitation? 2. Problématique 3. Fonctionnalité d’un SE 4. Place du SE dans l’ordinateur 5. Principes des SE 6. Historique des SE 7. Type des SE 8. Structure internes des SE généraux 3 Chapitre 1: Introduction 1. Qu’est ce que le système d’exploitation Un système d’exploitation peut être définit comme un ensemble de programmes qui contrôle et dirige l’utilisation d’un ordinateur à travers différentes applications. En autres, c’est un système qui exploite les ressources matérielles d’un ordinateur et assure la liaison entre les utilisateurs et les applications. C’est le premier programme exécuté lors du démarrage de l’ordinateur. Le système d’exploitation peut être noté SE ou OS (Operating System en anglais) De manière pratique, le système d’exploitation est le logiciel le plus important de la machine. En fait, les logiciels peuvent être classés en deux catégories : les programmes d'application des utilisateurs les programmes système qui permettent le fonctionnement de l'ordinateur. Parmi ceux-ci, le système d'exploitation (SE dans la suite). Le SE soustrait le matériel au regard du programmeur et offre une présentation agréable des fichiers. Un SE a ainsi deux objectifs principaux : Présentation : Il propose à l'utilisateur une abstraction plus simple et plus agréable que le matériel : une machine virtuelle Gestion : il ordonne et contrôle l'allocation des processeurs, des mémoires,, des périphériques, des réseaux entre les programmes qui les utilisent. Il assiste les programmes utilisateurs. Il protège les utilisateurs dans le cas d'usage partagé: gestionnaire de ressources. 11 Pourquoi étudier donc les systèmes d’exploitations? Tout programme est concerné: Il est important d’appréhender la façon dont fonctionne un SE pour améliorer l’efficacité de ces programmes. Tout programmeur est susceptible de rencontrer les mêmes problèmes de mise en œuvre dans son propre domaine. C’est un sujet intéressant en soi, dont l’objectif est la recherche de l’efficacité , nécessitant une étude théorique approfondie dont l’objectif est la fourniture des solutions réalisable en pratiques. En résumé, l'étude des systèmes d'exploitation est importante pour comprendre comment les ordinateurs fonctionnent, pour le développement de logiciels, pour l'administration de systèmes et pour la compétence professionnelle. 12 2. Problématique Pour que les programmes puissent s’exécuter de façon portable et efficace, il faut pouvoir gérer simultanément: La multiplicité des différentes ressources; La complexité des composants de chacune d’elles, qui requiert la prise en compte de nombreux détailles pour éviter les éventuelles erreurs (bugs). On peut appréhender ces problèmes à travers l’exemple de partage de l’imprimante: Une machine multi - utilisateur fournit un service d’impression, qui peut être utilisé par n’importe quel programme s’exécutant sur la machine. Pour cela, il faut: Pouvoir verrouiller l’accès à l’impression, afin que les flux de caractères produits par les programmes désirant imprimer ne s’entrelacent pas sur le papier; Gérer des tampons d’impression, afin que les programmes puissent reprendre leur travail sans devoir attendre la fin effective de l’impression. Gérer la file d’attente. Le problème est de gérer l’accès à une ressource coûteuse (à la fois en argent et en temps). Il faut à tout instant: Connaître l’utilisateur d’une ressource donnée; Gérer l’accès concurrentiel à cette ressource; Pouvoir accorder l’usage (exclusif) à cette ressource; Éviter les conflits d’accès entre les programmes ou entre les utilisateurs. 13 3. Fonctionnalité d’un SE Un SE a pour but: De décharger le programmeur d’une tâche de programmation énorme et fastidieuse, et de lui permettre de concentrer sur l’écriture de sa propre application; De protéger le système et ses utilisateurs de fausses manipulations; D’offrir une vue simple, uniforme et cohérente de la machine et de ses sources. Ce qui donne deux points vues, descendante et ascendante suivante: Machine virtuelle Vue descendante SE Vue Ascendante Gestionnaire de ressources la machine virtuelle fournit à l’utilisateur les services suivants: Une vue uniforme des E/S; Une mémoire virtuelle et partageable; La gestion des fichiers et répertoires; La gestion des droits d’accès, sécurité et de traitement des erreurs; La gestion des processus 14 La gestion de la communication inter-processus. En tant que gestionnaire de ressources, le SE doit permettre: d’assurer le bon fonctionnement des ressources et le respect des délais; l’identification de l’utilisateur d’une ressource; le contrôle des accès aux ressources; l’interruption d’une utilisation de ressources; la gestion des erreurs; l’évitement des conflits. 4. Place d’un SE dans un ordinateur Applications(Jeux, Ms Word, chrome,,,,) Éditeur Compilateur Interprète de commandes Système d’exploitation Programmes système Matériel L’interprète de commande, le compilateur et ses bibliothèques, l’éditeur ainsi que d’autres utilitaires ou commandes comme chmod, copie,.. ne font pas partie des systèmes d’exploitations. En fait, tous ces programmes s’exécutent dans le mode non privilégié., car ils n’ont pas besoin d’un accès au matériel. En revanche, le SE fonctionne typiquement en mode privilégié (mode noyau) pour pouvoir accéder à toutes les fonctionnalités du système. Ainsi, le SE est protégé contre les erreurs de manipulations. 15 5. Principes d’un SE 5.1 les appels systèmes Ils constituent l’interface entre le SE et les programmes d’applications qui s’exécutent en mode non privilégié (mode utilisateur). la séparation stricte du noyau du système d'exploitation et des programmes d'application ou des processus utilisateur. Au niveau du processeur, le mode noyau se différencie habituellement du mode utilisateur par les fonctionnalités suivantes: Le code et les données utilisés par le SE ne sont pas accessibles qu’en mode noyau (sécurité). Ceci se fait en n’incluant les segments mémoires correspondants que lors de passage en mode noyau; Les instructions de modifications de la table des segments mémoire ne sont permises qu’en mode noyau. Ainsi un programme utilisateur ne pourra modifier ces droits d’accès à la mémoire; Les instructions de lecture et d’écriture sur les ports d’E/S du matériel ne sont permises qu’en mode noyau. Un programme Utilisateur ne peut donc accéder au matériel sans passer par le SE. Quelques appels systèmes classiques: open, read, write et close qui permettent les manipulations sur les systèmes de fichiers, alloc, free pour allouer et libérer de la mémoire NB On peut dire de manière simplifiée qu'un appel système est nécessaire chaque fois qu'un processus s'exécutant en mode utilisateur veut exécuter une fonction qui n'est exécutable qu'en mode noyau. 16 5.2 les processus Ce sont des programmes en cours d'exécution par un ordinateur; On distingue des processus utilisateurs et des processus système. Ces derniers : ne sont sous le contrôle d'aucun terminal ont comme propriétaire le super utilisateur (processus démons). Ils restent résidents en MC en attente d'une requête ils assurent des services généraux accessibles à tous les utilisateurs ils peuvent être créés au lancement du système ou à des dates fixées par l'administrateur. Exemples de processus système : cron lance à des dates spécifiées des commandes particulières lpsched assure l'ordonnancement des requêtes d'impression 17 Un processus peut s'exécuter dans deux modes différents : mode utilisateur (user mode): Le processus n'accède qu'à son espace d'adressage et n'exécute que des instructions ordinaires du programme chargé mode noyau ou système (kernel mode): Le processus exécute des instructions n'appartenant pas au programme, mais au noyau. Il accède à des données externes à son espace d'adressage (tables systèmes). On peut passer en mode noyau soit par une interruption appropriée, soit par la réalisation d'un appel système par le processus lui-même (exemple : requête de lecture au clavier dans le programme) Remarque: La différence entre mode noyau et mode utilisateur est géré directement au niveau du processeur. Elle n’a rien à voir avec la notion du super utilisateur ou administrateur mis en œuvre sur certains SE qui est géré au niveau logiciel dans le code du SE. En fait, même le super utilisateur d’un système passe le clair de son temps en mode non privilégie. 18 Dans le cas d’un système multiprogrammé, les différents processus doivent se partager l’accès aux ressources: UCT (CPU), mémoire et périphériques. Par exemple, un processus ayant besoin d’une ressource qui est occupée devra être bloqué en attendant que cette ressource se libère. Dans le cas d’un système à temps. partagé, l’exécution des processus doit être en apparence... concurrente: une fraction de temps de l’UCT (quantum) doit être accordée à chacun des processus. un processus exécute une séquence d’instruction dans un espace adresse comprenant l’ensemble des locations en mémoire auxquelles le processus est autorisé à accéder. Cet espace adresse est a priori virtuel (il ne correspond pas nécessairement à la mémoire physique). Il correspond au texte (code) et aux données utilisés par le processus. A chaque processus correspond aussi un ensemble de registres et compteurs, comme le compteur programme qui pointe sur la prochaine instruction à exécuter. 19 Traitement séquentiel ou emboîté des exceptions Code utilisateur 0 1 2. Traitement de l’exception.... i.. i+1... N Traitement du l’exception et retour au code de l’utilisateur Que se passe-t-il lorsque une exception se produit alors qu’une autre exception est en en train d’être traitée? On a deux possibilités: Le traitement séquentiel des interruptions. On traite dans l’ordre dans lequel elles se produisent, et une exception est traitée complètement avant de passer à la suivante. Le traitement emboîté des interruptions. Cette façon de traitement suppose que l’on a défini un ordre de priorité entre les exceptions. Dans ce cas, le problème se ramène à interrompre un processus pour exécuter un autre processus plus prioritaire. 20 Code utilisateur. Traitement exception1....... Traitement exception2.... Traitement séquentiel des exceptions Code utilisateur Traitement exception1... Traitement exception2.......... Traitement emboîté des exceptions 21 L’accès à l’espace système ne peut se faire qu’en mode noyau: un processus accède à l’information de l’espace système en effectuant un appel système. Le contrôle est alors transféré au noyau après un changement de mode qui effectue l’accès pour le compte du processus. Le contrôle est alors retourné au processus , après un autre changement de mode. Mais comment se passe-t-il un changement de contexte? Processus P0 Système d’exploitation Processus P1 interruption ou trap inactif(prêt élu ou bloqué) Sauver l’état de P0 dans PCB0 charger l’état de P1 à partir de PCB1 Interruption ou appel système inactif(prêt élu ou bloqué) Sauver l’état de P1 dans PCB1 charger l’état de P0 à partir de PCB0 élu inactif (prêt ou bloqué) 22 Processus P0 Système d’exploitation Processus P1 interruption ou trap inactif(prêt élu ou bloqué) Sauver l’état de P0 dans PCB0 charger l’état de P1 à partir de PCB1 Interruption ou appel système inactif(prêt élu ou bloqué) Sauver l’état de P1 dans PCB1 charger l’état de P0 à partir de PCB0 élu inactif (prêt ou bloqué) En résumé, typiquement un processus est une instance d’un programme en train d’exécution. Il est représenté au niveau de SE par son code, ces données, sa pile d’exécution, les valeurs courantes des registres du processeur, ainsi que d’autres données relatives à l’état courant du système: état du processus, liste des fichiers ouverts,… Un processus est crée par d’autres processus (sauf le premier). Il est susceptible d’être suspendu, redémarrer et recevoir des événements traitables de façon asynchrone. Dans les systèmes récents, on a deux niveaux d’exécution : Les processus classiques « lourds» possédant chacun leurs données Les tâches légères, qui peuvent exister au sein de chaque processus lourd qui ont leur pile propre mais partagent toutes leurs données. 23 5.3 Systèmes de fichiers Un système de fichiers (File System) est un système de classement et d’organisation sur un support de stockage qui structure et organise l’écriture, la recherche, la lecture, le stockage, la modification et la suppression de fichiers d’une manière spécifique. Le système de fichiers fournit un modèle commode d’organisation des informations persistantes avec une gestion indépendante du support matériel. Le plus souvent, l’organisation des fichiers se fait de façon arborescente. Afin d’uniformiser l’ensemble des ressources d’E/S en un modèle cohérent, la plupart des systèmes de fichiers possèdent la notion de fichier spécial : terminaux, souris, disque, mémoire,… De même, En système d'exploitation, un fichier spécial est utilisé pour communiquer avec des périphériques matériels ou pour effectuer des opérations système spécifiques. Il existe deux types de fichiers spéciaux: Les fichiers de périphériques caractères (character devices) utilisés pour les périphériques E/S caractère comme les claviers et les souris. Les fichiers de périphériques blocs (block devices) utilisés pour les périphériques de stockage comme les disques durs.. 24 6. Historique des SE Structure et Fonctionnement des Ordinateurs HISTORIQUE er 1945 1 Ordinateur ere Traitement 1 génération par lots 1960 tubes électroniques eme 1970 2 génération Temps Réseau transistors partagé 1980 eme 3 génération Graphisme mini-ordinateurs 1990 Convivialité Processeurs et 2004 micro-ordinateurs Transparence ESAT/DMSI/Cours Architecture État actuel: Cluster, le parallélisme, les ordinateurs quantique (transistors quantiques en laboratoire) 25 Historique des machines et des systèmes d'exploitation Les machines à tubes à vide (1945 - 1955) Absence de système d'exploitation : Les opérations étaient entièrement manuelles, avec une entrée de commandes directe sans intermédiaire logiciel. Machines volumineuses et lentes : Conçues principalement pour des calculs simples, ces machines étaient encombrantes et leur vitesse de traitement était limitée. Programmation en langage machine : Les programmes étaient écrits en langage machine, nécessitant un accès direct à la mémoire de l'ordinateur. Système mono-utilisateur : Chaque machine était réservée à un seul utilisateur à la fois, limitant ainsi son utilisation concurrente. Inefficacité de l'utilisation de la CPU : La CPU restait souvent inactive pendant de longues périodes d'attente, ce qui entraînait un gaspillage de ressources. 26 Historique des machines et des systèmes d'exploitation Les machines à transistor de traitement par lots (1955-1965) Fiabilité des machines à transistor : Les ordinateurs à transistors étaient plus fiables que leurs prédécesseurs à tubes à vide, mais leur coût les rendait inaccessibles pour de nombreuses organisations. Programmation en Fortran et en assembleur : L'introduction de langages de programmation tels que Fortran et l'utilisation de l'assembleur ont simplifié le processus de développement de logiciels. Distinction des rôles : Une distinction claire était établie entre l'opérateur (chargé de l'enchaînement des travaux), le constructeur, le programmeur et l'utilisateur, reflétant la spécialisation croissante dans le domaine de l'informatique. Traitement par lots : Les travaux étaient regroupés en lot, ce qui permettait de maximiser l'utilisation du CPU malgré les périodes d'inactivité lors de la préparation des travaux. 27 Historique des machines et des systèmes d'exploitation Les machines à circuits intégrés (1965 -1980) Moins coûteuses et plus performantes : Les machines à circuits intégrés étaient moins chères à produire et offraient des performances améliorées par rapport à leurs prédécesseurs à transistors, ouvrant ainsi la voie à une adoption plus répandue de la technologie informatique. Famille d'ordinateurs compatibles et SE unique : Une tendance à développer des familles d'ordinateurs compatibles a émergé, avec l'introduction de systèmes d'exploitation uniques (SE) pour ces familles. SPOOL (Simultaneous Peripheral Operation On Line) : L'introduction du SPOOL a permis l'exécution simultanée d'opérations sur les périphériques, améliorant ainsi l'efficacité des opérations de traitement des données. Multiprogrammation et Temps partagé (Time sharing) : L'apparition de la multiprogrammation a permis l'exécution simultanée de plusieurs programmes, tandis que le temps partagé a permis à plusieurs utilisateurs d'accéder au système en même temps, ouvrant ainsi la voie à une utilisation plus 28 efficace des ressources informatiques. Historique des machines et des systèmes d'exploitation Multiprogrammation Exécution d'une autre tâche en attente d'E/S : Lorsqu'une tâche en cours attend une opération d'entrée/sortie (E/S), le système peut immédiatement passer à l'exécution d'une autre tâche en attente, permettant ainsi une utilisation plus efficace du processeur. Partitionnement de la mémoire : La mémoire centrale est partitionnée pour permettre l'exécution de plusieurs tâches simultanément, chacune dans sa propre région de mémoire. Ordonnancement des travaux : Les travaux sont ordonnancés par le système d'exploitation pour garantir une utilisation équitable des ressources et une performance optimale du système. Systèmes non interactifs : Initialement, la multiprogrammation était utilisée dans des systèmes non interactifs où les utilisateurs soumettaient des travaux qui étaient ensuite exécutés en lot. 29 Historique des machines et des systèmes d'exploitation Les ordinateurs personnels ( 1980 - 2000) Circuits LSI & VLSI : Les ordinateurs personnels de cette période ont profité des progrès dans les circuits intégrés, en passant des circuits intégrés à grande échelle (LSI: Large Scale Integration) aux circuits à très grande échelle (VLSI: Very Large Scale Integration). Cela a permis de réduire la taille des composants tout en augmentant leur capacité de traitement. 30 6.1 Première génération (1936-1955) C’est l’apparition des premiers ordinateurs à relais et à tubes à vide, programmés par tableaux de connecteurs puis par cartes perforés au début des années 50. 6.2 Deuxième génération (1955-1965) L’apparition des transistors a rendu les ordinateurs plus fiables. Ils pouvaient maintenant être vendus et l’on vit apparaître pour la première fois la distinction entre constructeur, opérateurs, programmeurs et utilisateurs. Les programmes s’exécutent par lots. Un interprète de commande sommaire permettait le chargement et l’exécution des programmes dans l’ordinateur. Ainsi avec le système FMS( Fortran Minitor System), on soumettait les travaux de la manière suivante: $job $fortran programme $load $run données $end Les gros ordinateurs disposaient typiquement de trois dérouleurs de bandes: Un pour conserver la bande de SE, un pour le programme à exécuter et le dernier pour recueillir des données de sortie. 31 O O IBM 1401 IBM 7094 IBM 1401 En amant et en aval se trouvaient deux calculateurs plus petits, chargés l’un de transcrire sur bande les cartes perforées apportés par le programmeur et l’autre d’imprimer les résultats contenus sur les bandes de sorties de données. Ces ensembles étaient servis par des opérateurs, dont le rôle était d’alimenter les ordinateurs en bandes, cartes et papier. Comme la majeure partie du temps du calculateur principal était perdue lors des déplacement des opérateurs, un système de traitement par lots (batch) fut mis en place: plusieurs travaux (job) étaient collectés sur une même bande d’entrée qui était chargé une fois par heure par exemple et apportée au calculateur principale. Celui-ci lit le premier travail (job) de la bande, et à la fin de chaque travail, il lit automatiquement le suivant, jusqu’à la fin de la bande. Inconvénients: Mono-programmation CPU encore mal utilisée( attente des E/S) 32 6.3 troisième génération (1965-1980) L’avancée technologique majeure de cette génération est l’apparition des circuits intégrées, qui ont permis de diminuer le rapport coût/performance de plusieurs ordres de grandeur. La standardisation apportée les circuits intégrés s’est également appliquée aux machines, avec l’apparition des familles qui partagent le même langage machine et le même SE pour des puissances et des applications très différentes. Le problème majeur de cette approche était de pouvoir disposer d’un SE efficace sur toutes les machines de la gamme, permettant d’utiliser toute la puissance des gros calculateurs, mais aussi capable de tenir dans la mémoire des plus petits Afin de rentabiliser l’utilisation des machines, les travaux peuvent être stockés sur le disque de l’ordinateur dès leur arrivés en salle machine, sans passer par des ordinateurs annexes et des manipulations des bandes. Cette technique s’appel le spool (Simultanious Peripheral operation on line). De même s’est développé l’usage de la multiprogrammation : la mémoire physique est partitionnée en segments de tailles fixées à l’avance, dont chacune pouvait accueillir un programme différent. Ainsi lorsque un programme attendais la fin d’une requête E/S, le processeur pouvait basculer sur une autre tâche. C’est à ce moment qu’apparurent les premiers mécanismes matériels de contrôle des accès mémoire, pour protéger mutuellement les programmes contre les accès invalides. La notion de temps partagé est aussi développé sur cette génération qui permettent à plusieurs taches de progresser ensemble même si le processeur ne peut traiter qu’une seule à la fois. 33 6.4 quatrième génération (1980-2000) Le développement des circuits LSI (Large Scale Integration) puis VLSI (very large scale integration) a permis l’avènement des ordinateurs personnels, qui ne différent que très peu, du point de vue architecturale des mini-ordinateurs de la génération précédente. Le développement des réseaux de communications et la baisse de leurs coûts d’accès a permis la création de réseaux locaux de machines et conduit à l’explosion d’Internet. Ils sont pris en compte par le SE en réseau, et complètement intégrés dans les SE distribués. Qui fournissent une image unifiée de l’ensemble des machines 6.5 2000-maintenant Aux taux actuel de croissance de l’intégration des composants, la barrière atomique devrait être atteinte vers les années 2015 et la vitesse de la lumière constitue toujours une limite infranchissable. Au niveau fondamental, les recherches s’orientent autour des composants à effets quantiques mais seuls des transistors uniques fonctionnent à ce jour en laboratoire. Les ordinateurs multiprocesseurs Les clusters 34 7. Types des Systèmes d’exploitation Il n’existe pas de SE efficace dans tous les contextes d’utilisations. On définit donc des familles des systèmes en fonction des contraintes qui pèsent sur eux. 7.1 Système Mono- utilisateur Comme son nom l’indique, ces systèmes d’exploitations n’acceptent qu’un seul utilisateur à un moment donné. Ils sont construits autour d’une machine virtuelle simple et facilitant l’utilisation des différents périphériques. Ils peuvent être multitâches. 7.2 Contrôle de processus (système dédié) Ces systèmes sont utilisés principalement en milieu industriel pour le contrôle des machines outils ou de dispositifs complexes critiques comme les usines chimiques et les centrales nucléaires. L’objectif du SE est de permettre de réagir en temps garanti et très bref à des événements issus de capteurs pour maintenir la stabilité du processus industriel ou répondre à des alarmes. Ces systèmes sont donc orientés temps réel et doivent être fiables. On sacrifie donc la généralité et la convivialité du SE au profit de l’efficacité. 7.3 Serveur de fichiers Ces systèmes contrôlent de gros ensembles d’informations, interrogeables à distance. On a donc besoin d’un temps de réponse court, avec possibilité de mises à jour à la volée. L’utilisateur n’a pas besoin de savoir comment la base de fichiers est organisée de façon interne. Le système réalise donc le masquage de cette structure. 35 7. Types des Systèmes d’exploitation Il n'existe pas de système d'exploitation universel qui convient à tous les contextes d'utilisation. Les différents types de systèmes sont définis en fonction des contraintes spécifiques qui leur sont imposées. 7.1 Système Mono-utilisateur Comme son nom l'indique, ces systèmes d'exploitation n'acceptent qu'un seul utilisateur à la fois. Ils sont construits autour d'une machine virtuelle simple et facilitent l'utilisation des périphériques. Bien qu'ils soient mono-utilisateurs, ils peuvent être multitâches, permettant à un seul utilisateur d'exécuter plusieurs tâches simultanément. 7.2 Contrôle de processus (système dédié) Ces systèmes sont principalement utilisés dans des environnements industriels pour le contrôle de machines-outils ou de dispositifs critiques tels que les usines chimiques et les centrales nucléaires. L'objectif principal de ces systèmes est de réagir en temps garanti et très bref à des événements provenant de capteurs pour maintenir la stabilité du processus industriel ou répondre à des alarmes. Ils sont donc orientés vers le temps réel et doivent être hautement fiables, même si cela se fait au détriment de la généralité et de la convivialité du système d'exploitation. 7.3 Serveur de fichiers Ces systèmes contrôlent de vastes ensembles d'informations, souvent interrogeables à distance. Ils nécessitent donc un temps de réponse rapide, avec la possibilité de mises à jour en temps réel. Les utilisateurs n'ont pas besoin de connaître la structure interne de la base de fichiers, car le système masque cette complexité. Ces systèmes sont conçus pour être efficaces dans la gestion des fichiers et pour offrir une accessibilité à distance rapide et fiable. 36 7.4 Systèmes Transactionnels Ces systèmes ont pour mission de contrôler des bases de données volumineuses sujettes à des modifications fréquentes. Les principaux objectifs à atteindre sont les suivants : Temps de réponse très court : En raison de la nature dynamique des modifications, ces systèmes visent à assurer des temps de réponse extrêmement rapides pour les transactions. Cohérence constante de la base de données : La base de données doit maintenir une cohérence constante malgré les opérations de modification fréquentes. Cela garantit que les données sont toujours à jour et correctes. Résolution de conflits : En raison de la possibilité d'exécution simultanée de plusieurs transactions, le système doit être capable de résoudre les conflits potentiels et de maintenir l'intégrité des données. Pour atteindre ces objectifs, les systèmes transactionnels mettent en œuvre des concepts tels que les transactions atomiques et les points de reprise. Par exemple, lorsqu'une transaction est effectuée sur une base de données, le système doit assurer la cohérence en préservant la valeur initiale des données (point de reprise) en cas d'échec de la transaction. De plus, dans le cas de transactions concurrentes sur les mêmes données, le système doit sérialiser les opérations pour garantir la cohérence. Exemple Prenons l'exemple d'une transaction qui décrémente la quantité d'un produit disponible. Si la modification échoue après la décrémentation, le système doit restaurer l'état initial des données (point de reprise). De même, si deux transactions s'exécutent en parallèle sur le même produit, le système doit sérialiser les opérations pour garantir la cohérence de la base de données. 37 7.5 Systèmes Généraux Les systèmes généraux sont conçus pour répondre aux besoins variés d'un grand nombre d'utilisateurs et de tâches. Leurs caractéristiques principales incluent : Multi-utilisateurs : Ces systèmes doivent pouvoir prendre en charge simultanément de nombreux utilisateurs, chacun exécutant des tâches distinctes. Cela nécessite une gestion efficace des ressources pour assurer une expérience utilisateur fluide. Multitâches : Les systèmes généraux doivent être capables d'exécuter plusieurs tâches simultanément, permettant ainsi une utilisation efficace des ressources du système. Cela garantit également que les utilisateurs peuvent travailler sur différentes applications en même temps. Systèmes de fichiers sophistiqués : Pour gérer les besoins de stockage de données de multiples utilisateurs et applications, ces systèmes nécessitent des systèmes de fichiers sophistiqués capables de gérer efficacement l'organisation, l'accès et la gestion des données. Systèmes d'E/S variées : Étant donné la diversité des besoins des utilisateurs et des applications, ces systèmes doivent prendre en charge une variété de périphériques d'entrée/sortie pour permettre aux utilisateurs d'interagir avec le système de la manière qui leur convient le mieux. Large gamme de logiciels : Pour répondre aux besoins variés des utilisateurs, ces systèmes doivent être livrés avec une vaste bibliothèque de logiciels couvrant un large éventail d'applications, des outils de productivité aux logiciels spécialisés. 38 8. STRUCTURE D'UN SYSTEME D'EXPLOITATION On peut distinguer quatre grandes catégories de SE. 8.1 Structure simple (les systèmes monolithiques) Le SE est un ensemble de procédures, chacune pouvant appeler toute autre à tout instant. Pour effectuer un appel système, on dépose dans un registre les paramètres de l'appel et on exécute une instruction spéciale appelée appel superviseur ou appel noyau (trap). Son exécution commute la machine du mode utilisateur au mode superviseur ou noyau et transfère le contrôle au SE. Le SE analyse les paramètres déposés dans le registre mentionné plus haut et en déduit la procédure à activer pour satisfaire la requête. A la fin de l'exécution de la procédure système, le SE rend le contrôle au programme appelant. Généralement, un tel SE est organisé en 3 couches : - une procédure principale: dans la couche supérieure, qui identifie la procédure de service requise; - des procédures de service : dans la couche inférieure à la précédente qui exécutent les appels système; - des procédures utilitaires: dans la couche basse qui assistent les procédures système. Une procédure utilitaire peut être appelée par plusieurs procédures systèmes. 39 8.2 Les systèmes en couches On peut généraliser la conception précédente et concevoir un SE composé de plusieurs couches spécialisées, chaque couche ne pouvant être appelée que par des procédures qui lui sont immédiatement inférieures. Citons par exemple le premier SE de cette nature proposé par Dijkstra en 1968 : - couche 0 : allocation du processeur par commutation de temps entre les processus, soit à la suite d'expiration de délais, soit à la suite d'interruption (multiprogrammation de base du processeur); - couche 1 : gestion de la mémoire, allocation d'espace mémoire pour les processus (pagination); - couche 2 : communication entre les processus et les terminaux; - couche 3 : gestion des E/S ( échanges d'information avec des mémoires tampons, c'est à dire avec des périphériques abstraits, dégagés des spécificités matérielles); - couche 4 : programmes utilisateurs 8.3 Les machines virtuelles Une des premiers SE à gérer le concept de machine virtuelle a été l'adaptation temps partagé de l'OS/360 d'IBM, proposé sous le nom de VM/370 en 1979. Le cœur du SE, appelé moniteur de machine virtuelle ou VM/370, s'exécute à même le matériel et fournit à la couche supérieure plusieurs machines virtuelles. Ces machines virtuelles sont des copies conformes de la machine réelle avec ses interruptions, ses modes noyau/utilisateur, etc... Chaque machine virtuelle peut exécuter son propre SE. Lorsqu'une machine virtuelle exécute en mode interactif un appel système, l'appel est analysé par le moniteur temps partagé de cette machine, CMS. Toute instruction d'E/S, toute instruction d'accès mémoire est convertie par VM/370 qui les exécute dans sa simulation du matériel. La séparation complète de la multiprogrammation et de la machine étendue rend les éléments du SE plus simples et plus souples. VM/370 a gagné en simplicité en déplaçant une grande partie du code d'un SE dans le moniteur CMS. 40 8.4 L'architecture client/serveur Cette tendance s'est accentuée dans les SE contemporains en tentant de réduire le SE à un noyau minimal. Une des formes les plus accentuées de cette évolution est l'architecture client/serveur. Le modèle client serveur se prête extrêmement bien aux systèmes distribués: chaque machine du système exécute un exemplaire du micronoyau qui redirige les requêtes vers les serveurs concernés. La plupart des fonctionnalités d'un SE sont reportées dans des processus utilisateurs. Pour demander un service comme la lecture d'un bloc de fichier, le processus utilisateur ou processus client envoie une requête à un processus serveur qui effectue le travail et envoie une réponse. Le noyau ne gère que la communication entre les clients et les serveurs. Cependant, le noyau est souvent obligé de gérer certains processus serveurs critiques comme les pilotes de périphériques qui adressent directement le matériel. La décomposition du SE en modules très spécialisés le rend facile à modifier. Les serveurs s'exécutent comme des processus en mode utilisateur et non pas en mode noyau. Comme ils n'accèdent donc pas directement au matériel, une erreur n'affecte que le serveur et pas l'ensemble de la machine. En outre, ce modèle est bien adapté aux systèmes distribués. Un client n'a pas besoin de savoir si le SE fait exécuter sa requête par un serveur de sa propre machine ou celui d'une machine distante. Processus Processus Serveur de Serveur de Serveurs Serveur de ….. client client processus terminaux de fichiers mémoire noyau Processus Serveur de Serveurs …… client terminaux de fichiers noyau noyau noyau noyau Réseau 41