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 directement fournie par le matériel ; on peut dire en ce sens qu’un système d’exploitation réalise une machine virtuelle.
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 ; en fait, 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 définissent la machine virtuelle et permettent d’utiliser ses différentes entités : processus, fichiers, messages, etc. Cette interface peut être 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 (systèmes à micro-noyau, systèmes à objets) 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 l’évolution des besoins des applications. Les faits marquants des années 90 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 standards, voire normalisées, en vue de faciliter le transport et l’interconnexion des applications) ;
passage d’une informatique centralisée à une informatique distribuée
, dans laquelle le système d’exploitation doit prendre 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 généralisée...