En informatique, un système d'exploitation (souvent appelé OS — de l'anglais — ou parfois SE — en français) est un ensemble de programmes qui dirige l'utilisation des ressources d'un ordinateur par des logiciels applicatifs.

Il reçoit des demandes d'utilisation des ressources de l'ordinateur de la part des logiciels applicatifs. Le système d'exploitation gère les demandes ainsi que les ressources nécessaires évitant les interférences entre les logiciels.

Description Le système d'exploitation est le logiciel principal d'un ordinateur, car il permet aux programmes de fonctionner après que le programme d'amorçage a configuré tous les périphériques lors du démarrage de l'ordinateur.

Il offre une suite de services généraux facilitant la création de logiciels applicatifs et sert d'intermédiaire entre ces logiciels et le matériel informatique Brian L. Stuart, , , 2008 .. Un système d'exploitation apporte commodité, efficacité et capacité d'évolution, et permet donc d'introduire de nouvelles fonctions et du nouveau matériel sans remettre en cause les logiciels I. A. Dhotre, , , 2009 ..

Il existe sur le marché des dizaines de systèmes d'exploitation différents, très souvent livrés avec l'appareil informatique Achyut S. Godbole et Atul Kahate, Operating Systems, ed., Tata McGraw-Hill Education, 2011 .. C'est le cas de Microsoft Windows, macOS, Irix, Symbian OS, Unix (Berkeley, System V…), GNU/Linux, (pour lequel il existe de nombreuses distributions) ou majoritairement Android et iOS développés respectivement par Google et Apple pour les téléphones mobiles. Les fonctionnalités offertes diffèrent d'un système à l'autre et sont typiquement en rapport avec l'exécution des programmes, l'utilisation de la mémoire centrale ou des périphériques, la manipulation des systèmes de fichiers, la communication, ou la détection et la gestion d'erreurs.

En , Android, un système d'exploitation utilisant le noyau Linux, est le système d'exploitation le plus utilisé au monde. Il détient 43 % du marché mondial, suivi de Microsoft Windows (30 %), d'iOS (17 %), de macOS (6 %), puis de Linux (desktop) (0,98 %), qui utilise également le noyau Linux. Ces chiffres sont obtenus d'après les statistiques de consultation des pages web, grâce à l'identification du user agent transmise aux serveurs web. Ils ne tiennent donc pas compte des systèmes embarqués, ni des consoles de jeux, ni des appareils déconnectés d'internet, ni des appareils dont le navigateur web a un user agent masqué ou modifié.

Pour les smartphones et autres appareils de poche, Android est en tête avec 72 % de parts de marché, et iOS en détient 28 %. Pour les ordinateurs de bureau et les ordinateurs portables, Microsoft Windows est le plus utilisé (75 %), suivi de macOS (15 %) et des systèmes d'exploitation basés sur Linux (5 %) (c'est-à-dire « Linux desktop », 2,48 %, plus ChromeOS, 2,38 %, et 3,2 % aux États-Unis). En ce qui concerne les tablettes, iPadOS représente 54 % et Android 46 % dans le monde entier..

thumb|Le système d'exploitation est un intermédiaire entre les logiciels d'application et le matériel. thumb|Relations dans un système d'exploitation moderne.

Fonctionnalités Le système d'exploitation offre une suite de services généraux facilitant la création et l'utilisation de logiciels applicatifs. Les services offerts sont en rapport avec l'utilisation des ressources de l'ordinateur par les programmes. Ils permettent en particulier d'exécuter des programmes, de lire et écrire des informations, de manipuler les fichiers, de communiquer entre ordinateurs et de déceler des erreurs. Ces services permettent à plusieurs usagers et plusieurs programmes de se partager les ressources de l'ordinateur Pabitra Pal Choudhury, Operating Systems: Principles and Design, Prentice-Hall of India Pvt. Ltd, 2009 .. Le principal rôle du système d'exploitation est alors de gommer les différences entre les différentes architectures informatiques, et d'organiser l'utilisation des ressources de manière rationnelle.

Utilisation des périphériques

Chaque périphérique a ses propres instructions, avec lesquelles il peut être manipulé. Le système d'exploitation en tient compte. Il permet au programmeur de manipuler le périphérique par de simples demandes de lecture ou d'écriture, lui évitant la perte de temps de traduire les opérations en instructions propres au périphérique.

Accès aux fichiers En plus des instructions propres à chaque périphérique (lecteur de disquette, disque dur, lecteur de CD-ROM, lecteur usb, lecteur de carte mémoire…), le système d'exploitation tient compte du format propre de chaque support servant au stockage de fichiers. Il offre également des mécanismes de protection permettant de contrôler quel utilisateur peut manipuler quel fichier.

Accès aux ressources Une des fonctions du système d'exploitation est de protéger les ressources contre l'utilisation par des personnes non autorisées, et de résoudre les conflits lorsque deux utilisateurs demandent simultanément la même ressource.

Détection et récupération en cas d'erreur Lorsqu'une erreur survient, qu'elle soit matérielle ou logicielle, le système d'exploitation traite l'erreur en adoucissant son impact sur le système informatique. Il peut tenter de réitérer l'opération, arrêter l'exécution du programme fautif, ou signaler le problème à l'utilisateur.

Contrôle Un système d'exploitation peut tenir des statistiques d'utilisation des ressources, surveiller la performance, et les temps de réponse.

Services La palette des services offerts et la manière de s'en servir diffère d'un système d'exploitation à l'autre. Le standard industriel POSIX du IEEE définit une suite d'appels systèmes standard. Un logiciel applicatif qui effectue des appels système selon POSIX pourra être utilisé sur tous les systèmes d'exploitation conformes à ce standard Sibsankar Haldar et Alex A. Aravind, Operating Systems, Pearson Education India, 2010 ..

Le système d'exploitation assure la réservation des différentes ressources pour les besoins des programmes exécutés simultanément. Les réservations peuvent être inscrites dans des journaux d'activités à des fins de statistiques ou de dépannage et le système d'exploitation peut refuser une réservation à un utilisateur n'ayant pas reçu d'autorisation préalable.

Le matériel informatique peut exécuter des instructions, celles-ci sont rarement plus que des copies ou des additions. La traduction d'opérations complexes en suite d'instructions est une tâche fastidieuse qui incombe au système d'exploitation. Le système d'exploitation prend en charge toute la manipulation du matériel, le logiciel applicatif ne peut donc pas voir de différence entre une machine simple, rudimentaire et une machine riche et complexe : les mêmes services sont offerts dans les deux cas.

Le système d'exploitation facilite le travail de programmation en fournissant une suite de services pouvant être utilisés par les logiciels applicatifs. Du point de vue du programmeur, son logiciel applicatif s'oriente en direction du système d'exploitation et du matériel, et les programmes sont considérés comme fonctionnant sur le système d'exploitation. Un système d'exploitation peut ainsi être vu comme une machine virtuelle. L'ensemble composé du matériel et du système d'exploitation forme la « machine » qui exécute le logiciel applicatif, une machine en partie simulée par du logiciel.

Un système d'exploitation est composé d'une large palette de programmes. La composition exacte dépend de l'usage cible et du type d'appareil informatique auquel le système est destiné (ordinateur personnel, serveur, superordinateur ou encore système embarqué).

Utilisation Les utilisateurs et les programmeurs peuvent demander des services au système d'exploitation par son interface de programmation, ses commandes ou son interface graphique.

Interface de programmation Les appels système permettent des interactions entre un programme en cours d'exécution et le système d'exploitation. L'utilisation d'appels système ressemble à celle de fonctions ou de sous-routines ordinaires en langage C ou Pascal. POSIX (acronyme de l'anglais ) 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.

Commandes Les commandes permettent à un utilisateur ou un programme de demander une opération au système d'exploitation. Une commande est un programme qui effectue un appel système selon la demande de l'utilisateur Jose Garrido, Richard Schlesinger et Kenneth Hoganson, Principles of Modern Operating Systems,Jones & Bartlett Publishers, 2011 ..

Interface graphique L'interface graphique permet une manipulation intuitive par l'intermédiaire d'icônes. Cette interface, qui n'est pas une partie essentielle du système d'exploitation, et qui cache tous les détails intrinsèques de celui-ci, est souvent considérée comme un complément.

Processeur

Lorsqu’il est multi-programmé, le système d'exploitation permet à plusieurs utilisateurs de se servir de l'ordinateur et donne à chaque utilisateur l'impression qu'il est le seul à utiliser l'ordinateur. Pour ce faire, l'utilisation du processeur est planifiée : chaque programme est exécuté durant une tranche de temps déterminé (un quantum de temps), puis le système d'exploitation bascule sur l'exécution d'un autre programme.

Processus

Un processus est un ensemble d'instructions qui sont en train d'être exécutées. Les instructions proviennent d'un ou de plusieurs programmes, et l'exécution nécessite du temps, de la mémoire, des fichiers et des périphériques. Le système d'exploitation s'occupe de créer, d'interrompre, et de supprimer des processus. Plusieurs processus se trouvent en mémoire centrale en même temps.

La responsabilité du système d'exploitation est de réserver de la mémoire, de planifier l'exécution, de s'occuper des interblocages et d'assurer les communications entre les processus. L'ordonnanceur (anglais scheduler) associe un processus à un processeur, puis plus tard le dissocie du processeur pour associer un autre processus. Cette opération associer / dissocier est appelée context switch. Lors de la planification, le système d'exploitation tient compte de la disponibilité, ou non, des ressources utilisées par le processus Balagurusamy, Fund Of Computers, Tata McGraw-Hill Education .. Certains systèmes d'exploitation créent des processus pour effectuer certaines tâches propre au système.

Lors de l'exécution du programme, celui-ci peut demander de réserver des ressources de l'ordinateur. L'exécution de ce programme peut être interrompue et le système d'exploitation continue l'exécution d'un autre programme, cependant les ressources restent réservées. Lorsqu'un autre processus demande une ressource déjà réservée, le processus est mis en attente. En situation de forte compétition plusieurs processus peuvent être en attente de la même ressource. Lorsque la ressource est libérée le système d'exploitation décide alors quel est le prochain processus auquel la ressource sera réservée. La stratégie d'octroi des ressources par le système d'exploitation vise à répondre équitablement à toutes les demandes et éviter des conflits.

La communication inter-processus

Dans certains logiciels applicatifs, plusieurs programmes effectuent la même tâche simultanément, et s'échangent des informations. Le mécanisme de protection de la mémoire (voir plus loin) empêche aux programmes de manipuler les mêmes informations, et ceux-ci doivent faire appel à des services du système d'exploitation.

Mémoire