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 remplissent 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. En effet, les utilisateurs et les applications peuvent généralement interagir avec différentes couches du système d'exploitation. Au niveau le plus haut, l'interface se présente comme 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 d'utiliser les différentes entités définies par le système : processus, fichiers, messages, etc. Cette interface est utilisée par les applications, soit directement, soit, le plus souvent, au travers de bibliothèques spécialisées, associées à un langage de programmation. 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, 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 ;
globalisation des échanges
, par l'interconnexion...