# Logiciel système

Le logiciel système est un ensemble de programmes informatiques et de bibliothèques logicielles qui fournit un environnement permettant de créer et d'exécuter des logiciels applicatifs. Les fonctionnalités de base d'un ordinateur telles que la manipulation des fichiers et des périphériques sont apportées par le logiciel système. Le logiciel système est lancé avant le logiciel applicatif et joue le rôle d'intermédiaire entre le logiciel applicatif et le matériel de l'ordinateur.
Les logiciels systèmes ont été créés dans le but de mieux adapter les ordinateurs aux besoins des programmeurs de logiciels applicatifs: ils leur permettent de se concentrer sur les problèmes propres à l'application et faire abstraction des particularités de la machine. Contrairement au logiciel applicatif, le logiciel système est fortement dépendant de la machine. Les logiciels système offrent des services aux logiciels applicatifs et ne sont pas exploités directement par l'usager.
Les systèmes d'exploitation, les pilotes, les langages de programmation, et les utilitaires sont des logiciels système. L'utilisation des langages de programmation est rendue possible par divers programmes tels que le compilateur, l'assembleur, l'éditeur de liens et le chargeur.

## Système d'exploitation

Un système d'exploitation est un ensemble de programmes qui contrôle et qui coordonne l'utilisation des ressources de l'ordinateur (mémoire, processeur, périphériques) par les différents utilisateurs et les différents logiciels applicatifs. Il offre une large palette de fonctionnalités qui simplifient la création de logiciels applicatif. Interface entre les programmes et le matériel, le système d'exploitation est un logiciel central utilisé par tous les logiciels applicatifs pour exploiter le matériel de l'ordinateur. Les principales fonctionnalités du système d'exploitation sont la manipulation de processus, le contrôle de l'utilisation de la mémoire, la manipulation des fichiers et des pilotes de périphériques.

### processus

Un processus est l'état d'un programme en train de s'exécuter. Le système d'exploitation permet de démarrer un processus, le mettre en pause, l'arrêter. Il permet de réserver des ressources pour le processus, et assure les communications entre plusieurs processus.

### gestion de mémoire

Le système d'exploitation s'occupe de suivre l'utilisation de la mémoire, savoir quels emplacement de mémoire sont occupés et lesquels sont libres. La procédure de réservation d'espace en mémoire, puis d'annulation des réservation appartient au système d'exploitation.

### fichiers

Un fichier est un lot d'informations nommées et stockées sur un support de stockage. Le système d'exploitation permet notamment de créer, de retrouver, et de supprimer des fichiers. Il existe différents types de support, chacun à ses propres caractéristiques techniques et sa propre organisation. Il incombe au système d'exploitation de manipuler les fichiers en respectant l'organisation et les caractéristiques propre à chaque support.

### pilotes

Un pilote est un module d'un système d'exploitation qui traduit les opérations d'utilisation d'un périphériques en des commandes dans le langage spécifique au périphérique. Un système d'exploitation comporte typiquement un lot de pilotes pour les périphériques courants tels que clavier, souris, écran. Des pilotes additionnels sont fournis par le fabricant du périphérique. L'utilisation des pilotes est une des tâches du système d'exploitation.

## Langage de programmation

En vue de faciliter le travail de programmation, les programmes sont écrits dans un langage de programmation plutôt que le langage de la machine, puis sont traduits en vue d'être exécutés : le langage machine, composé de 0 et de 1, est très difficile à utiliser, tandis que les langages de programmation, composés de mots anglais et de symboles mathématiques, sont plus familiers. La traduction est effectuée par un compilateur, un interprète ou un assembleur. Ensuite de quoi l'exécution est rendue possible par un éditeur de liens et un lanceur.
La traduction s'effectue typiquement en plusieurs étapes : analyse lexicale, analyse syntaxique, analyse sémantique, génération de bytecode, optimisation, puis génération du code objet.

### interpréteur

c'est un programme qui lit un programme écrit dans un certain langage de programmation, puis exécute les instructions correspondantes en langage machine. L'opération de traduction est effectuée en continu durant l'exécution du programme.

### compilateur

c'est un programme qui lit un programme écrit dans un certain langage de programmation, et écrit le programme équivalent en langage machine en vue de l'exécuter plus tard. Le programme s'exécutera 5 à 25 fois plus vite qu'avec un interpréteur.

### assembleur

Un programme qui lit un programme écrit en langage assembleur et le traduit en langage machine. Le langage assembleur est essentiellement une représentation symbolique du langage machine et la traduction est triviale: Une instruction en langage assembleur représente une instruction en langage machine.

### lanceur (anglais loader)

Un programme qui va rechercher du code objet dans une mémoire secondaire, et le place dans la mémoire vive en vue de l'exécuter. À ce moment l'éditeur de liens relie les différentes bibliothèque pour permettre l'exécution du programme: Un programme comporte généralement plusieurs milliers d'instructions, qui sont regroupées en modules, enregistrés séparément.

### macro

Une macro est une suite d'opérations définie quelque part dans le code source, et référencée ailleurs. Le processeur de macro est un programme qui remplace chaque référence à une macro par son contenu en opérant par recherche/remplacement de texte.

### préprocesseur

Un programme qui effectue des transformations sur le code source avant de le soumettre au compilateur. Par exemple un préprocesseur de macros.

### débogueur

Ce programme aide à rechercher des bugs et dépanner un programme.

## Logiciel utilitaire

les logiciels utilitaires servent à effectuer des opérations de maintenance et de protection de l'ordinateur, en particulier des programmes, et des données qu'il contient. Les utilitaires sont fournis avec le système d'exploitation, ou peuvent être acquis séparément. Les programmes de gestion de fichiers, de sauvegarde ainsi que les antivirus sont des logiciels utilitaires courants.

### gestion de fichiers

Un outil permet de créer et organiser des répertoires, ainsi que rechercher, copier, déplacer ou supprimer des fichiers.

### sauvegarde

Une copie de sauvegarde est utilisée si des données ont été endommagées ou perdues. La cause de tels incidents peut être une panne d'un périphérique, d'un programme, la destruction par un virus informatique, ou par une action humaine.

### antivirus

Un virus informatique est un programme caché, créé dans un but mal intentionné, qui provoque la destruction du contenu de l'ordinateur. Un programme antivirus examine le contenu de l'ordinateur et espionne l'activité, en vue de lutter contre les virus informatique.

## Fonctionnalités

L'amorce (anglais bootstrap) est le premier logiciel exécuté lors de la mise en marche de l'ordinateur (anglais boot). Il vérifie que le matériel fonctionne correctement (voir power-on self-test), puis démarre l'exécution du chargeur, le logiciel moteur qui assure l'exécution de tous les autres logiciels.
Un système de fichiers est une structure en arbre dans laquelle sont placés des fichiers. La structure est répartie sur une ou plusieurs mémoire de masse telles que des disques durs. Un logiciel système organise l'espace sur chaque disque dur, réserve de l'espace, enregistre les fichiers et les relie pour former le système de fichiers. Il existe plusieurs manières d'organiser l'espace en fonction du système d'exploitation et du type de la mémoire de masse (disque dur, CD-ROM, DVD, clé USB). Il y a par conséquent plusieurs logiciels système - chacun traite une organisation en particulier. exemples: NTFS, ext3, ISO 9660, UDF.
Lorsque des informations sont envoyées à un périphérique lent comme une imprimante, un logiciel système place les informations dans une file d'attente, puis les envoie au périphérique en différé, ce qui évite des ralentissements du logiciel applicatif qui utilise le périphérique (voir spool).
Un des logiciels système compose des images en assemblant des pictogrammes, des cadres et des textes. Il reçoit les manipulations des dispositifs de pointage tels que la souris, retrouve l'élément graphique qui se trouve à la position du curseur, puis signale les manipulations au logiciel applicatif auquel appartient l'élément graphique. Il offre ainsi les services basiques pour créer des interfaces graphiques.
Divers logiciels permettent les communications à travers un réseau informatique. Ils servent à envoyer des informations en respectant un ou l'autre protocole (norme de communication), ainsi que décoder des informations reçues et formatées conformément au protocole. Ils permettent aussi parfois d'exploiter un logiciel système situé sur un autre ordinateur, c'est le cas avec les serveurs de fichiers, les serveurs d'impression ou le X Window System.
Une base de données est un stock d'informations structuré et organisé de manière à pouvoir être manipulé facilement. Un système de gestion de base de données est un ensemble de logiciels système qui servent à effectuer des opérations basiques telles que l'ajout, la recherche, le classement, le tri ou la suppression d'informations stockées dans des bases de données.