Operating systems

Operating systems

Système d'exploitation

Page d'aide sur l'homonymie Pour les articles homonymes, voir SE et OS.
système d'exploitation et logiciels applicatifs

Le système d'exploitation, abrégé SE (en anglais operating system, abrégé OS), est l'ensemble de programmes central d'un appareil informatique qui effectue les opérations de manipulation du matériel. Il sert à coordonner, optimiser et uniformiser l'utilisation du matériel informatique par les logiciels applicatifs.

Intermédiaire entre les logiciels applicatifs et le matériel, le système d'exploitation effectue de nombreuses opérations au service des logiciels applicatifs et offre ainsi une manière unifiée d'exploiter les périphériques de l'ordinateur par l'intermédiaire d'interfaces de programmation banalisées.

Les systèmes d'exploitation sont utilisés dans tout les appareils informatique: ordinateur, assistant personnel, ainsi que console de jeu, téléphone portable ou GPS.

Un système d'exploitation sert à coordonner l'utilisation du ou des processeurs, et accorder un certain temps pour l'exécution de chaque processus; à réserver de l'espace dans les mémoires pour les besoins des programmes et à organiser le contenu des disque durs ou d'autres mémoires de masse en fichiers et répertoires. Il sert aussi à créer l'image numérique qui contiendra les interfaces homme-machine des différents programmes et à l'envoyer au moniteur ainsi qu'à réceptionner les manipulations effectuées par l'utilisateur, et les transmettre aux différents programmes.

Divers logiciel utilitaires sont fournis avec le système d'exploitation. Ils permettent à l'utilisateur de régler des paramètres de configuration du système d'exploitation, ou d'effectuer des opérations basiques de manipulation des fichiers.

Les premiers systèmes d'exploitation ont été créés dans les années 1960, il en existe aujourd'hui plus de 100 sur le marché, ils sont souvent vendus avec les appareils informatique. En 2009 les familles de systèmes d'exploitation les plus populaires sont Unix et Windows, la famille Windows détient le quasi-monopole, avec plus de 90% de part de marché depuis 15 ans.

Sommaire

Typologie

Un système d'exploitation est typiquement composé d'une large palette de programmes. La composition exacte dépend de l'usage cible pour lequel le système d'exploitation est destiné : ordinateur personnel, serveur, superordinateur ou encore système embarqué.

Un système d'exploitation est conçu pour fonctionner avec une gamme particulière de machines (type de processeur, constructeur, architecture). Si un système d'exploitation est disponible pour plusieurs gammes machines différentes, alors le même code source est compilé [1] et adapté à chaque gamme de machine. La liste exacte des machines sur lesquelles il peut être utilisé dépend aussi de la palette de pilotes inclus dans le système d'exploitation.

Selon sa construction, un système d'exploitation peut être multi-tâches ou alors monotâche, multi-utilisateurs ou alors mono-utilisateur, il peut aussi être multiprocesseurs et/ou en temps réel.

  • Un système d'exploitation est dit multi-tâches quand il permet l'exécution simultanée de plusieurs programmes. Les premiers systèmes d'exploitation multi-tâches sont apparus dans les années 1960, et aujourd'hui tous les systèmes d'exploitation contemporains sont multi-tâches.
  • Il est dit multi-utilisateurs quand il est conçu pour être utilisé simultanément par plusieurs usagers, souvent à travers un réseau informatique. De tels systèmes d'exploitation sont typiquement utilisés pour des serveurs ainsi que des mainframe ou des superordinateurs, ils sont multi-tâches et sont souvent sécurisés c'est-à-dire qu'il vont refuser toute opération pour laquelle l'usager n'a pas préalablement reçu la permission.
  • Il est dit multi-processeurs quand il est conçu pour exploiter un ordinateur équipé de plusieurs processeurs. Dans de tels systèmes d'exploitation plusieurs programmes sont exécutés simultanément par les différents processeurs.
  • Il est dit temps réel quand les opérations sont garanties d'être effectuées dans un temps très court, et ce quelles que soient les conditions d'utilisation. De tels systèmes d'exploitation sont utilisés dans l'industrie, l'aéronautique ou l'électronique grand public pour créer des systèmes temps réel.


par exemple OS/2 est un système d'exploitation multitâches mono-utilisateur pour les ordinateurs personnels à l'architecture compatible PC, alors que Solaris est un système d'exploitation multi-utilisateurs et multiprocesseurs pour les stations de travail, les serveurs et les superordinateurs construits par Sun Microsystems. voir plus loin d'autres exemples.

Histoire

Dans les années 1940 les ordinateurs étaient programmés par manipulation d'interrupteurs à bascule, puis plus tard en perçant des trous dans des cartes perforées et en introduisant une pile de cartes dans un lecteur à la mécanique similaire aux pianos mécaniques.

Les ordinateurs, très coûteux, des années 1940 à 1960 étaient la propriété des entreprises et des institutions. Chaque utilisateur avait le droit d'utiliser l'ordinateur pendant un temps donné. Le temps était souvent déterminé par une horloge murale ou une pointeuse, l'utilisateur avait alors à disposition la totalité du matériel de l'ordinateur. Il apportait avec lui une pile de cartes perforées qui contenait les instructions du ou des programmes à exécuter.

Les ordinateurs de cette époque effectuaient une seule tâche à la fois, au service d'un seul utilisateur. Les programmes pour ces ordinateurs contenaient toutes les instructions nécessaires pour manipuler le matériel de l'ordinateur. Si la logithèque pour cet ordinateur comportait 50 programmes, les instructions nécessaires pour manipuler le matériel se retrouvaient dans tout les 50 programmes.

Avec l'agrandissement de la logithèque, l'idée est venue d'isoler les instructions routinières dans un programme séparé. Un programme qui réside continuellement dans la mémoire, quel que soit le programme en cours d'exécution.

1960, La multiprogrammation

Les ordinateurs des années 1960 étaient typiquement équipés d'un lecteur de carte perforée, d'une imprimante et d'un disque dur. Les ingénieurs ont constaté que les ordinateurs passaient plus de temps à attendre qu'un périphérique termine son travail qu'à exécuter des instructions.

Les systèmes d'exploitation ont alors été construits de manière à permettre l'exécution de plusieurs programmes à la fois. Un premier programme est exécuté, puis, dès que le premier attend sur un périphérique, le système d'exploitation enchaîne sur l'exécution d'un deuxième programme, voire un troisième et ainsi de suite. Cette technique dite de multiprogrammation est le précurseur du multitâche des systèmes d'exploitation d'aujourd'hui, proche du multitâche coopératif qui a été utilisé jusque dans les années 1990.

Les premiers systèmes d'exploitation multi-utilisateurs sont apparus dans les années 1970. Sur le principe de la multiprogrammation, le système d'exploitation exécute des programmes au service d'un des utilisateurs pendant une durée déterminée (quelques millisecondes), puis sert un autre utilisateur. Ce temps - très court par rapport au délai entre chaque frappe au clavier - donnait à l'utilisateur l'illusion que la machine travaillait uniquement pour lui - une illusion qui existe encore avec les systèmes d'exploitation contemporains.

La possibilité pour un ordinateur de servir simultanément plusieurs personnes augmentait le retour sur investissement de l'achat de matériel très coûteux par les entreprises et les institutions.

En 1965 le Massachusetts Institute of Technology se lance dans la création du premier système d'exploitation multitâches et multi-utilisateurs: Multics (pour multiplexed computing system ou système d'exploitation multiplexé). Ecrit en langage de programmation PL/1, trop complexe pour les ordinateurs de l'époque, Multics fût un échec commercial.

En 1969 les ingénieurs Ken Thompson et Dennis Ritchie des laboratoires Bell rêvent d'utiliser le système d'exploitation Multics, mais le matériel pour le faire fonctionner est tout simplement hors de prix. Ils se lancent alors dans l'écriture de leur propre système d'exploitation, qui reprends les idées de Multics, utilise un langage de programmation plus approprié (le C), et qu'il appellent avec humour Unix (pour uniplexed computing system)[2][3].

1975, Les micro-ordinateurs

Sorti en 1975, le Altair 8800 était le premier micro-ordinateur du monde. Un appareil livré en kit au prix approximatif de 400 $, et qui se programmait en inversant une série d'interrupteurs à bascule situés sur la face avant de l'appareil. Le prix du Altair 8800 le rendait accessible pour une personne seule. Mais son utilisation compliquée (qui rappelle les ordinateurs centraux des années 1940) limitait son utilisation à des passionnés et des hobbyistes.

En 1975 les micro-ordinateurs n'avaient pas une puissance de calcul suffisante pour être équipés d'un système d'exploitation comme Unix ou OS/360. Gary Kildall, ingénieur pour Intel crée CP/M, le premier système d'exploitation pour micro-ordinateur.

En 1980, IBM prend contact avec Gary Kildall, pour lui demander d'adapter CP/M à son nouveau micro-ordinateur, le Personal Computer (abrégé PC). Gary Kildall refuse de signer le contrat, et IBM se tourne alors vers Microsoft. La startup de Bill Gates, qui n'a encore jamais développé de système d'exploitation prend six mois pour créer MS-DOS sur la base de QDOS - un système d'exploitation quick-and-dirty pour les processeurs Intel 8086[4].

C'est à la même époque que Steve Jobs et Steve Wozniak fondent la startup Apple Computer, avec comme optique de faire du micro-ordinateur un produit grand public aussi facile d'usage que n'importe quel appareil électrique.

Xerox, une des sociétés majeures de l'époque s'intéresse à l'optique de Steve Jobs, réunit une poignée de scientifiques et d'ingénieurs dans son centre de recherche de Palo Alto, et, sur la base de thèses et d'études effectuées les années auparavant, développe le premier micro-ordinateur équipé d'une interface utilisateur graphique. Le résultat des recherches, le Xerox Star ne sera jamais commercialisé et c'est Apple, dix ans plus tard, avec le Macintosh, qui popularise les recherches effectuées par Xerox[5].

1990, Les systèmes d'exploitation sous licence libre

en 1987, Andrew Tanenbaum, professeur à l'Université libre d'Amsterdam crée le système d'exploitation Minix, dont le code source est destiné à illustrer son cours sur la construction des systèmes d'exploitation. La totalité du code source se trouve dans son livre Operating Systems: Design and Implementation. Inspiré — mais peu convaincu[6] — par les travaux de Tanenbaum, Linus Torvalds, étudiant à l'université d'Helsinki se lance dans le développement de son propre système d'exploitation: Linux.

En même temps, Richard Stallman du Massachusetts Institute of Technology lance l'idée d'un système d'exploitation sous licence libre, qu'il appelle GNU. Il développe des programmes destinés aux programmeurs, des logiciels utilitaires, et crée la GNU General Public License - un contrat de licence exempt de droits d'auteur.

De l'autre côté des États-Unis, les étudiants et les rechercheurs de l'université de Berkeley créent des logiciels utilitaire pour Unix. Ces logiciels sous licence libre sont vendus avec le noyau Unix de AT&T, lui-même sous licence propriétaire, sous le nom Berkeley Software Distribution (traduction: la suite de logiciels de Berkeley) - abrégé BSD.

Cette double licence de BSD est à l'origine de plusieurs années de litiges entre l'Université de Berkeley et AT&T[7]. Les étudiants de l'université travaillent à remplacer des programmes développés par AT&T par leurs propres programmes, sous licence libre, afin de résoudre le litige. Cette situation dura jusqu'à la sortie de 4.4BSD en 1994. Quelque temps après l'université de Berkeley abandonne le développement de BSD[8].

C'est à la suite des initiatives et travaux de Linus Torvalds et Richard Stallman, aidés par des milliers de bénévoles et à la suite des travaux des étudiants de l'université de Berkeley que GNU/Linux et 4.4BSD sont devenus les premiers systèmes d'exploitation sous licence libre[9].

Composition

Un système d'exploitation comporte typiquement de nombreux programmes. La palette de programmes incluse diffère d'un système d'exploitation à l'autre en fonction de l'ordinateur cible pour lequel il est prévu (ordinateur personnel, serveur, assistant personnel...).

Si le système d'exploitation est destiné à être utilisé sur un ordinateur personnel ou une console de jeu vidéo, l'interface graphique sera raffinée et ergonomique. S'il est destiné à être utilisé sur un serveur, il comprendra une large palette de protocoles et de pilotes pour du matériel réseau, sera multitâches et muni de contrôles d'accès.

Un système d'exploitation destiné à des superordinateurs sera massivement multiprocesseur, c'est-à-dire qu'il pourra être utilisé sur un ordinateur équipé de centaines voire de milliers de processeurs. Et le nombre de pilotes sera restreint au minimum et le système d'exploitation sera prévu pour être enregistré sur une mémoire morte s'il est destiné à un assistant personnel ou un téléphone portable.

Interface de programmation

Article détaillé : Interface de programmation.

Le système d'exploitation effectue de nombreuses actions sur demande des logiciels applicatifs. Le point d'interaction entre un logiciel applicatif et le système d'exploitation est appelé interface de programmation (anglais Application Programming Interface abrégé API). Ce peut être des fonctions mises à disposition dans des bibliothèques logicielles, ou des logiciels serveur qui répondent aux requêtes envoyées par les logiciels applicatifs.

L'utilisation de la même interface de programmation quel que soit le matériel, le protocole ou le système de fichier concerné assure la portabilité des logiciels applicatifs : un logiciel applicatif donné pourra fonctionner sur différents ordinateurs, quelle que soit leur configuration, en particulier quel que soit le matériel, le système de fichier ou le protocole utilisé.

POSIX (acronyme de l'anglais Portable Operating System Interface) est une norme relative à l'interface de programmation du système d'exploitation. De nombreux systèmes d'exploitation sont conformes à cette norme, notamment les membres de la famille Unix.

L'ordonnanceur

Article détaillé : Ordonnanceur.

L'ordonnanceur (anglais scheduler) est le programme du système d'exploitation qui contrôle le déroulement des autres programmes. C'est le premier programme exécuté au démarrage du système d'exploitation. Dans un système d'exploitation multitâches l'ordonnanceur assure l'exécution simultanée de plusieurs programmes (concurrence) ainsi que les échanges d'informations entre les programmes.

L'exécution simultanée de plusieurs programmes est réalisée de la manière suivante: l'ordonnanceur commande l'exécution à tour de rôle de chaque programme par le ou les processeurs de l'ordinateur, chaque processeur exécute les instruction d'un programme pendant une fraction de seconde, puis l'ordonnanceur effectue une commutation de contexte (anglais context switch), suspend l'exécution du programme en cours et passe au programme suivant.

Les échanges d'informations entre les programmes se font à l'aide de messages stockés en mémoire, l'ordonnanceur s'occupe de collecter les messages et les mettre à disposition de chaque destinataire. Tout programme qui attend un message sera interrompu jusqu'à l'arrivée d'un message et l'ordonnanceur évitera toute commutation de contexte vers le programme en attente.

La mémoire virtuelle

Article détaillé : mémoire virtuelle.

Le mécanisme dit de mémoire virtuelle est destiné à simuler la présence ou l'absence de mémoire centrale par manipulation de l'unité de gestion mémoire (anglais Memory Management Unit abrégé MMU). C'est un mécanisme courant dans les systèmes d'exploitation.

L'unité de gestion mémoire est un composant matériel présent dans de nombreux ordinateurs. Il est branché entre le processeur et la mémoire centrale. Un programme du système d'exploitation manipule les tables de correspondance de l'unité de gestion mémoire. Ce qui a l'effet suivant: lorsque le processeur - conformément aux instruction d'un programme - va rechercher des informations à une adresse mémoire précise (adresse virtuelle), il demande à l'unité de gestion mémoire, qui va alors aller rechercher cette information à l'emplacement qui correspond selon la table de correspondance (adresse physique).

L'unité de gestion mémoire possède plusieurs tables de correspondance. Les systèmes d'exploitation utilisent généralement deux tables: une pour le mode kernel et une pour le mode utilisateur. La table du mode kernel est arrangée de manière à permettre au processeur d'utiliser la totalité de la mémoire centrale disponible, cette table est utilisée lors de l'exécution des programmes du noyau du système d'exploitation. La table du mode utilisateur est arrangée de manière à simuler la présence de mémoire et protéger le noyau ; cette table est utilisée lors de l'exécution des programmes hors du noyau.

Pour simuler la présence de mémoire (mémoire virtuelle), le système d'exploitation manipule les tables de correspondance de manière à ce que plusieurs emplacements de la table correspondent tous à un seul emplacement de mémoire centrale. Lorsque le processeur - conformément aux instruction d'un logiciel applicatif - va rechercher des information à un de ces emplacements, l'unité de gestion mémoire déclenche l'exécution d'un programme particulier du système d'exploitation. Ce programme va alors échanger (anglais swap) le contenu de cet emplacement de mémoire centrale avec une copie du contenu enregistrée dans un emplacement de mémoire de masse prévu à cet effet - typiquement un fichier ou une partition de disque dur. Pour le logiciel applicatif tout se passe comme si l'ordinateur avait plus de mémoire que ce qui est réellement disponible en mémoire centrale.

L'unité de gestion de mémoire est aussi utilisée pour réaliser la protection du noyau du système d'exploitation. Lorsqu'un logiciel applicatif est en cours d'exécution, la table de correspondance est arrangée préalablement par le système d'exploitation de manière à ce que les adresses mémoires du noyau correspondent à un autre emplacement, le noyau est ainsi invisible pour le logiciel en question. Cette technique est aussi utilisée pour isoler les logiciels applicatifs l'un de l'autre.

Pilotes

Article détaillé : Pilote informatique.

Un pilote (anglais driver) est un programme qui contient les instructions à exécuter pour utiliser un certain périphérique informatique, il assure l'utilisation banalisée du périphérique. Les pilotes sont fournis par l'auteur du système d'exploitation ou le fabricant du périphérique.

Un système d'exploitation contient typiquement de nombreux pilotes correspondant à de nombreux composants matériel susceptibles d'être montés dans l'ordinateur. L´interface de programmation est similaire sur tous les pilotes, tandis que les instructions du programme différent en fonction des caractéristiques de chaque composant matériel.

Le système d'exploitation dirige l'utilisation des pilotes par les logiciels applicatifs. Il intervient lorsque plusieurs logiciels applicatifs tentent d'utiliser le même matériel en même temps, et active ou désactive les pilotes en fonction du matériel présent dans l'ordinateur.

Lors de chaque événement survenu sur un périphérique (celui-ci a reçu des informations, il a fini de les envoyer, l'utilisateur a effectué une manipulation...), celui-ci provoque une interruption matérielle, un mécanisme électronique qui provoque une commutation de contexte; le système d'exploitation déclenche alors l'exécution des instructions du pilote concerné.

Les logiciels applicatifs ainsi que le système d'exploitation peuvent également, au besoin, déclencher l'exécution des instructions d'un pilote.

Système de fichiers

Article détaillé : Système de fichier.

Un système de fichier (anglais file system) est une structure en arbre dans laquelle sont stockés des fichiers ainsi que d'autres informations. Divers programmes du système d'exploitation s'occupent de répartir les fichiers sur les mémoires de masse tels que les disque durs et de les relier pour former la structure du système de fichiers.

Il existe diverses manières de disposer les fichiers dans une mémoire de masse. Une mémoire de masse qui a été remplie avec un système d'exploitation selon une disposition donnée sera reconnue par un autre système d'exploitation uniquement si celui-ci reconnaît la disposition en question. Les mémoires amovibles telles que les CD ou les DVD ont une disposition normalisée dont les spécifications sont publiques, ce qui assure leur reconnaissance par tous les systèmes d'exploitation (voir ISO 9660 et UDF).

Un système d'exploitation contient typiquement différents programmes qui servent à manipuler un système de fichier. Chaque programme manipule les fichiers conformément à une disposition donnée. Ces programmes effectuent des opérations telles que créer des fichiers, les copier, les supprimer, créer et supprimer des répertoires ainsi que formater la mémoire de masse c'est-à-dire créer une structure vide. voir FAT, HFS ou ext2fs.

Lorsque le système de fichier est distribué, c'est-à-dire que les fichiers sont stockés sur différents ordinateurs d'un réseau informatique, le système d'exploitation envoie une requête à l'ordinateur qui stocke le fichier pour chaque opération à effectuer (voir NFS ou CIFS).

Dans un système d'exploitation multi-utilisateurs, les programmes qui manipulent le système de fichier effectuent des contrôles pour vérifier qu'aucun fichier n'est manipulé par une personne non autorisée. Le système d'exploitation refusera toute manipulation non autorisée.

Réseau

Article détaillé : Réseau informatique.

Dans un réseau informatique, deux ordinateurs reliés arrivent à communiquer du moment que les communications se font de part et d'autre selon les mêmes protocoles réseau. Selon le modèle OSI, les différents protocoles existants sont répartis sur sept niveaux, où un protocole d'un niveau donné peut être combiné avec n'importe quel protocole des niveaux situés en dessus et en dessous (voir encapsulation).

Un système d'exploitation contient typiquement plusieurs programmes nécessaires pour des échanges d'informations dans différents protocoles des niveaux 1 à 4. Tandis que les niveaux 5 à 7 sont pris en charge par les logiciels applicatifs.

Pour les échanges d'informations selon les protocoles de niveau 1 et 2, le système d'exploitation demande l'opération au matériel de l'ordinateur par l'intermédiaire d'un pilote informatique, pilote qui peut faire partie intégrante du système d'exploitation ou être fourni par le constructeur du matériel.

Lors de l'envoi d'informations sur le réseau, un logiciel applicatif crée une information, la met en forme conformément aux protocoles des niveaux 7 à 5, puis la transmet au système d'exploitation. Divers programmes du système d'exploitation vont découper cette information en trames, puis vont mettre en forme les trames et les envoyer conformément aux protocoles des niveaux 4 à 1.

Lors de la réception de trames depuis le réseau, divers programmes du système d'exploitation vont tenter de les décoder conformément à différents protocoles des niveaux 1 à 4, puis transformer la suite de trames en un flux continu, qui sera envoyé au logiciel applicatif destinataire. Le logiciel va alors décoder le flux conformément aux protocoles de niveaux 5 à 7. Le logiciel applicatif effectue préalablement une connexion, c'est-à-dire une liaison logique par laquelle il va s'associer avec un flux particulier.

Le choix exact des protocoles utilisés dépend de l'ordinateur concerné et des liaisons réseau qui vont être utilisées. Divers paramètres de configuration permettent d'influencer le choix des protocoles. Ils permettent par exemple d'empêcher l'utilisation de protocoles interdits sur le réseau concerné.

Contrôle d'accès

Article détaillé : contrôle d'accès logique.

Dans un système d'exploitation multi-utilisateurs, un ensemble de programmes assure la sécurité des informations enregistrées dans les mémoires ainsi que la disponibilité de l'ordinateur, ceci afin de préserver la confidentialité et éviter que de manipulations effectuées par un utilisateur perturbent l'utilisation de l'ordinateur par les autres utilisateurs. Cette fonctionalité est souvent absente des systèmes d'exploitation pour les appareils personnels.

Dans ces systèmes d'exploitation tout utilisateur doit préalablement décliner son identité avant d'utiliser l'ordinateur. Puis un programme du système d'exploitation vérifie cette identité par rapport à un annuaire ou un référentiel (voir authentification). Le système d'exploitation établit alors une liste des opérations autorisées ou interdites à l'utilisateur en fonction des règlements (anglais policies) qui ont été introduits par l'administrateur sécurité - la personne responsable de la sécurité des informations.

Lors de chaque opération demandée par un logiciel applicatif, le système d'exploitation vérifie préalablement si l'utilisateur qui manipule le logiciel applicatif est autorisé à effectuer cette opération. La vérification se fait sur la base des règlements ainsi que des listes de droits d'accès introduits par l'administrateur sécurité. Le système d'exploitation refusera toute opération non autorisée et inscrira le refus dans un journal d'activité.

En particulier, le système d'exploitation peut refuser à un utilisateur de lire, de modifier, ou de supprimer un fichier, selon la liste des droits d'accès introduits concernant ce fichier. Le nom des personnes autorisées à modifier les listes de droit d'accès est également indiqué dans la liste de droits d'accès.

Le système d'exploitation va également refuser la mise hors service de programmes centraux tels que les logiciels serveur ou des programmes du système d'exploitation par tout utilisateur qui n'a pas préalablement recu le privilège d'effectuer cette opération - selon les règlements introduits par l'administrateur de sécurité.

Lorsqu'un logiciel autonome (bot informatique) demande des opérations au système d'exploitation, le logiciel doit préalablement décliner son identité en tant que produit puis, sur la base de cette identité, le système d'exploitation effectue les mêmes vérifications que pour une personne physique.

Les mécanismes de contrôle d'accès ont aussi pour effet de lutter contre les logiciels malveillants - ceux-ci effectuent souvent des opérations susceptibles de perturber l'utilisation de l'ordinateur.

Interface utilisateur

Un ensemble de programmes du système d'exploitation réceptionnent les informations envoyées par les logiciels applicatifs, et les placent sur une image numérique qui sera envoyée au matériel par l'intermédiaire d'un pilote. En complément un autre ensemble de programmes réceptionnent les manipulations effectuées par l'usager par l'intermédiaire de pilotes puis les transmettent au logiciel concerné. Ces deux ensembles créent l'interface homme-machine qui permet à un usager d'interagir avec la machine.

Le système d'exploitation peut également dialoguer avec un usager par l'intermédiaire d'un autre ordinateur ou d'un terminal (interface distribuée). Les informations envoyées par les logiciels applicatifs seront alors envoyées à l'autre ordinateur selon un protocole prévu à cet effet, tandis que l'autre ordinateur enverra les manipulations effectuées par l'utilisateur. voir SSH, RFB ou X Window System.

Lorsque l'interface est en mode texte, l'image numérique est une grille dans laquelle sont placés des caractères d'imprimerie, la grille comporte typiquement 80 colonnes et 35 lignes. L'interface se manipule typiquement avec un clavier. Ce type d'interface, qui existe depuis les début de l'informatique est aujourd'hui remplacé par les interfaces graphiques.

L'interface utilisateur graphique

Article détaillé : Interface graphique.

Dans une interface utilisateur graphique (anglais Graphical User Interface abrégé GUI), l'image numérique est composée par un programme du sytème d'exploitation par superposition de points, de lignes, de pictogrammes et de caractères d'imprimerie. Ce programme peut utiliser le processeur graphique de l'ordinateur.

Lors des manipulations de la souris, le système d'exploitation déplace l'élément d'image qu'est le curseur et effectue les calculs nécessaires pour déterminer quel est l'élément de l'image qui se trouve juste en dessous. À chaque élément de l'image peut être associé un programme. Un widget est un programme qui dessine et anime un élément d'image, cet élément prend typiquement l'aspect d'un bouton poussoir ou d'une lampe témoin. Divers widgets sont fournis avec le système d'exploitation.

Les programmes pour interface graphique sont aujourd'hui (2009) inclus dans tous les systèmes d'exploitation contemporains. Le X Window System est l'ensemble des programmes pour interface utilisateur graphique inclus dans tous les systèmes d'exploitation de la famille Unix.

Logiciels utilitaire

Article détaillé : Logiciel utilitaire.

Un logiciel applicatif sert à assister l'utilisateur dans une activité. Les logiciels utilitaires sont des logiciels applicatifs qui servent à permettre à l'utilisateur d'effectuer des manipulations basiques telles que démarrer des programmes, copier des fichiers ou modifier des paramètres de configuration. Divers logiciels utilitaires sont fournis avec les systèmes d'exploitation. exemples:

Un interpréteur de commandes est un programme qui permet d'exécuter d'autres programmes en écrivant leur nom éventuellement suivi de divers paramètres. Il est accompagné de plusieurs programmes qui permettent la manipulation des fichiers (copie, changement de nom...). Ce type de programme est utilisé pour effectuer des manipulations ou exécuter des scripts — suites de manipulations pré-enregistrées (voir commande informatique).

Un environnement de bureau est un programme dans lequel les différents éléments de l'ordinateur (programmes, fichiers,disques durs) sont présentés sous forme de pictogrammes sur lesquels il est possible d'effectuer différentes actions. Il sert typiquement à exécuter des programmes, et à effectuer différentes opérations sur les fichiers: copie, changement du nom, déplacement ou suppression.

Divers programmes servent à aider l'utilisateur à modifier les paramètres de configuration du système d'exploitation. Ceux-ci proposent des listes à choix multiples et effectuent des contrôles de validité avant le modifier les paramètres.

Divers programmes servent à installer des logiciels, c'est-à-dire copier les fichiers dans les emplacements prévus à cet effet, et effectuer les modifications de configuration nécessaire pour rendre le logiciel opérationnel. Ces programmes peuvent aussi servir à consulter la liste des logiciels actuellement installés dans l'ordinateur.

Un système d'exploitation multi-utilisateurs est typiquement fourni avec des programmes permettant de surveiller l'activité de l'ordinateur — consultation de journaux d'activité — ou modifier les listes de droits d'accès en vue d'autoriser ou d'interdire un fichier à certains utilisateurs.

Architecture

monolithique ou micronoyau

Un système d'exploitation est typiquement organisé en 3 couches distinctes. A la couche supérieure se trouve l'interface de programmation, reliée d'un coté avec la couche centrale du système d'exploitation et de l'autre avec les logiciels applicatifs, dont font partie les logiciels utilitaires fournis avec le système d'exploitation. A la couche inférieure se trouvent typiquement l'ordonnanceur, la gestion de mémoire (voir mémoire virtuelle) et les pilotes, reliés à la couche centrale d'un coté et au matériel de l'ordinateur de l'autre. Au centre se trouvent les composants principaux du système d'exploitation tels que les programmes pour les systèmes de fichiers et le réseau. La couche d'abstraction matérielle (anglais hardware abstraction layer abrégé HAL) est une couche inférieure qui contient uniquement des pilotes.

Le noyau

Article détaillé : noyau de système d'exploitation.

Le noyau (anglais kernel) est un espace mémoire isolé, dans lequel est placé tout ou partie du système d'exploitation. Dans le langage courant le terme kernel désigne l'emplacement ainsi que l'ensemble des programmes qu'il contient et qui forment le cœur rigide du système d'exploitation. Le contenu du noyau ne peut pas être modifié par inadvertance par les logiciels applicatifs — une modification provoquerait un crash de l'ordinateur.

Noyau monolithique

L'architecture est dite à noyau monolithique lorsque la totalité des programmes du système d'exploitation (en particulier les pilotes, le programmes qui traitent le réseau et le système de fichier) résident dans l'espace du noyau. Dans cette architecture chaque utilisation d'une fonction de l'interface de programmation provoque une commutation de contexte et le passage en mode kernel (voir mémoire virtuelle).

Linux, FreeBSD, OpenVMS ou Solaris sont des systèmes d'exploitation à noyau monolithique.

Micro-noyau

L'architecture est dite micro-noyau (anglais microkernel) lorsque le noyau contient le strict minimum, c'est-à-dire l'ordonnanceur et le programme qui simule la mémoire virtuelle, et que la grande majorité des programmes se trouvent en dehors: les pilotes, les programmes qui traitent les systèmes de fichiers ou l'interface graphique, ainsi que les logiciels applicatifs.

Dans cette architecture les nombreux programmes qui se trouvent en dehors du noyau sont isolés les uns des autres, sont exécutés comme des logiciels applicatifs — en concurrence — et utilisent les fonctionnalités du noyau pour s'échanger des messages. L'utilisation des fonctions de l'interface de programmation entraîne l'émission de nouveaux messages.

Minix, BeOS, Mac OS X ou QNX sont des systèmes d'exploitation à micro-noyau.

Noyau hybride

Divers systèmes d'exploitation ont une architecture qui a certaines caractéristiques des micro-noyau et en même temps des noyaux monolithiques. Cette architecture est appelée noyau hybride macro-noyau ou micro-noyau modifié.

Dans cette architecture, la totalité des programmes du système d'exploitation résident dans le noyau, à la façon d'un noyau monolithique. Cependant de nombreux programmes du système d'exploitation sont exécutés en concurrence comme des logiciels applicatifs, à la manière de l'architecture micro-noyau (processus noyau).

Pour les processus du noyau, l'ordonnanceur effectue des commutations de contexte entre les processus de la même manière qu'entre les logiciels applicatifs, ces processus utilisent les fonctions de l'ordonnanceur pour s'échanger des messages et l'utilisation des fonctions de l'interface de programmation entraîne l'émission de nouveaux messages.

Windows NT ou NetWare sont des systèmes d'exploitation à noyau hybride[10].

Exo-noyau

Dans l'architecture exo-noyau (du grec exos = hors de), Il n'y a pas d'emplacement isolé, et le système d'exploitation est composé de programmes et de bibliothèques logicielles de construction identique à celles des logiciels applicatifs.

L'utilisation de fonctions de l'interface de programmation provoque l'exécution des instructions contenues dans une bibliothèque logicielle du système d'exploitation sans nécessiter une commutation de contexte. Une des bibliothèques logicielle est utilisée pour la transmission et la réception de messages entre les processus, les instructions de l'ordonnanceur sont incluses dans cette bibliothèque.

Mac OS, AmigaOS et Oberon sont des systèmes d'exploitation en architecture exo-noyau.

Quelques exemples

Article détaillé : Liste des systèmes d'exploitation.
Comparaison des principaux systèmes d'exploitation
Année d'apparition Nom Famille Éditeur Matériel supporté Utilisation Noyau Graphique Multitâche Multi-utilisateur Multiprocesseur Temps réel
1977 VMS DEC VAX, DEC Alpha, Hewlett-Packard serveurs, ordinateurs centraux Fait Fait
1978-1985 CP/M Digital Research Amstrad CPC, Commodore 128, TRS-80 ordinateurs personnels
1981-1990 DOS IBM Compatible PC ordinateurs personnels
1981 Solaris Unix Sun machines de Sun serveurs, stations de travail, superordinateurs Fait Fait Fait Fait Fait
1982 QNX Quantum Software Systems compatibles PC, MIPS, PowerPC, ARM systèmes embarqués, automates industriels Fait Fait Fait Fait Fait
1984 Mac OS Apple Apple Macintosh ordinateurs personnels Fait Fait
1984 AmigaOS Commodore Commodore Amiga, PowerPC ordinateurs personnels et consoles de jeu Fait Fait Fait
1986 AIX Unix IBM PS/2, RS/6000, PowerPC ordinateurs personnels, serveurs, stations de travail, superordinateurs Fait Fait[11] Fait Fait
1986 Irix Unix SGI machines de SGI stations de travail et serveurs Fait Fait Fait Fait Fait
1986-1996 NeXTSTEP Unix NeXT Compatible PC, SPARC, Hewlett-Packard stations de travail Fait Fait Fait Fait
1987-2006 OS/2 IBM et Microsoft PS/2 et Compatible PC ordinateurs personnels Fait Fait Fait
1987 Minix Andrew Tanenbaum Compatible PC, m68k, SPARC (académique)[12] Fait Fait[13] Fait
1989 Symbian OS[14] Symbian ltd[15] Nokia, Siemens, Samsung, Panasonic téléphones portables, smartphone, assistants personnel Fait[16] Fait Fait Fait
1991 Linux Unix (communautaire) nombreux[17] tous Fait Fait Fait Fait Fait
1991[18] Windows NT Windows Microsoft Compatible PC serveurs, stations de travail, ordinateurs personnels Fait Fait Fait Fait
1994[19] NetBSD Unix (communautaire) nombreux[20] tous Fait Fait Fait Fait Fait
1994[19] FreeBSD Unix (communautaire) nombreux[21] tous Fait Fait Fait Fait Fait
1995 Windows 95 Windows Microsoft Compatible PC ordinateurs personnels Fait[22] Fait Fait
1996 Windows CE Windows Microsoft x86, MIPS, ARM[23] smartphone, assistants personnels Fait[24] Fait Fait
1999[25] Mac OS X Unix Apple PowerPC de Apple ordinateurs personnels, serveurs, station de travail Fait Fait Fait Fait

Le marché

Née en 1985, la gamme des systèmes Windows équipe aujourd'hui 90 % des ordinateurs personnels, ce qui la place en situation de monopole notamment auprès du grand public. En 2008 ses parts de marché sont descendues en dessous de 90% pour la première fois depuis 15 ans[26].

Initiée en 1969, la famille de systèmes d'exploitation Unix compte plus de 25 membres[27]. Linux, BSD et Mac OS X sont aujourd'hui les systèmes d'exploitation les plus populaires de la famille Unix.

La famille Windows équipe aujourd'hui 38 % des serveurs tandis que la famille Unix équipe 31 %, dont à peu près la moitié avec Linux[28]. La famille Unix anime 60 % des sites web dans le monde[29] et Linux équipe 95 % des près de 500 superordinateurs du monde[30].

Né en 1990, Symbian OS est – en 2007 – le système d'exploitation le plus répandu sur les téléphones portables et assistants personnels, avec 67 % de part de marché[31].

De nombreux logiciels applicatifs sur le marché sont construits pour fonctionner avec un système d'exploitation en particulier, ou une famille en particulier et un système d'exploitation est construit pour fonctionner avec une gamme de machines donnée. Pour l'acheteur le choix de la famille de machine limite le choix du système d'exploitation, qui lui-même limite le choix des logiciels applicatifs.

Chaque système d'exploitation, selon la palette de programmes qu'il contient, est construit pour fonctionner avec certains réseaux informatique. Pour l'acheteur qui possède un réseau informatique (typiquement les entreprises et les institutions) le choix du système d'exploitation dépend de son adéquation au réseau existant de l'acheteur.

Ces dépendances, combinées avec un effet de réseau [32]important font que le choix de l'un ou l'autre système d'exploitation par le consommateur se fait le plus souvent selon des critères pratiques et que le marché est sujet aux situations de monopole.

Apple, Sun Microsystems et Silicon Graphics sont des marques qui développent des systèmes d'exploitation pour leur propre matériel informatique.

Concurrence, compatibilité et interopérabilité

La compatibilité d'un système d'exploitation est sa capacité à être utilisé à la place d'un autre, en particulier à exécuter les logiciels applicatifs de l'autre. Le système d'exploitation est dit compatible avec l'autre. La compatibilité au niveau source est la capacité pour un système d'exploitation A d'exécuter un logiciel applicatif créé pour B après avoir compilé le code source du logiciel pour la machine A. Et la compatibilité binaire est la capacité pour un système d'exploitation A d'exécuter un logiciel applicatif créé pour B tel quel, sans avoir à le recompiler.

interopérabilité est la capacité de plusieurs systèmes de pouvoir être utilisés ensemble. Par exemple dans un même appareil, ou dans un réseau informatique.

Pour être compatibles, deux systèmes d'exploitation doivent avoir des points communs, notamment sur l'interface de programmation. La compatibilité binaire n'est possible qu'entre deux systèmes d'exploitation qui fonctionnent avec la même famille de processeur.

La compatibilité et l'interopérabilité entre les systèmes d'exploitation est assurée par les éditeurs par l'alignement de leur produit à des normes industrielles ainsi que des technologies rendues publiques.

Le système d'exploitation Unix, créé en 1969 a servi de source d'inspiration pour toute une famille de systèmes d'exploitation. Le jeu de la concurrence, très vive dans les années 1980, a amené les différents membres de la famille Unix à se distancier, et perdre la compatibilité l'un avec l'autre. Des organismes de normalisation tels que le Open Group se sont penchés sur le problème et ont édictés des normes qui garantissent la compatibilité à travers toute la famille Unix.

Entre 1995 et 2007, Microsoft, éditeur de la suite de systèmes d'exploitation Windows a été l'objet de plusieurs procès pour des pratiques anticoncurrentielles qui nuisent à la concurrence et à l'interopérabilité. La société a été condamnée par le département de la justice des États-Unis pour violation du Sherman Antitrust Act ainsi que par la Commission Européenne pour violation des traités relatifs à la concurrence dans l'Union Européenne.

La popularisation d'Internet dans les années 1990 a contribué à améliorer l'interopérabilité entre les systèmes d'exploitation.

La guerre des Unix et le Open Group

Le système d'exploitation Unix a été développé par AT&T en 1969. Plus tard d'autres éditeurs s'en sont inspirés pour créer des systèmes d'exploitation semblables, notamment l'université de Berkeley, avec sa Berkeley Software Distribution (BSD). Puis ceux-ci ont servi de source d'inspiration pour d'autres systèmes d'exploitation, et ainsi de suite. En 2009, la famille Unix compte plus de 25 systèmes d'exploitation.

Le jeu de la concurrence a amené chaque éditeur à ajouter ses propres améliorations et ses propres fonctionnalités à son système d'exploitation optimisé pour un matériel en particulier. Ce qui a amené les différents membres de la famille Unix à se distancier, et perdre la compatibilité l'un avec l'autre.

En 1987, dans le but de réunifier la famille Unix, AT&T conclut un accord avec Sun Microsystems (un des principaux éditeur de système d'exploitation basé sur BSD). Les autres éditeurs ne voient pas cet accord d'un bon œil, et créent la fondation Open Software Foundation (abrégé OSF). En même temps le Open Group, un consortium de normalisation, publie des normes relatives aux systèmes d'exploitation de la famille Unix[33]. Les deux institutions sont aujourd'hui fusionnées.

POSIX est le nom donné aux normes IEEE 1003. Cette famille de normes appartenant à l'Open Group a été lancée en 1988 et concerne l'interface de programmation. La conformité d'un système d'exploitation à cette norme assure la compatibilité au niveau source. En 2009, de nombreux systèmes d'exploitations sont conformes à cette norme, y compris en dehors de la famille Unix[34].

POSIX fait partie de la Single Unix Specification, une norme lancée en 1994 par le Open Group, qui concerne les systèmes de fichiers, les logiciels utilitaires, ainsi que 1 742 fonctions de l'interface de programmation[35]. Le nom Unix appartient à l'Open Group et tout système d'exploitation doit être conforme à la Single Unix Specification pour être reconnu comme faisant partie de la famille Unix[36].

Microsoft et la concurrence

En 1995, conformément au Sherman Antitrust Act, le département de la justice des États-Unis interdit à Microsoft certaines de ses pratiques considérées comme nuisibles à la concurrence. Deux ans plus tard, un procès est ouvert pour non respect des interdictions de 1995 : Microsoft obtient l'annulation du procès sur l'argument que « la justice n'est pas équipée pour juger du bien fondé du design des produits de haute technologie (sic) ».

Entre 1999 et 2001 une enquête est ouverte concernant la position de Microsoft. L'enquête, menée par les juges Thomas Jackson et Richard Posner amène à la conclusion que Microsoft utilise sa position de monopole pour exclure des rivaux, nuire à ses concurrents et détruire l'innovation. La société échappe de peu à la scission, mais est dans l'obligation de publier les spécification de ses technologies, en particulier les interfaces de programmation et les protocoles réseau ceci afin de préserver l'interopérabilité et la concurrence[37].

Plus tard, en 2007, Microsoft est condamné par la Commission Européenne à une amende de près de 500 millions d'euros pour violation de l'article 82 du traité CE et l'article 54 de l'accord EEE (textes relatifs au droit de la concurrence et l'abus de position dominante) après avoir refusé de publier une de ses spécifications techniques à son concurrent Sun Microsystems [38]. Selon la Commission Européenne les agissements de Microsoft nuisent à l'interopérabilité des systèmes d'exploitation et à la concurrence[39].

Les réseaux informatique

Chaque système d'exploitation comporte une palette de programmes relatifs à des protocoles réseau. La composition de la palette dépend du choix de l'éditeur et diffère d'un système d'exploitation à l'autre ; or deux ordinateurs peuvent communiquer ensemble uniquement à condition d'utiliser les mêmes protocoles.

La popularisation d'Internet dans les années 1990 a poussé de nombreux éditeurs à inclure dans leur système d'exploitation des programmes relatifs aux protocoles TCP/IP (les protocoles d'Internet), ce qui a amélioré l'interopérabilité entre les systèmes d'exploitation.

Bibliographie

  • Andrew Tanenbaum, Systèmes d’exploitation, Pearson Education France, 2008, 3e éd. (ISBN 978-2-7440-7299-4)
  • Laurent Bloch, Les systèmes d’exploitation des ordinateurs. Histoire, fonctionnement, enjeux, Vuibert, 2003, (ISBN 978-2-7117-5322-2)

Notes et références

  1. "C" est un langage de programmation souvent utilisé pour les systèmes d'exploitation
  2. système d'exploitation
  3. (en)History of operating systems
  4. (en)The Unusual History of MS-DOS
  5. (en)History of the graphical user interface
  6. À vocation académique, Minix comportait de nombreuses limitations techniques. Les éliminer aurait rendu son code source difficile à lire et à comprendre, A. Tanenbaum s'y opposait.
  7. (en)Unix pioneer ends BSD research
  8. (en)Finding aid to the Berkeley Software Distribution
  9. (en)A brief history of open source software
  10. (en)Kernel: Basic Concepts Part 2
  11. (en)IBM, AIX System management Desktop
  12. Andrew Tanenbaum, enseignant, utilisait le code source de Minix pour illustrer ses cours sur les systèmes d'exploitation
  13. (en)Introduction to Minix
  14. anciennement appelé EPOC
  15. racheté à Psion
  16. Symbian OS Presentation
  17. Compatible PC, Macintosh, DEC Alpha, Sparc, Itanium, m68k,...
  18. Entre 1986 et 1991, les produits de la famille Windows étaient des environnement graphique pour le système d'exploitation DOS
  19. a  et b Scission du projet 386BSD
  20. Plus de 50 types de machines. [1]
  21. Compatible PC, ARM, MIPS, Macintosh, DEC Alpha, Sparc, Itanium, Sun Microsystems, Xbox
  22. (en)Kernel.exe Describes the Kernel and VxD for Windows 95
  23. (en)Windows CE and Windows Mobile Timeline
  24. Windows CE Kernel services
  25. créé par fusion entre NeXTSTEP et Mac OS
  26. (en)Windows market share drop to 15 years low
  27. (en) Unix flavor list
  28. (en)IDC report, Server market
  29. (en)How to choose a Web Server
  30. (en)The triumph of Linux as supercomputer OS
  31. Canalys, 115 millions de smartphones en 2007
  32. La notoriété d'un système d'exploitation incite les éditeurs à créer des logiciels applicatifs, ce qui accroit encore sa notoriété
  33. (en) Unix history and timeline
  34. (en)POSIX.1 FAQ
  35. (en) Single Unix specification FAQ
  36. (en)What is UNIX
  37. (en)Microsoft Antitrust, a case study
  38. L'échange de spécification est une pratique courante dans le marché informatique.
  39. procédure d'application de l'article 82 du traité CE et de l'article 54 de l'accord EEE engagée contre Microsoft Corporation

Voir aussi

Articles connexes

Liens externes

Systèmes d’exploitation à but éducatif

  • (fr) BoOSt : Un autre système d’exploitation à but éducatif (32bits)
  • (fr) SOS : Réalisation d'un OS simple, étape par étape, à but éducatif également. Sources et articles téléchargeables.
  • (fr) Zumba : Système d’exploitation expérimental (32bits) dédié à l’électronique, l’automatisme et la robotique.
  • Portail de l’informatique Portail de l’informatique

Ce document provient de « Syst%C3%A8me d%27exploitation ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Operating systems de Wikipédia en français (auteurs)

Игры ⚽ Нужен реферат?

Regardez d'autres dictionnaires:

  • Operating Systems Design and Implementation — This article is about the conference. For the book, see Operating Systems: Design and Implementation. Operating Systems Design and Implementation (OSDI) is a biennial Computer Science academic conference organized by USENIX. It alternates with… …   Wikipedia

  • Operating Systems: Design and Implementation — This article is about the book. For the conference, see Operating Systems Design and Implementation. Operating Systems: Design and Implementation ISBN 0 13 142938 8 ISBN 978 0136373315 is a Computer Science textbook written by Andrew S. Tanenbaum …   Wikipedia

  • List of operating systems — Operating systems can be categorized by technology, ownership, licensing, working state, usage, and by many other characteristics. In practice, many of these groupings may overlap.Early, and historically important*CTSS (The Compatible Timeshare… …   Wikipedia

  • History of IBM mainframe operating systems — The history of operating systems running on IBM mainframes is a notable chapter of history of mainframe operating systems, because of IBM s long standing position as the world s largest hardware supplier of mainframe computers.Arguably the… …   Wikipedia

  • History of operating systems — The history of computer operating systems recapitulates to a degree the recent history of computer hardware. Operating systems (OSes) provide a set of functions needed and used by most application programs on a computer, and the linkages needed… …   Wikipedia

  • Timeline of operating systems — This article presents a timeline of events in the history of computer operating systems from 1951 to the current day. For a narrative explaining the overall developments, see the History of operating systems. Contents 1 1950s 2 1960s 3 1970s …   Wikipedia

  • Usage share of operating systems — Usage share of web client operating systems. (Source: Median values from Usage share of operating systems for August 2011.)   Windows XP ( …   Wikipedia

  • Comparison of operating systems — Usage share of web client operating systems. (Source: Median values from Usage share of operating systems for August 2011.)   Windows XP (35.21%) …   Wikipedia

  • Comparison of BSD operating systems — There are a number of Unix like operating systems based on or descended from the Berkeley Software Distribution (BSD) series of Unix variants. The three most notable descendants in current use are FreeBSD, OpenBSD, and NetBSD, which are all… …   Wikipedia

  • Comparison of open source operating systems — These tables compare the various free software / open source operating systems. Where not all of the non EOL versions support a feature, the first version which support it is listed. Contents 1 General information 2 Supported architectures 3… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”