• Aucun résultat trouvé

Illustrations en Smalltalk

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

2/27 http://lsewww.epfl.ch/

q NB: Les références suivantes sont données à titre indicatif.

q Programmes et Objets Informatiques º C. Rapin, Polycopié EPFL, 1989

q Algorithms (2nd ed.)

º R. Sedgewick, Addison-Wesley, 1988

q Simulation par événements discrets º P.-J. Erard, P. Déguénon, PPUR, 1996

Références

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

3/27 http://lsewww.epfl.ch/

qDéfinition

º Une queue de priorité est un ensemble de données dans lequel il est possible d’insérer de nouveaux éléments.

º Les éléments d’une queue de priorité sont retirés de la queue selon un critère de priorité fixé à l’avance.

qRelation de priorité (notée) 1. not (xy and y→ x)

2. not (xy or yx) ⇒ (zx⇔ zy) 3. (xy and yz)⇒ xz

qOpérations

º add: insère un nouvel élément dans la liste.

º first retourne l’élément de plus grande priorité.

º remo veFirst élimine de la queue son élément de plus grande priorité.

º isEmpty retourne vrai si la queue est vide.

Queues de priorité

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

4/27 http://lsewww.epfl.ch/

q Liste triée

º Possible mais, l’insertion d’un élément est O(n).

º Le retrait de l’élément prioritaire est O(1).

º Implémentation naïve à éviter!

q Arbre de priorité

º L’insertion d’un élément est O(log n).

º Le retrait de l’élément prioritaire est O(log n).

º Un arbre de priorité est un arbre binaire.

º La valeur stockée à chaque noeud est celle qui a la plus grande priorité.

º Les deux sous-arbres contiennent des valeurs de plus faible priorité que le noeud.

Implantation

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

5/27 http://lsewww.epfl.ch/

qExemple avec la relation x<y

Arbre de priorité (exemple)

0.9

º Dans un arbre de priorité, si on échange les deux sous-arbres d’un noeud quelconque, alors l’arbre résultant est encore un arbre de priorité.

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

6/27 http://lsewww.epfl.ch/

q Idée

º Basé sur le principe que la fusion de deux arbres prend un temps raisonnable.

q Ajouter un élément

º On fabrique un arbre de priorité avec un noeud dans lequel est stocké la nouvelle valeur.

º On fusionne les deux arbres.

q Retirer l’élément prioritaire

º On élimine le noeud à la racine de l’arbre, après en avoir récupéré la valeur.

º On fusionne les deux sous-arbres de ce noeud (droite et gauche) q Fusionner deux arbres

º Soient p et q les deux arbres que l’ont veut fusionner.

º Si q est vide, le résultat est p. Si p est vide, le résultat est q.

º On fait en sorte que p soit prioritaire par rapport à q. (On les échange au besoin) º On échange les deux sous-arbres de p. (Important sinon l’arbre dégénère en liste triée!) º On fusionne (récursivement) l’arbre q avec l’un des sous-arbres de p.

Arbre de priorité (principe)

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

7/27 http://lsewww.epfl.ch/

Arbre de priorité (structure)

qAttributs qHéritage

Block Tree left value right

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

8/27 http://lsewww.epfl.ch/

Collection subclass: #PriorityQueue instanceVariableNames: 'order tree' class methods

withRelation: aBlock

^(super new initialize) order: aBlock instance methods

order: aBlock order := aBlock.

first ^tree first testing

isEmpty ^tree first isNil

Queue de priorité

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

9/27

remo veFirst

|first|

first := tree first.

tree := tree remo veFirstUsing: order.

^first

remo ve: anObject ifAbsent: aBlock self shouldNotImplement

enumerating do: aBlock

tree do: aBlock

Queue de priorité (suite)

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

10/27 http://lsewww.epfl.ch/

Arbre de priorité

Tree

left value right

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

11/27 http://lsewww.epfl.ch/

Object subclass: #Tree

instanceVariableNames: '' instance methods

adding

add: anObject using: aBlock

^self merge: (Node with: anObject) using: aBlock accessing

first self subclassResponsibility enumerating

do: aBlock self subclassResponsibility removing

remo veFirstUsing: aBlock

self subclassResponsibility private

mer ge: aTree using: aBlock self subclassResponsibility

Arbre de priorité (Tree)

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

12/27 http://lsewww.epfl.ch/

Tree subclass: #Leaf

instanceVariableNames: '' instance methods

remo veFirstUsing: aBlock

^self private

mer ge: aTree using: aBlock

^aTree

Arbre de priorité (Leaf)

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

13/27 http://lsewww.epfl.ch/

Tree subclass: #Node

instanceVariableNames: 'left value right' instance methods

aBlock value: value.

left do: aBlock.

right do: aBlock.

removing

remo veFirstUsing: aBlock

^left merge: right using: aBlock

Arbre de priorité (Node)

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

14/27 http://lsewww.epfl.ch/

private

mer ge: aTree using: aBlock aTree first isNil

ifTrue:[^self].

(aBlock value: aTree first value: self first) ifTrue:[^aTree merge: self using: aBlock].

^PriorityNode with: value

left: (right merge: aTree using: aBlock) right: left

Arbre de priorité (PriorityNode)

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

15/27 http://lsewww.epfl.ch/

|queue|

queue := PriorityQueue withRelation:[:x :y|x < y].

queue addAll: #(34,13,19,5,17,22,13,18,3,17).

Exemple (queue de priorité)

3 remo veFirst

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

16/27 http://lsewww.epfl.ch/

q Objectif

º Simuler un système réel, au moyen d’un ordinateur.

º Le temps intervient explicitement, il s’agit de simuler l’évolution d’un système pendant une période donnée.

º Deux approches: simulation continue et simulation discrète.

q Simulation continue

º Le système évolue de manière continue au cours du temps; il est représenté au moyen d’une équation différentielle, d’une équation aux dérivées partielles ou d’un système.

º L’ordinateur intervient pour résoudre ces équations numériquement.

q Simulation discrète

º Le système ne change d’état qu’à des instants bien déterminés; t1, t2, t3, ..., tn. º Chaque changement d’état du système est déclanché par un événement.

º L’ordonnancement correct des événements est géré par un échéancier.

Simulation

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

17/27 http://lsewww.epfl.ch/

qSimulation continue

º Simulation de l’évolution de l’atmosphère terrestre pour effectuer des prévisions météo.

º À partir des propriétés des gaz composant l’atmosphère, son évolution est représentée au moyen d’équations aux dérivées partielles découlant des lois de la physique.

qSimulation discrète

º Simulation de guichets pour optimiser les files d’attente.

º Le système change d’état, p.ex., à chaque fois qu’un nouveau client se présente.

º Les clients arrivent aléatoirement selon une loi de probabilité donnée.

º Les événements sont par exemple: “nouveau client”, “début transaction”, “départ client”.

Simulation (exemples)

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

18/27 http://lsewww.epfl.ch/

q Temps virtuel

º Le système doit gérer le temps pour le système simulé. On parle de temps virtuel.

q Événements

º Un événement déclanche une action.

º Un événement est activé à un instant donné. (en temps virtuel)

q Échéancier

º L’échéancier gère l’ordonnancement des événements.

º Il gère aussi l’évolution du temps virtuel.

º Il est généralement construit autour d’une queue de priorité de notices d’événement.

Simulation discrète

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

19/27 http://lsewww.epfl.ch/

qAction future

º p.ex.,[charles embarquer]

º On peut la représenter sous la forme d’un bloc.

º Le bloc est évalué lors du déclanchement de l’événement.

qHeure de déclanchement º p.ex., 16:30

º L’action doit être déclanchée lorsque le temps virtuel est égal à l’heure de déclanchement.

Événements

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

20/27 http://lsewww.epfl.ch/

Object subclass: #Event

instanceVariableNames: 'time action' class methods

at: aTime do: aBlock

^(super new) time: aTime; action: aBlock; yourself instance methods

private

time: aTime time := aTime action: aBlock action := aBlock accessing

time ^time

evaluating

trigger action value comparing

precedes: anEvent

^(time < anEvent time)

Événements

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

21/27 http://lsewww.epfl.ch/

º L’échéancier gère le temps virtuel.

º L’échéancier est responsable de gérer correctement l’ordonnancement des événements.

º Les événements sont extraits de l’échéancier en fonction de l’heure de déclanchement de l’action correspondante.

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

22/27 http://lsewww.epfl.ch/

Object subclass: #Simulator

instanceVariableNames: 'queue clock' class methods

new

^(super new) initialize instance methods

initialize-release initialize

queue := PriorityQueue withRelation:[:x :y | x precedes: y].

clock := 0.

scheduling

at: aTime do: aBlock

queue add: (Event at: aTime do: aBlock).

w ait: aDuration thenDo: aBlock self at: clock + aDuration do: aBlock.

Échéancier

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

23/27

ifFalse:[self basicStep] run

[queue isEmpty]

w hileFalse:[self basicStep] private

basicStep

clock := queue first time.

(queue remo veFirst) trigger.

Échéancier (suite)

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

24/27 http://lsewww.epfl.ch/

q Événements º Ouverture de la poste º Fermeture de la poste º Nouveau client º Début transaction º Fin transaction

q Initialisation de la simulation º 8:00 Ouverture de la poste º 12:00 Fermeture de la poste

Exemple: simulation de guichets de poste

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

25/27 http://lsewww.epfl.ch/

qOuverture de la poste º Poste ouverte.

º Générer événement “nouveau client”.

qFermeture de la poste º Poste fermée.

qNouveau client

º Si la poste est fermée: ne rien faire.

º Générer événement “nouveau client”. (le client suivant) º Si queue alors faire la queue.

º Sinon, générer événement “début transaction”.

qDébut transaction

º Générer événement “fin transaction”.

qFin transaction

º Générer événement “début transaction”. (pour le client suivant)

Poste (événements)

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

26/27 http://lsewww.epfl.ch/

0 100 200 300 400 500 600 700 800 900 1000

q Chaque guichet a sa propre file d’attente º Modèle suisse, français, ...

q Quel est le temps moyen d’attente?

º temps minimum: 0 º temps moyen: 161.508 º temps maximum: 1048.93

Files d’attente distribuées

ÉCOLEPOLYTECHNIQUEFÉDÉRALE DELAUSANNE Laboratoire de Systèmes d’Exploitation - Xavier Défago - Jun 1999

27/27 http://lsewww.epfl.ch/

0 100 200 300 400 500 600 700 800 900 1000

qUne seule file d’attente pour tous les guichets º Modèle américain, anglais, japonais, ...

qQuel est le temps moyen d’attente?

º temps minimum: 0 º temps moyen: 149.837 º temps maximum: 398.2

File d’attente centralisée

Documents relatifs