next up previous contents index
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

1.3 Architecture générale du système

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.).

1.3.1 Le noyau UNIX

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.

1.3.3 Gestion de la mémoire

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).

1.3.4 Les outils UNIX

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 :

Nous détaillerons certains de ces outils par la suite.


next up previous contents index
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