Sie sind auf Seite 1von 5

Claude Kaiser

Machine virtuelle et environnement utilisateur

SRI_B

CHAPITRE 1
FOURNIR L'UTILISATEUR
UNE MACHINE VIRTUELLE
ET
UN ENVIRONNEMENT D'EXCUTION DE PROGRAMMES

Plan
ENVIRONNEMENT DE TRAVAIL ADAPT AU BESOIN DE L'UTILISATEUR

Fonctions de l'environnement d'excution de la machine virtuelle


Niveau d'abstraction et visibilit de l'environnement
FONCTIONS D'UN ENVIRONNEMENT D'EXCUTION
POUR LES PROGRAMMES DE L'UTILISATEUR.

Machine virtuelle au bon niveau d'abstraction.


REPRSENTATION DANS LE SYSTME : NOTION DE PROCESSUS

Processus et environnement Posix - Unix - Linux


Processus et environnement concurrent
dans les langages de programmation
BILAN DE LA NOTION DE PROCESSUS

Manuel 1
Machine virtuelle et environnement utilisateur
1. Environnement de travail adapt au besoin de l'utilisateur
On attend du systme d'exploitation qu'il fournisse l'utilisateur de l'ordinateur un
cadre de travail adquat. En particulier lorsque l'utilisateur veut crire et excuter des
programmes, ce cadre doit comprendre une image simplifie de l'architecture matrielle, qu'on
appelle une architecture virtuelle, et un environnement d'excution qui lui apporte les principales
fonctionnalits complmentaires qui lui sont ncessaires.
Le rle du systme est de fournir chaque utilisateur une machine virtuelle.
1.1. Fonctions de l'environnement d'excution de la machine virtuelle
L'environnement de travail doit faciliter la mise en place et le contrle des informations
traiter, la communication et de l'excution.
Cela comprend au moins une interface de gestion de l'information, une interface de
gestion des communications et une interface de contrle d'excution.
1.1.1. Fonction de gestion de l'information

01 Manuel

mai 2002

Claude Kaiser

Machine virtuelle et environnement utilisateur

SRI_B

Il s'agit de fournir une aide pour la structuration des programmes, des donnes, des
objets de l'utilisateur et pour leur conservation dans des fichiers et pour la structuration de
catalogues. Cette fonction comporte la dsignation de ces objets pour les reprer lors de leur
appel, donc la cration et la gestion d'espaces d'adressage, de catalogues de fichiers ou de
serveurs de noms d'objets. Elle fournit les interfaces pour le partage et le contrle d'accs aux
objets partags.
1.1.2. Fonction de gestion des communications
Il s'agit de permettre l'accs d'autres utilisateurs ou plus exactement leurs machines
virtuelles, qu'elles soient locales, distantes ou mobiles, des supports externes, via des entressorties, des objets, des composants partageables, des services, des fichiers qu'ils soient
locaux, distants ou mobiles, des groupes de diffusion ou de coopration.
1.1.3. Fonction de contrle d'excution
Il faut permettre de lancer et de suivre des excutions de programmes en squence, en
parallle, en concurrence, de composer et d'enchaner des programmes, de synchroniser des
excutions. On doit y trouver des aides pour la mise au point, pour le traitement des
dfaillances, pour la pose et lexploitation de points de reprises, pour la mesure du temps.
1.2. Niveau d'abstraction et visibilit de l'environnement
L'environnement de travail dpend du niveau d'abstraction o se place ce travail.
Si l'utilisateur se situe dans une application particulire, c'est celle-ci qui dfinit
l'environnement utilisable et l'interface homme machine (IHM)
Si l'utilisateur se place au niveau des fichiers et du langage de commande, c'est le script
crit en ce langage qui manipule l'environnement. Les objets sont des fichiers de stockage ou
des fichiers excutables ou interprtables.
Un niveau important est celui du langage machine ou d'un langage, comme le C, qui
donne accs aux conventions de l'architecture et de la machine virtuelles.
Quand l'utilisateur crit des programmes dans un langage volu comme Ada, Java,
Modula, C++, il utilise l'environnement qui est dfini par le langage.
D'autres niveaux, comme ceux des plates-formes Corba, Java, Dcom, dfinissent aussi
des environnements pour grer des objets locaux ou distants (bus logiciel et appels de mthodes
standard)
La gestion de l'environnement peut tre explicitement faite par l'utilisateur ou son
programme. Cela passe par des appels aux primitives systmes.
La gestion de l'environnement peut tre implicite avec mise en place automatique par un
compilateur ou son moteur d'excution ("run time"), par un interprteur ou par le systme.
Cette gestion suit des conventions prdfinies au niveau du langage de programmation ou de
commande (appel de bibliothque standard dont les programmes contiennent les appels aux
primitives systme).

2. Environnement primitif de la famille Posix, Unix, Linux


2.1. Notion de processus
Le processus est le concept de base de la concurrence qui sert reprer l'excution de la
suite des actions dfinie par un programme. C'est donc tout la fois :
- la forme prise par l'instance d'un programme pendant son excution dans la machine,
- le droulement temporel de cette instance dans une abstraction de cette machine,
appele machine virtuelle,
- l'objet systme qui repre cette volution, objet actif dont l'tat volue dans le temps et
qui est caractris par un tat, un contexte et un espace d'adressage.
Un processus hrite de deux constructeurs :
- le programme source qui dfinit le besoin particulier de l'utilisateur,
- le systme d'exploitation hte qui met en place une machine virtuelle gnrique.
2.2. Chane de production de processus
01 Manuel

mai 2002

Claude Kaiser

Machine virtuelle et environnement utilisateur

SRI_B

La chane de construction de programme prpare le processus selon le besoin de


l'utilisateur et en tenant compte des conventions du systme hte. Il y a toujours une tape de la
construction qui est conserve dans les fichiers de lutilisateur et qui aboutit un fichier
excutable. Cet excutable comprend le programme dcoup en entits logiques qui ont des
proprits diffrentes : code invariant, donnes constantes, donnes modifiables, table des
symboles permettant des liens vers des modules externes,...Quand lexcution du fichier
excutable du programme est lanc, il faut le transformer en processus. Il est alors charg par
le systme dexploitation. Celui-ci lui applique les transformations finales qui vont permettre de
suivre son excution et de grer au mieux les ressources mmoire et processeur quil faudra lui
attribuer pour que celle-ci se fasse.
2.3. La machine virtuelle associe au processus
Le chargement des diffrentes entits dun programme respecte les conventions
dutilisation de lespace dadressage disponible avec le nombre de bits utiliss dans
larchitecture (8 bits, 16 bits, 32 bits, 64 bits dadressage). Cet espace dadressage disponible
est aussi appel mmoire virtuelle. Il faut y placer les entits du processus, celles qui sont
dfinies par le fichier excutable du programme (les entits logiques du programme), et celles
qui sont ncessaires lallocation de mmoire pour les donnes (donnes statiques non
initialises la compilation, donnes dynamiques gres en pile ou en tas). Le rsultat est une
image du processus, conserve dans un fichier du systme. Le moment du chargement de
cette image en mmoire centrale physique dpend de la nature du systme dexploitation
(systme avec chargement total initial ou chargement la demande).
Lespace dadressage contient aussi une zone rserve au code et aux donnes du
systme. Dans cette zone, on distingue une partie utilise par le systme pour grer le
processus et une partie pour grer lensemble des processus et les ressources partages par eux
(partie noyau). Cette partie noyau est commune tous les processus, donc tous leurs espaces
dadressages. On a alors un ensemble despaces dadressages qui ont tous une racine
commune. Tout processeur possde deux modes dexcution au moins, le mode utilisateur et le
mode systme et seul le mode systme permet datteindre la zone de lespace dadressage
rserve au systme. On contrle ainsi lutilisation de cet espace dadressage en linterdisant aux
programmes des utilisateurs.
Chaque processus est repr par le systme par un certain nombre dattributs dont un
certain nombre figurent dans la structure appele descripteur de processus, observable en
mode utilisateur.
2.4. Les primitives de cration et de gestion de processus
Dans Unix, un utilisateur peut tre associ un ensemble de processus. (Dans IBM/VM
ou VAX/VMS, au contraire, un utilisateur ne met en jeu quun processus).
Tout processus peut crer dautres processus. Cela engendre une arborescence de
processus. Tout le systme repose sur ce concept darborescence, y compris les processus
permanents, appels aussi dmons du systme.
La cration de processus se fait par la primitive fork qui cre un nouvel espace
dadressage et un nouveau processus fils qui est un clone du pre. Le contexte du pre est
logiquement recopi dans celui du fils : code, donnes, fichiers ouverts, environnement,
terminal, ... Seuls diffrent le nom du processus et le nom de son pre.
Pour particulariser le fils, on utilise une primitive de la famille exec qui permet de
placer en mmoire virtuelle, dans la partie code de lespace dadressage, un nouveau code
excutable qui crase lancien. Cette fois le contexte du processus ne change pas. La
combinaison dun fork suivi dun exec chez le fils est lquivalent du lancement dun
processus nouveau pour excuter une fonction spcifique.
Un processus se termine quand il excute la primitive exit(). Cela passe une
information dtat au systme et place le processus dans ltat zombie tant que son pre na pas
enregistr cette terminaison.

01 Manuel

mai 2002

Claude Kaiser

Machine virtuelle et environnement utilisateur

SRI_B

Un processus attend la fin de son fils par une primitive wait qui lui permet de
rcuprer la variable dtat mise par exit. Si un pre se termine avant son fils, celui-ci devient
orphelin et est adopt par le processus permanent init.
2.5. La famille des processus de l'utilisateur et du systme
Ces primitives sont utilises par le systme pour vrifier le mot de passe dun utilisateur
et, en cas de succs, pour lancer linterprteur de commande (shell) particulier cet
utilisateur. Elles servent aussi crer un processus pour excuter une commande dans un
espace dadressage diffrent de celui de linterprteur de commande et pour procurer ainsi une
certaine isolation entre les codes des commandes successives.
2.6. Ordonnancement et commutation de processus
Comme ce systme encourage la cration de processus, il comprend plus de processus
que de processeurs et il faut ordonnancer lallocation du (ou des) processeur(s) aux processus.
Les processus qui attendent le processeurs sont des processus prts qui sont grs par priorits
et lanciennet quand plusieurs processus ont la mme priorit. Les processus utilisateurs ont
mme priorit, mais ils sont grs selon la mthode du tourniquet avec un quantum de temps de
service. Un processus qui est bloqu par une primitive dentre-sortie ou par un wait nest
pas mis dans les files des processus prts.
Les processus passent par divers tats que gre le systme : prt (ou ligible), lu,
bloqu, cr, zombie. Dans un systme qui dplace les processus par va et vient (swap
in, swap out) avec une mmoire secondaire, les tats prt et bloqu ont un double,
prt S et bloqu S.
La liste des processus et leurs caractristiques peuvent tre lus en mode utilisateur par la
commande ps.
Lallocation dynamique du processeur aux processus entrane des commutations de
contexte et un certain surcot de traitement.

3. Processus et concurrence dans les langages de programmation


Il y a dautres manires de crer des processus que par le fork. Les langages de
programmation dfinissent un type particulier de procdure qui dcrit le code du processus (type
task en Ada) ou bien font hriter un objet ou une classe dune classe processus prdfinie
(classe Thread en Java).
3.1. Langage servant dcrire les algorithmes prsents dans le cours
Les algorithmes concurrents prsents tout au long du cours sont crits dans un pseudo
langage qui utilise la lexicographie et la syntaxe introduites vers 1958 pour le langage Algol 60,
et qui a t utilise pour de nombreux langages comme Pascal, Simula (le premier langage a
objets) et Ada. Cette syntaxe, trs professionnelle, accompagne dun typage fort des donnes,
na cesse dtre amliore et fiabilise. Sa lisibilit et sa clart en font le meilleur outil
pdagogique pour un langage impratif. Son utilisation est facilite quand on peut utiliser un
diteur syntaxique (cest le cas avec Ada)
On y trouve la structure de bloc, des paquetages (modules permettant dencapsuler des
objets et des types), des tches (reprsentation des processus), la dclaration dinterface
dexportation et limportation dlments externes (donnes, types, procdures, objets,
paquetages).
3.2. Langage C avec des API Posix
Le langage C a t introduit en 1978, en mme temps quUnix, et il dispose dune
syntaxe beaucoup plus artisanale, ce qui na pas empch son succs. Ce succs vient aussi de
son emploi avec les API pour les processus de la famille Unix/Posix/Linux. Il est utilis aussi
avec les notions de processus lgers, ou activits, ou threads, qui ont t introduites pour
apporter de la concurrence lintrieur dun mme espace dadressage. La cration de thread
01 Manuel

mai 2002

Claude Kaiser

Machine virtuelle et environnement utilisateur

SRI_B

est prcde par la dfinition de la fonction qui dcrit le fonctionnement du thread et


nintroduit pas de cration dun nouvel environnement comme avec fork et exec. Tous les
threads dun mme processus se partagent lenvironnement du processus et ils doivent grer
explicitement les donnes partages. Cette extension est utilise dans larchitecture Posix (par
exemple les systmes rpartis Chorus, Mach ou Amoeba) et dans larchitecture Windows NT.
Les API de gestion de concurrence apparaissent dans les bibliothques du systme.
3.3. Ada et Java
Ada et Java sont des langages modernes qui ont intgr compltement dans le langage la
notion de processus et de gestion de concurrence. Elles ne sexprime plus par des API de
bibliothque, mais par des clauses du langage, analyses par le compilateur. On exprime la
concurrence plus haut niveau. Cest le compilateur qui gnre les instructions dappel un
moteur dexcution (run time), soit construit spcifiquement, soit obtenu par des appels une
bibliothque systme (qui fournit ventuellement les API Posix).
Ada dclare des objets de type tche (qui jouent le rle de processus) en sparant
linterface dexportation et limplantation (le corps) et les tches sont lances automatiquement
la fin de la partie dclaration dans laquelle elles sont instanties. On a des objets actifs, dclars
comme tels, les tches, et des objets passifs, utiliss par les tches.
En Java il ny a quune sorte dobjet, et les threads (qui jouent le rle de processus)
sont les objets qui hritent dune classe standard, la classe Thread laquelle contient des
mthodes spcifique, comme la mthode run. Une classe qui hrite de la classe Thread doit
redfinir la mthode run pour spcifier le code du thread qui sera cr. Le lancement du
thread cr doit se faire par lappel de la mthode start qui appartient la classe Thread, tout
comme la mthode join qui permet un thread dattendre le signal de fin dexcution dun
autre thread. La fin dattente peut tre dclenche par une interruption et cela conduit utiliser
la clause qui permet dattraper une exception : try{...} catch(InterruptedException e){...}. On
retrouvera cette forme dans la gestion de concurrence quand il faudra rveiller des threads
endormis.
Labsence de sparation entre objet actif et objet passif rend plus difficile de faire
apparatre explicitement les entits actives. Cela conduit dfinir une interface Runnable dans
Java ou dfinir des notions de containers dans les outils employant Java (comme les EJB ou
Entreprise Java Beans).

4. Bilan de la notion de processus


Le processus est le concept qui reprsente une activit squentielle en concurrence avec
dautres.
Les relations entre processus dfinissent leurs modes de cration et de destruction, les
pouvoirs quils ont les uns sur les autres et les interactions mutuelles.
Les processus doivent tre reprsents dans le systme dexploitation qui gre leur
excution. Cette reprsentation doit permettre dindiquer les ressources ncessaires et les
modifications du contexte du processus pendant son volution.
Un lment important du contexte est ltat du processus qui indique si le processus est
demandeur ou non de ressources et en particulier dun processeur.
La notion de processus apparat sous divers vocables, comme task, process, thread.
La modlisation des processus concurrents se fait avec divers modles comme la thorie
des files dattente, les rseaux de Petri ou les compteurs abstraits.
Cette notion de processus a volu pour faire apparatre un grain dactivit plus fin, le
processus lger qui introduit de la concurrence lintrieur dun acteur dot dun espace
dadressage. Elle devrait voluer pour exprimer une squence dactions qui se droulent sur
divers sites dun systme rparti et qui sont mises en relation par des messages. Ces processus
lourds ont t appels messages activit dans Chorus.
Pour la suite du cours, on distingue pour le processus
- deux tats intrinsques qui dpendent explicitement des instructions de son programme : soit il
est bloqu soit il est actif,
- deux sous-tats de ltat actif, utiles pour lordonnancement du processeur : prt et lu
01 Manuel

mai 2002

Das könnte Ihnen auch gefallen