6.1 Qu'est-ce qu'un système d'exploitation ?
Objectifs d'apprentissage
À la fin de cette section, vous serez capable de :
- Décrire un système d'exploitation et son rôle en informatique
- Expliquer l'architecture des systèmes d'exploitation
Un système d'exploitation (OS) est le composant logiciel central qui gère et contrôle généralement l'interconnexion du matériel et du logiciel sur un ordinateur. L'OS est chargé au démarrage et constitue le logiciel clé nécessaire pour faire fonctionner tout appareil informatisé.
Introduction
Il existe de nombreux systèmes d'exploitation (OS), et toute personne utilisant un ordinateur moderne en utilise un. Les OS typiques pour les ordinateurs sont Windows, macOS et Linux, et pour les appareils mobiles, iOS et Android (Figure 6.2). Microsoft Windows est un système d'exploitation populaire, célébré pour sa facilité d'utilisation et sa large compatibilité logicielle. macOS d'Apple Inc., qui est le moteur des ordinateurs Apple, assure une cohésion étroite entre le matériel et le logiciel. Linux, un OS à code source ouvert disponible gratuitement, est acclamé pour sa fiabilité, sa sécurité et son adaptabilité. Le code source de Linux compte plus de 27 millions de lignes de C, tandis que Windows en a plus de 50 millions. Linux offre une variété de versions ou de distributions, telles qu'Ubuntu pour la facilité d'utilisation, Fedora pour les dernières fonctionnalités, Debian pour la stabilité et Kali Linux pour les tâches de sécurité. Chaque version est conçue pour répondre à des besoins spécifiques, de l'informatique générale aux applications spécialisées. Tous les systèmes d'exploitation commerciaux gèrent aujourd'hui la sécurité des utilisateurs.
L'objectif de cette section est d'expliquer ce qu'est un OS. Traditionnellement, nous considérons l'OS comme le moyen par lequel la communication est facilitée entre les applications que l'utilisateur souhaite exécuter et le matériel informatique responsable de leur exécution. Les applications ne manipulent généralement pas directement le matériel ; elles doivent plutôt demander à l'OS de le faire en leur nom. L'un des objectifs principaux de l'OS du point de vue du logiciel d'application est l'isolation. L'isolation garantit que les multiples programmes qui s'exécutent simultanément sur le même CPU et la même mémoire fonctionnent indépendamment sans interférer avec l'exécution ou les données des autres. Cela maintient la stabilité et la sécurité du système. Du point de vue matériel, le matériel est conçu pour permettre aux programmeurs d'écrire des OS et des applications. En général, l'OS arbitre l'accès d'un programme aux ressources matérielles telles que le CPU (pour le calcul) ; la mémoire (pour le stockage volatile) et le disque, la mémoire flash, etc. (pour le stockage persistant) ; les piles TCP/IP, le Wi-Fi et les cartes d'interface réseau Ethernet, etc. (pour les communications réseau) ; et le clavier, l'écran, l'écran tactile, l'audio, les contrôleurs de jeu, etc. (pour l'entrée-sortie). L'isolation est ce qui permet aux fabricants de périphériques de mettre à jour leur matériel sans exiger des développeurs de logiciels de réécrire leurs programmes à chaque fois.
Lien vers l'apprentissage
Pour en savoir plus sur les systèmes d'exploitation, lisez cet article informatif sur la compréhension des systèmes d'exploitation de How-To Geek.
Surveillance de l'accès
Les systèmes d'exploitation jouent un rôle crucial dans la gestion et le contrôle de l'accès aux périphériques matériels au sein des systèmes informatiques, y compris les périphériques tels que les claviers, les souris, les disques durs et d'autres composants critiques. Ils agissent comme des gardiens, garantissant que les interactions avec ces périphériques se déroulent en douceur et en toute sécurité. L'une des responsabilités clés d'un OS est la surveillance de l'accès matériel, qui implique le suivi et la régulation des applications ou des utilisateurs qui peuvent communiquer avec le matériel et de la manière dont ils le font. Cette capacité est vitale pour maintenir l'intégrité et les performances globales d'un système.
En plus de la surveillance matérielle, l'OS est essentiel pour l'application des mécanismes d'authentification. Cela signifie que l'OS aide à vérifier que seuls les utilisateurs autorisés accèdent à certains périphériques, en particulier ceux considérés comme sensibles. En gérant les permissions des utilisateurs et les niveaux d'accès, l'OS peut empêcher l'accès non autorisé aux ressources matérielles critiques, protégeant ainsi contre d'éventuelles failles de sécurité ou le vol de données. Cet aspect de l'OS est particulièrement important dans les environnements où l'accès à l'information et aux ressources doit être strictement contrôlé, comme dans les entreprises ou les administrations.
Le rôle d'un administrateur informatique est de définir les périphériques matériels disponibles au sein du réseau d'une entreprise et de déterminer leurs niveaux de sensibilité. Cette tâche exige une compréhension approfondie des spécifications techniques du matériel et des implications de sécurité de son utilisation.
Vous vous demandez peut-être : comment l'OS est-il organisé ? Comment les ressources sont-elles partagées entre les utilisateurs ? Comment un utilisateur ou un processus est-il protégé d'un autre ? Ces questions se rapportent aux caractéristiques ou propriétés prises en compte lors de la conception d'un OS. Le Tableau 6.1 décrit diverses questions de conception d'OS et les propriétés auxquelles elles sont associées, telles que la structure, le partage, la dénomination, la protection, la sécurité, les performances, la disponibilité et la fiabilité, entre autres.
| Propriété | Question |
|---|---|
| Structure | Comment l'OS est-il organisé ? |
| Partage | Comment les ressources sont-elles partagées entre les utilisateurs ? |
| Dénomination | Comment les ressources sont-elles nommées, et quelle est leur portée ? |
| Protection | Comment un utilisateur ou un processus est-il protégé d'un autre ? |
| Sécurité | Comment l'intégrité de l'OS et de ses ressources est-elle assurée ? |
| Performance | Comment un OS évite-t-il de ralentir toutes les applications ? |
| Disponibilité | Les applications peuvent-elles toujours accéder aux services dont elles ont besoin ? |
| Fiabilité | À quelle fréquence les choses tournent-elles mal, que ce soit avec le matériel ou avec un programme ? |
| Extensibilité | De nouvelles fonctionnalités peuvent-elles être ajoutées ? |
| Communication | Comment les programmes échangent-ils des informations, y compris sur un réseau ? |
| Concurrence | Comment les activités simultanées telles que le calcul et l'I/O sont-elles créées et contrôlées ? |
| Échelle | Que se passe-t-il lorsque les demandes ou les ressources augmentent ? |
| Persistance | Comment les données peuvent-elles durer plus longtemps que les exécutions de programmes ? |
| Distribution | Comment un calcul peut-il être autorisé à s'étendre sur des limites matérielles, telles que machine/réseau ? |
| Comptabilité | Comment l'utilisation des ressources d'un OS par un utilisateur peut-elle être suivie, et comment l'utilisateur pourrait-il être facturé pour cela ? |
| Audit | Les actions et les processus peuvent-ils être reconstruits ? |
Gestion de l'efficacité
En gérant efficacement les ressources du système (par exemple, CPU, mémoire, disque et réseau), l'OS garantit qu'aucune ressource n'est sous-utilisée ou surchargée. Nous commençons par cette question : quel est le niveau de facilité ou de complexité impliqué dans le développement d'applications avec une efficacité optimale sur un ordinateur ? Un système d'exploitation performant facilite le développement d'applications efficaces qui améliorent l'expérience utilisateur en offrant des temps de réponse plus rapides. L'OS a également un impact positif sur l'expérience utilisateur en gérant efficacement l'allocation des ressources et le multitâche.
À un certain moment, vous pourriez travailler pour une organisation qui développe une nouvelle application, et l'entreprise pourrait se poser cette question : si nous prenions le temps de développer tous les logiciels supplémentaires nécessaires pour que notre application démarre et s'exécute sur du matériel brut, à quel point serait-elle plus rapide ? Cela revient à demander quel est le coût ou la pénalité du développement de ce que l'OS fournit (c'est-à-dire le partage du matériel entre les applications, et les dommages limités lorsque les programmes présentent des défauts). La réponse à cette question concerne l'efficacité d'exécution. En ce qui concerne l'efficacité du temps de codage, l'OS comprend diverses abstractions, interfaces et bibliothèques que les programmeurs d'applications peuvent utiliser pour alléger le fardeau du développement logiciel. Devoir les écrire à partir de zéro sans le support d'un système d'exploitation augmenterait considérablement l'effort de codage requis et prolongerait le temps de développement associé au développement d'applications.
Implémentation des mécanismes
Dans les systèmes d'exploitation, une politique est une manière de choisir les activités à effectuer (c'est-à-dire ce qui doit être fait) et un mécanisme est une activité qui applique les politiques (c'est-à-dire comment le faire), qui dépendent souvent du matériel sur lequel le système d'exploitation s'exécute. Si un processus se voit accorder des ressources en utilisant la politique premier arrivé, premier servi, alors cette politique peut être implémentée à l'aide d'une file d'attente de requêtes. Pour comprendre la relation entre les politiques et les mécanismes, considérons cette analogie. Une voiture est un mécanisme car elle permet des opérations telles que l'avancement, l'arrêt et le virage qui permettent à un conducteur d'aller du point A au point B. Notez que le mécanisme (dans ce cas, la voiture) ne dit rien sur la façon d'utiliser le mécanisme pour aller quelque part en particulier. Le conducteur fournit une politique en décidant d'un itinéraire. Comparons maintenant une voiture à un bus public. Dans ce cas, le chauffeur de bus détermine la politique. Il en va de même pour les voitures autonomes qui sont développées de nos jours. Elles servent de mécanisme car aucune décision concernant les itinéraires n'est intégrée aux voitures. Au lieu de cela, une voiture autonome utilise l'apprentissage automatique pour déterminer une politique, qui comprend la décision d'un itinéraire, la sélection de la procédure de conduite et la possibilité pour le conducteur de désactiver la conduite automatisée à tout moment.
Virtualisation au niveau de l'OS et des serveurs
La capacité d'un système ou d'un serveur à exécuter différents types d'applications utilisées par plusieurs utilisateurs à la fois sur le même ordinateur est appelée virtualisation. La virtualisation de serveur place une couche logicielle appelée hyperviseur (c'est-à-dire un moniteur de machine virtuelle, ou VMM) entre le matériel d'une machine (c'est-à-dire d'un serveur) et les systèmes d'exploitation qui y sont exécutés. L'hyperviseur crée et gère les machines virtuelles. Une machine virtuelle (VM) est un logiciel créé pour fonctionner comme un ordinateur physique et qui exploite son système d'exploitation et ses applications comme des serveurs physiques distincts. La virtualisation au niveau de l'OS est une forme de base de virtualisation de serveur. Lors de l'utilisation de la virtualisation au niveau de l'OS, il n'y a pas besoin d'hyperviseur car l'OS du serveur gère toutes les ressources.
L'informatique en nuage tire parti de la virtualisation de serveur et permet aux utilisateurs de commander des machines virtuelles. Dans ce cas, les serveurs résident dans des centres de données distribués fournis par des fournisseurs de services infonuagiques. La commande d'une machine virtuelle équivaut à obtenir l'accès à un ordinateur virtuel qui exécute un système d'exploitation choisi tout en louant le matériel sous-jacent et en ne payant que par utilisation (c'est-à-dire le coût du CPU, du stockage et de l'utilisation du réseau).
Architecture de l'OS et couches de support
Comme vous l'avez appris, l'OS est un programme logiciel système dont le travail est de gérer tous les programmes exécutés sur un ordinateur. Les OS permettent aux utilisateurs d'exécuter plusieurs applications en même temps et les empêchent d'interférer ou de se planter mutuellement. Les OS fournissent des abstractions pratiques pour gérer divers matériels. Ils coordonnent les ressources et protègent les utilisateurs les uns des autres à l'aide de quelques mécanismes matériels critiques. Les OS facilitent la création d'applications pour les développeurs en offrant des fonctionnalités intégrées qui aident à gérer les erreurs. Ces fonctionnalités incluent le confinement des pannes, qui empêche les erreurs dans une partie d'une application d'affecter l'ensemble du système ; la tolérance aux pannes, qui permet à l'application de continuer à fonctionner même lorsque des erreurs se produisent ; et la reprise après panne, qui aide le système à se réparer ou à revenir à un état antérieur après une erreur. Le fait que ces services standard soient fournis par l'OS signifie que les développeurs n'ont pas à construire ces fonctionnalités de gestion des erreurs à partir de zéro, ce qui simplifie le processus de développement. La Figure 6.3 montre les couches de support au sein de la structure du système UNIX/Linux. L'OS navigue entre trois couches : le mode utilisateur, où réside l'application ; le mode noyau, qui est en quelque sorte pris en sandwich entre l'utilisateur et le matériel ; et le matériel, qui fait référence à des ressources telles que le CPU et la mémoire. Dans les sections suivantes, nous décrirons ces modes et les fonctionnalités qu'ils prennent en charge en détail.
Lien vers l'apprentissage
Maintenant que vous avez été initié aux bases des systèmes d'exploitation, il ne vous surprendra peut-être pas que les systèmes d'exploitation existent sous toutes les formes et tailles. Il existe de nombreux types d'OS différents (des systèmes d'exploitation par lots aux systèmes d'exploitation réseau), et chaque type gère de nombreuses fonctions différentes (de la gestion de fichiers à la gestion de périphériques). Ce tutoriel sur les OS explique les différents types. Au fur et à mesure de votre lecture, réfléchissez à l'ampleur de votre interaction avec un OS au cours d'une seule journée, ou au nombre de systèmes d'exploitation différents avec lesquels vous interagissez.
Fonctionnalités du noyau de l'OS
Le noyau est le programme qui s'exécute en permanence sur l'ordinateur et fournit des services de base à toutes les parties de l'OS. Généralement, le noyau n'est pas le seul programme en cours d'exécution ; il y a généralement un programme système/système d'exploitation ou un programme d'application qui s'exécute également. Tout programme s'exécutant au-dessus de l'OS est considéré comme un processus du point de vue de l'OS. Il comprend le code du programme, son activité actuelle représentée par le compteur ordinal, et un ensemble de ressources comme les fichiers ouverts et la mémoire allouée. Il se compose également d'un espace d'adressage, d'un ou plusieurs fils d'exécution s'exécutant dans cet espace d'adressage, et d'un état système supplémentaire qui lui est associé. Le système d'exploitation utilise les processus pour gérer l'exécution des programmes, en s'assurant qu'ils disposent des ressources nécessaires tout en les maintenant séparés les uns des autres pour éviter les interférences.
Les applications logicielles doivent être compilées et liées avec des bibliothèques système avant de pouvoir s'exécuter comme programmes exécutables sur une machine. Chaque programme en cours d'exécution s'exécute dans son propre processus, et l'OS peut exécuter, commuter et isoler les processus les uns des autres même s'ils s'exécutent en réalité sur le même matériel. Pour une application donnée, la « machine » est l'abstraction de processus fournie par l'OS. Les processus fournissent des interfaces conviviales, plutôt que du matériel brut, et un environnement d'exécution avec des droits restreints contrôlés par l'OS.
Un OS virtualise la machine en fournissant des abstractions faciles à utiliser des ressources physiques tout en masquant les limitations. Dans ce contexte, un fil d'exécution est un chemin d'exécution au sein d'un processus, et un processus peut contenir plusieurs fils d'exécution. Ainsi, le multithreading implique l'exécution simultanée de plusieurs fils d'exécution (c'est-à-dire des unités d'exécution qui font partie d'un processus et partagent les mêmes ressources), ce qui améliore la réactivité et l'efficacité globales.
Lien avec les carrières
Systèmes d'exploitation et soins de santé
Dans le monde en évolution rapide de l'informatique, il est crucial de penser globalement. Cette perspective globale peut être particulièrement utile pour comprendre comment l'informatique et les OS affectent les soins de santé. Plus précisément, elle peut nous aider à comprendre le rôle des OS dans les soins aux patients, la recherche médicale et les efforts déployés pour rendre les soins de santé plus largement accessibles. Les défis associés au partage des données, à la confidentialité et aux disparités en matière de soins de santé ont un impact différent sur les régions du monde.
À mesure que la prestation des soins de santé s'intègre davantage à la technologie, les choix faits dans la conception de la manière dont les systèmes informatiques de santé utilisent les OS peuvent avoir un impact significatif sur la vie des personnes à travers le monde. Ces choix vont de la décision de prendre en compte les considérations éthiques lors de l'utilisation de l'IA pour le diagnostic à la création de solutions informatiques qui respectent les différences culturelles.
Découvrez ces initiatives de l'Organisation Mondiale de la Santé et des Centers for Disease Control and Prevention pour des exemples dans l'industrie des soins de santé.
Imaginez que vous envisagez d'entrer dans le domaine de l'informatique de la santé. Pouvez-vous imaginer des façons dont une pensée globale et la compréhension des capacités fournies par les OS pourraient améliorer votre capacité à résoudre des problèmes et à créer des solutions qui fonctionnent bien pour les systèmes de santé dans divers pays ?
Gestion du matériel
L'ISA définit comment le CPU est contrôlé par le logiciel en abstrayant les détails matériels des applications. L'OS fournit une interface de machine abstraite aux programmes d'application et s'appuie sur l'interface de machine physique pour ce faire. L'OS communique avec le matériel d'entrée-sortie (I/O) à l'aide de pilotes de périphérique, de ports I/O, d'interruptions, d'accès direct à la mémoire (DMA) et d'un ordonnancement efficace des I/O. Il fournit des abstractions pour manipuler des fichiers (c'est-à-dire des flux) et envoyer des messages au réseau (c'est-à-dire des sockets). Les langages de programmation fournissent des interfaces de programmation d'applications (application programming interface) (API) qui tirent parti de ces abstractions (par exemple, les I/O de fichiers, les bibliothèques de socket (socket)s et les API associées) afin que le programme d'application puisse accéder aux ressources sous-jacentes gérées par l'OS. L'une des principales responsabilités de l'OS est d'isoler le matériel des programmes en fournissant des services communs et des fonctionnalités de gestion en arrière-plan, par exemple, le gestionnaire de stockage, le gestionnaire de réseau et le gestionnaire d'alimentation.
L'OS est le seul système qui devrait pouvoir accéder directement aux périphériques I/O (c'est-à-dire les disques, les cartes réseau) et manipuler la mémoire. De plus, le matériel du CPU fournit une instruction privilégiée qui ne peut être exécutée que par l'OS. L'OS peut utiliser ces instructions pour établir un environnement d'exécution qui limite l'accès (par exemple, à la mémoire). L'application ne peut pas supprimer les restrictions car elle doit exécuter des instructions privilégiées pour le faire.
Certaines opérations sont interdites en mode utilisateur, telles que la modification du pointeur de table de pages (c'est-à-dire les pointeurs vers les pages de mémoire qui sont mises en cache pour un accès plus rapide), la désactivation des interruptions (c'est-à-dire les interruptions que l'OS a reçues des périphériques I/O), l'interaction directe avec le matériel et l'écriture dans la mémoire du noyau. Les transitions soigneusement contrôlées entre le mode utilisateur et le mode noyau incluent les appels système, les interruptions et les exceptions. L'appel système apparaît lorsque le programme demande un service au noyau. L'interruption système gère la communication entre le matériel informatique et le système. Le système lève une exception, qui est une erreur qui se produit à l'exécution.
Questions de réflexion
L'éthique des OS à code source ouvert
L'idée de rendre tous les systèmes d'exploitation à code source ouvert (c'est-à-dire que le détenteur des droits d'auteur publie le contenu ou le produit sous une licence qui permet à tout utilisateur d'y accéder, de le modifier et de le distribuer librement) présente à la fois des avantages et des inconvénients. Du côté positif, les systèmes d'exploitation à code source ouvert peuvent être plus sécurisés et innovants car n'importe qui peut inspecter et améliorer le code. Cette ouverture encourage également une communauté mondiale de développeurs à collaborer, ce qui peut potentiellement conduire à une technologie plus conviviale et accessible pour tous. De plus, l'ouverture s'aligne sur les principes éthiques de transparence et de liberté, car elle permet aux utilisateurs de comprendre et de contrôler pleinement leurs environnements numériques.
Il y a cependant aussi des inconvénients. Les projets à code source ouvert peuvent avoir du mal à obtenir un financement et un soutien professionnel constants, ce qui peut entraîner des mises à jour et des corrections plus lentes par rapport aux logiciels commerciaux. Il existe également un risque de fragmentation, où trop de variations du système peuvent créer des problèmes de compatibilité et dérouter les utilisateurs.
D'un point de vue éthique, l'utilisation de systèmes d'exploitation à code source ouvert à l'échelle mondiale peut démocratiser l'accès à la technologie, garantissant qu'aucune entreprise n'a trop de contrôle sur nos vies numériques. Elle encourage également une culture de partage et de collaboration, ce qui est essentiel pour relever les défis mondiaux tels que la fracture numérique et assurer un accès équitable à la technologie. Cependant, le succès d'un tel modèle dépend de l'équilibre entre l'ouverture et le besoin de systèmes de développement et de support durables pour maintenir la technologie fiable et à jour.
Les systèmes d'exploitation devraient-ils tous être à code source ouvert ? Discutez des avantages et des inconvénients.
Partage protégé
Les fonctions d'un OS devraient garantir la protection, l'isolation et le partage efficace des ressources via l'allocation des ressources et la communication. Pour implémenter le partage protégé, l'OS fournit des services communs (par exemple, le partage et l'autorisation). Il existe de nombreuses façons de tirer parti du partage de l'OS. L'une d'elles implique le partage de processeurs pour effectuer des calculs simultanément. Dans ce cas, ces calculs seront achevés comme si un seul processeur leur avait été alloué, bien qu'en réalité plusieurs processeurs effectuent les calculs/tâches en parallèle. Un OS permet également de partager la mémoire d'un ordinateur, les périphériques d'entrée-sortie et les fichiers au sein des tâches et des processus. Il peut également permettre à des groupes d'ordinateurs de travailler ensemble au sein du réseau et de partager des ressources. Toutes les capacités de partage sont contrôlées à l'aide de canaux sécurisés.