suivant: 1.4 Les utilisateurs, l'accès
monter: 1. Présentation d'UNIX
précédent: 1.2 Historique et versions
  Table des matières
  Index
Sous-sections
UNIX est un système d'exploitation multi-tâche multi-utilisateurs.
Le fonctionnement multi-tâche est assuré par un mécanisme
préemptif : le système interrompt autoritairement la tâche en cours
d'exécution pour passer la main à la suivante; ceci évite tout risque
de bloquage du système à la suite d'une erreur survenant dans un
programme utilisateur.
La cohabitation simultanée de plusieurs utilisateurs est rendue possible
par un mécanisme de droits d'accès s'appliquant à toutes les
ressources gérées par le système (processus, fichiers,
périphériques, etc.).
Le noyau est le programme qui assure la gestion de la mémoire, le
partage du processeur entre les différentes tâches à exécuter et les
entrées/sorties de bas niveau. Il est lancé au démarrage du système
(le boot) et s'exécute jusqu'à son arrêt. C'est un programme
relativement petit, qui est chargé en mémoire principale.
Le rôle principal du noyau est d'assurer une bonne répartition des
ressources de l'ordinateur (mémoire, processeur(s), espace disque,
imprimante(s), accès réseaux) sans intervention des utilisateurs.
Il s'exécute en mode superviseur, c'est à dire qu'il a accès à
toutes les fonctionnalités de la machine : accès à toute la mémoire,
et à tous les disques connectés, manipulations des interruptions, etc.
Tous les autres programmes qui s'exécutent sur la machine fonctionnent en
mode utilisateur : ils leur est interdit d'accéder directement au
matériel et d'utiliser certaines instructions. Chaque programme utilisateur
n'a ainsi accès qu'à une certaine partie de la mémoire principale, et
il lui est impossible de lire ou écrire les zones mémoires attribuées
aux autres programmes.
Lorsque l'un de ces programmes désire accéder à une ressource gérée
par le noyau, par exemple pour effectuer une opération d'entrée/sortie,
il exécute un appel système. Le noyau exécute alors la fonction
correspondante, après avoir vérifié que le programme appelant est
autorisé à la réaliser.
1.3.2 Les processus
UNIX est un système multi-tâches, ce qui signifie que plusieurs
programmes peuvent s'exécuter en même temps sur la même machine. Comme
on ne dispose en général que d'un processeur, à un instant donné un
seul programme peut s'exécuter. Le noyau va donc découper le temps en
tranches (quelques millièmes de secondes) et attribuer chaque tranche à
un programme. On parle de système en temps partagé. Du point de vue des
programmes, tout se passe comme si l'on avait une exécution réellement
en parallèle. L'utilisateur voit s'exécuter ses programmes en même
temps, mais d'autant plus lentement qu'ils sont nombreux.
On appelle processus un programme en cours d'exécution.
A un instant donné, un processus peut être dans l'un des états
suivants :
- actif
- : le processus s'exécute sur un processeur (il n'y a donc
qu'un seul processus actif en même temps sur une machine mono-processeur);
- prêt
- : le processus peut devenir actif dès que le processeur
lui sera attribué par le système;
- bloqué
- : le processus a besoin d'une ressource pour continuer
(attente d'entrée/sortie par exemple). Le bloquage ne peut avoir lieu
qu'à la suite d'un appel système. Un processus bloqué ne consomme pas de
temps processeur; il peut y en avoir beaucoup sans pénaliser les
performances du système.
Remarque : le passage de l'état actif à l'état prêt
(interruption) est déclenché par le noyau lorsque la tranche de temps
allouée au processus s'est écoulée. Concrètement, le noyau programme
dans ce but une interruption matérielle. Ceci implique que toute
section d'un programme utilisateur peut se voir interrompue n'importe où;
les processus n'ont bien sûr pas accès aux instructions de masquage
d'interruptions. Toute opération critique (ininterruptible) devra
donc être réalisée dans le noyau, un processus y accédant via un
appel système.
Le système UNIX fonctionne en mémoire virtuelle paginée. Ceci permet de
faire fonctionner des processus demandant une quantité d'espace mémoire
supérieure à la mémoire physique installée.
Lorsqu'un processus demande l'allocation d'une page de mémoire et qu'il n'y
en a pas de disponible en mémoire centrale, le noyau traite un
défaut de page (voir le cours de système). Il choisit une page (qui n'a
pas été utilisé depuis longtemps) et l'écrit sur une partition
spéciale du disque dur. La place libérée est alors attribuée au
processus demandeur.
Ce mécanisme demande la réservation d'une (ou plusieurs) partition
spéciale sur l'un des disques durs, nommée partition de
swap.
La mémoire disponible pour les processus est donnée par la somme de la
taille de mémoire physique (RAM) et des partitions de swap. Bien entendu,
les performances du système se dégradent lorsque la fréquence des
défauts de page augmente; dans ce cas, il faut augmenter la mémoire
physique.
Sur un système typique, la partition de swap est deux à trois fois plus
grande que la mémoire centrale (exemple : PC avec 32Mo de RAM, partition de
swap de 64Mo).
UNIX est livré avec un grand nombre de programmes utilitaires. Ces
programmes sont très divers, mais surtout orientés vers le traitement de
fichiers de textes et le développement de logiciels. Tout système UNIX
inclut normalement un compilateur C (certains vendeurs tendent à abandonner
cet usage).
Les utilitaires les plus important sont les suivants :
- Interpréteurs de commandes (nommés shells), permettant l'accès
d'un utilisateur au système. Les shells sont assez sophistiqués et
s'apparentent à de véritables langages de programmation interprétés.
- Commandes de manipulation de fichiers;
- Commandes de gestion des processus;
- Éditeurs de texte;
- Outils de développement : compilateurs, débugueurs, analyseurs
lexicaux et syntaxiques, etc.
Nous détaillerons certains de ces outils par la suite.
suivant: 1.4 Les utilisateurs, l'accès
monter: 1. Présentation d'UNIX
précédent: 1.2 Historique et versions
  Table des matières
  Index
Emmanuel Viennet
1999-01-05