Le système d'exploitation d'un ordinateur, ou d'un ensemble d'ordinateurs connectés en réseau, est un ensemble de programmes qui remplit deux grandes fonctions :
-
allouer les ressources matérielles et logicielles pour satisfaire les besoins des programmes d'application ;
-
présenter aux applications une interface mieux adaptée à leurs besoins que celle fournie par le matériel, en dissimulant la complexité de l'infrastructure sous-jacente.
Il est plus exact de parler d'un ensemble d'interfaces : les utilisateurs et les applications peuvent interagir avec différentes couches du système d'exploitation. Au niveau le plus haut, l'interface a la forme d'un langage de commande symbolique ou graphique ; l'interprète de ce langage est en général en dehors du système d'exploitation proprement dit et peut donc être remplacé ou modifié. À un niveau plus bas se situe l'interface principale, constituée d'un ensemble d'« appels systèmes », qui permettent aux applications d'accéder aux services fournis par le système. Enfin, certains systèmes d'exploitation (à micro-noyau, à composants) ont une structure modulaire qui permet d'accéder à plusieurs niveaux différents de fonctions plus ou moins proches de la machine physique.
L'évolution des systèmes d'exploitation est gouvernée à la fois par l'évolution des architectures matérielles et par celle des besoins des applications. Les faits marquants des années 2000 peuvent être résumés comme suit :
-
transition progressive des systèmes dits « propriétaires » (associés à une architecture particulière de machines, fournissant une interface spécifique) vers des systèmes « ouverts » (portables sur une gamme étendue de machines et présentant des interfaces normalisées, pour faciliter le transport et l'interconnexion des applications) ; cette évolution est liée à la diffusion croissante du logiciel libre (projet GNU, Free Software Foundation), dont un exemple marquant est le système Linux ;
-
passage d'une informatique centralisée à une informatique distribuée, dans laquelle le système d'exploitation prend en compte la répartition des ressources matérielles, des données et des applications, tout en dissimulant cette répartition aux utilisateurs ;
-
développement rapide des systèmes embarqués, inclus dans des objets ou des environnements variés (véhicules, sites de production, cartes à puce, appareillage médical, capteurs divers), communiquant avec le monde physique, et soumis à des contraintes fortes de temps de réaction, de ressources matérielles et de consommation d'énergie. L'interconnexion de ces systèmes donne naissance à « l'Internet des objets » et à ses nombreuses applications potentielles ;
-
large diffusion de nouveaux appareils mobiles tels que smartphones ou tablettes, vecteurs de nouveaux usages et supports d'applications dans les domaines les plus divers ;
-
développement des techniques de virtualisation, dont une application majeure est le cloud computing (informatique en nuage), qui fournit un service délocalisé de traitement et de stockage de l'information.