Les états du processus

publicité
Département d’Informatique
Master Big Data Analytics & Smart Systems
Realisé par :
Encadré par :
Salma Largo
Pr.Meknassi
Khalid El masry
Année universitaire 2016/2017
Table des matières
Les états d’un processus _____________________________________________ 2
Définition : Processus ..................................................................................... 2
Les états du processus ................................................................................... 2
Le bloc de contrôle du processus (PCB) ...................................................... 4
Algorithme de Tri rapide _____________________________________________ 4
Le tri rapide ...................................................................................................... 4
Introduction ................................................................................................... 4
Description ..................................................................................................... 5
Explications .................................................................................................... 6
Jeu d'essai ......................................................................................................... 7
Complément : recherche dichotomique ....................................................... 9
Recherche dichotomique ............................................................................. 9
Loi de Morre _____________________________________________________ 10
Historique de loi de morre ........................................................................... 10
Loi de Moore et générations successives................................................. 10
Environnement de travail ____________________________________________ 12
Références ______________________________________________________ 12
Annexe _________________________________________________________ 12
LARGO & ELMASRY
Page 2
1) Les états d’un processus :
Définition : Processus
 Un processus est un programme en cours d'exécution auquel est associé un
environnement processeur (CO, PSW, RSP, registres généraux) et un environnement
mémoire appelés contexte du processus.
 Un processus est l'instance dynamique d'un programme et incarne le fil d'exécution de
celui-ci dans un espace d'adressage protégé (objets propres : ensemble des instructions
et données accessibles)
 Un programme réentrant est un programme pour lequel il peut exister plusieurs
processus en même temps
Les états du processus
Lors de son exécution, un processus est caractérisé par un état :
 lorsque le processus obtient le processeur et s'exécute, il est dans l'état élu. L'état élu
est l'état d'exécution du processus.
 lors de cette exécution, le processus peut demander à accéder à une ressource
(réalisation d'une entrée/sortie, accès à une variable protégée) qui n'est pas
immédiatement disponible : le processus ne peut pas poursuivre son exécution tant qu'il
n'a pas obtenu la ressource (par exemple, le processus doit attendre la fin de
l'entrée/sortie qui lui délivre les données sur lesquelles il réalise les calculs suivants
dans son code) : le processus quitte alors le processeur et passe dans l'état bloqué.
L'état bloqué est l'état d'attente d'une ressource autre que le processeur.
 lorsque le processus a enfin obtenu la ressource qu'il attendait, celui-ci peut
potentiellement reprendre son exécution. Cependant, nous nous sommes placés dans le
cadre de systèmes multiprogrammés, c'est-à-dire qu'il y a plusieurs programmes en
mémoire centrale et donc plusieurs processus. Lorsque le processus est passé dans
l'état bloqué, le processeur a été alloué à un autre processus. Le processeur n'est donc
pas forcément libre. Le processus passe alors dans l'état prêt.
L'état Prêt est l'état d'attente du processeur.
 Le passage de l'état prêt vers l'état élu constitue l'opération d'élection. Le passage de
l'état élu vers l'état bloqué est l'opération de blocage. Le passage de l'état bloqué vers
l'état prêt est l'opération de déblocage.
LARGO & ELMASRY
Page 3
Un processus est toujours crée dans l'état prêt. Un processus se termine toujours à partir de
l'état élu (sauf anomalie).
Figure 1 : le système multiprocessus / états des processus
2) Le bloc de contrôle du processus (PCB)
Le bloc de contrôle d'un processus (PCB) contient les informations suivantes :
 un identificateur unique du processus (un entier) : le PID
 l'état courant du processus (élu, prêt, bloqué)
 le contexte processeur du processus : la valeur du CO, la valeur des autres registres du
processeur
 le contexte mémoire : ce sont des informations mémoire qui permettent de trouver le
code et lesdonnées du processus en mémoire centrale
 des informations diverses de comptabilisation pour les statistiques sur les
performances système
 des informations liées à l’ordonnancement du processus. Le PCB permet la sauvegarde
et la restauration du contexte mémoire et du contexte processeur lors des opérations
de commutations de contexte.
LARGO & ELMASRY
Page 4
Figure 2 : bloc de contrôle de de processus
3) Algorithme de Tri rapide
Le tri rapide

Introduction
Le tri rapide est fondé sur une approche "diviser pour régner". Le tri rapide nous fait introduire
les notions de récurrence et de récursivité. Une méthode sera dite récursive si dans le corps
de cette méthode elle s'appelle elle-même. En mathématique, vous avez déjà dû manipuler des
suites qui étaient définies de manières récursives. Vous aviez Un qui était fonction de Un-1 et
on vous donnez la valeur de U0. Ici c'est pareil. Considérons le calcul de la factorielle :
factorielle(n) = n * factorielle(n-1) et factorielle(0) = 1. Nous avons vu dans le cours une
méthode qui calculer la factorielle de manière itérative. Voici l'algorithme d'une fonction qui
calcule la factorielle de manière itérative
Entier Factorielle(Entier n)
{
si (n == 0)
{
retourne (1);
}
sinon
{
retourne (n*Factorielle(n-1));
}
LARGO & ELMASRY
Page 5
On voit dans cet exemple que pour calculer la valeur de la factorielle pour n, on la calcule
d'abord pour n-1, et ainsi de suite. On s'arrête grâce à la condition initiale, à savoir que
Factorielle(0) vaut 1. Nous allons voir que le tri rapide est un algorithme récursif.

Description
Comme énoncé dans la section précédente le tri rapide est fondé sur une approche "diviser
pour régner" que l'on peut décomposer en 3 étapes. On considère que nous avons un tableau
Tab de taille n. On notera un "sous-tableau" de Tab, Tab[p…r], p étant l'indice du début du
sous-tableau et r l'indice de la fin du sous tableau. On remarquera qu'un sous-tableau est un
tableau et que Tab[0…n-1] est le sous-tableau représentant le tableau Tab en entier.
Diviser : le sous-tableau Tab[p…r] est partitionné( i.e. réarrangé) en 2 sous-tableaux non
vides Tab[p..q] et Tab[q+1..r] de telle sorte que chaque élément du tableau Tab[p..q] soit
inférieur ou égal à chaque élément de A[q+1…r]. L’indice q est calculé pendant la procédure de
partitionnement.
Régner : Les 2 sous-tableaux A[p..q] et A[q+1..r] sont triés par des appels récursifs à la
méthoide principale de tri-rapide.
Combiner : le tri rapide effectue "le tri sur place" (cf. la section 2.2 sur le tri par insertion).
Cela implique qu'il n'y a aucun travail supplémentaire pour les fusionner : le sous-tableau
Tab[p..r] tout entier est maintenant trié.
Le tri rapide va comporter 2 méthodes triRapide(Tableau tab, Entier p, Entier r) et
partitionner(Tableau tab, Entier p, Entier r), qui renvoie un entier. L'entier renvoyé par
partitionner est l'indice que l'on recherche dans l'étape "Diviser". L'appel initial sur le
tableau tab sera triRapide(tab, 0, tab.length). Voici les algorithmes des 2 méthodes.

Explications
Partitionner place les éléments plus petits que eltPivot dans la région inférieure du tableau et
les éléments plus grands que x dans la région supérieure. Il faut remarquer que les indices i
et j n'indicent jamais le tableau tabp…r] hors des limites même si cela ne semble pas évident
au premier abord. Il faut également noter que si on utilisait comme élément pivot tab[r] au
lieu de tab[p] et s'il s'avérait que tab[r] soit le plus grand élément du sous-tableau tab[p…r],
alors partitionner retournerait à triRapide la valeur q = r et triRapide bouclerait à "l'infini".
Dans partitionner on commence par choisir un eltPivot = tab[p] comme pivot autour duquel on
va effectuer le découpage (virtuel) du tableau tab[p…r]. Dans la suite on construit 2 "régions"
tab[p…i] et tab[j…r], respectivement à partir du début et de la fin du tableau tab[p…r], de
telle sorte que chaque élément de A[p…i] soit inférieur ou égal à x et chaque élément de
A[j…r] est supérieur ou égal à x. Initialement, i = p-1 et j = r+1, les 2 "régions" sont donc
vides.
LARGO & ELMASRY
Page 6
Dans le corps de la boucle "tant que (Vrai)" l'indice j est décrémenté et l'indice i est
incrémenté jusqu'à ce que tab[i] ≥ eltPivot ≥ tab[j]. Pour la clarté du raisonnement on
supposera que les inégalités sont strictes (si elles ne le sont pas l'échange peut de toute
façon être quand même effectué). On échange tab[i] et tab[j], car tab[i] est trop grand pour
appartenir à la région inférieure du tableau (il est plus grand que l'élément pivot) et tab[j]
trop petit pour appartenir à la région supérieure (il est plus petit que l'élément pivot), d'où la
nécessité de l'échange.
On ne sort de la boucle "Tan que (vrai)" que si i ≥ j, moment où le tableau tout entier a été
partitionné en 2 sous-tableaux tab[p…q] et tab[q+1…r], où l'on a p ≤ q < r et de telle manière
qu'aucun élément de tab[p…q] ne soit plus grand qu'un élément de tab[q+1…r].
Jeu d'essai :
Le programme nous permet choisir entre 3 options : la génération d’un tableau de variables
aléatoires, lire un tableau de données à partir d’un fichier et quitter le programme.
On va choisir la génération d’un tableau de variables aléatoire et on saisi le nom du fichier
ou on va stocker le tableau :
LARGO & ELMASRY
Page 7
Et affiche les données du tableau :
Après on choisi la méthode du tri :
LARGO & ELMASRY
Page 8
Et voilà le tableau trié
Complément : recherche dichotomique
Il s'agit de trouver dans un tableau l'indice correspondant à une valeur donnée. Le principe de
recherche dichotomique ne s'applique que pour des tableaux triés par rapport à l'information
sur laquelle s'établit la recherche. Soit X l'élément recherché dans un tableau T dont les
bornes inférieure et supérieure sont BI et BS. On appelle milieu (BI + BS) Div 2. Principe de
recherche de l'indice X :
Si T[milieu] > X, alors l'indice de X, s'il existe, est compris entre BI et milieu-1
Si T[milieu] = X, l'indice est trouvé.
Si T[milieu] < X, alors l'indice
LARGO & ELMASRY
Page 9
Recherche dichotomique
Lorsque l'on recherche un élément dans un tableau, en s'attend à effectuer, en moyenne, des
comparaisons avec la moitié des éléments avant de trouver un élément présent dans celui-ci.
Dans l'éventualité où l'élément cherché est absent du tableau, nous devons comparer la valeur
cherchée avec la totalité des éléments du tableau avant de pouvoir conclure à l'absence de
l'élément cherché.
La recherche dichotomique, sur un tableau trié en fonction du champ sur lequel nous
recherchons une valeur, permet de diminuer le nombre moyen de comparaisons nécessaires
pour conclure à la présence ou non, d'un élément dans le tableau.
Voici une méthode qui effectue la recherche d'un entier aChercher dans un tableau t d'entiers.
Si elle la trouve, la méthode retourne l'indice dans le tableau de la valeur cherchée, sinon, elle
retourne –1.
4) Loi de Morre
Historique de loi de morre
C’est en 1965, le 19 avril pour exacte que Gordon Moore, alors directeur R&D chez Fairchild
Semiconductor et futur co-fondateur d’Intel, livre ses observations sur le taux de croissance
exponentiel des circuits. Il constate alors que depuis 1959, un doublement régulier des
composants électroniques. Il extrapole alors que cette course ne va pas s’arrêter et que la
tendance va se poursuivre dans les années suivantes avec des composants non seulement de
moins en moins chères à produire mais aussi plus performants et économes en énergie. Sans
le deviner à l’époque, il met sur pied « une miniaturisation rythmée » des circuits intégrés
(ou transistors) des processeurs.
Intel conçoit dans ses laboratoires les 4004 en 1971 tandis que 1975, l’hypothèse de Gordon
Moore se vérifie presque intégralement et depuis, après une révision de sa régularité
(passage de un à deux ans), la « loi de Moore » devient une tendance générale. Il ne s’agit pas
du loi physique, démontrée ou démontrable mais d’une tendance qui est devenue le fil
conducteur de l’ensemble de l’industrie des semi-conducteurs qui se fait un devoir d’aller
aussi vite que le rythme prédit.
Loi de Moore et générations successives
A partir de 1970, le d´développement suit le rythme exponentiel représenté figure ce déçus.
C’est ce rythme de croissance qui est appelé : ”loi de Moore”.
LARGO & ELMASRY
Page 10
Figure 3 : nombre de transistors par circuit intégré
Le produit essentiel de cette industrie est la mémoire. Il dispose d’un très grand marché
(tous les montages ont besoin de mémoire), concentre toutes les difficultés technologiques
(si l’on recherche une densité maximum) et pousse constamment à la modernisation des
usines.
En 1974, Intel introduit la DRAM de 4 Kbits. Une cellule mémoire n’est plus constituée alors
que d’un seul transistor associé `a un condensateur. La technologie est MOS canal N grille Si.
Ce sera également la technologie des microprocesseurs 8 bits. Dans cette technologie, la
dissipation n’est pas négligeable en l’absence d’horloge, alors qu’elle l’est dans le CMOS (MOS
complémentaire), mais les réalisations CMOS occupent alors trop de surface.
Ce compromis sera renversé au début des années 80, date `a partir de laquelle l’utilisation du
CMOS devient universelle pour les circuits logiques. En 1984, les m´mémoires atteignent le
cap de 1 Mbits, c’est l ère VLSI (Very Large Scale Integration).
La loi de Moore n’est pas réalisée comme une évolution continue, mais comme une succession
de paliers (ou générations). A chaque palier, les industriels se fixent comme objectif de
diviser la surface d’un transistor 2, ce qui revient à diviser la largeur des motifs gravés par
racine de 2 dans chaque dimension. Comme, en outre, et grâce `à l’amélioration du rendement
de fabrication, on arrive à doubler la surface des puces `a chaque génération, cela donne un
facteur 4 pour le nombre de transistors par puce à chaque génération (figure 5 et 6). Depuis
plus de 30 ans, les générations se sont succédées au rythme d’une tous les trois ans. Ces
dernières années, elles se sont plutôt rapprochées, au rythme d’une tous les deux ans entre
1995 et 2001 (sans toutefois augmenter la surface des puces).
LARGO & ELMASRY
Page 11
5) Environnement de travail :
6) Références :
http://www.futura-sciences.com/tech/definitions/informatique-loi-moore-2447/
https://openclassrooms.com/courses/recherche-dichotomique
https://fr.wikipedia.org/wiki/Tri_rapide
https://fr.wikipedia.org/wiki/Processus_(informatique)
7) Annexe :
fonction
genererNbrAleatoir
es
LARGO & ELMASRY
Code source en langage C
Page 12
afficheTable
tri_rapid
tri_selection
LARGO & ELMASRY
Page 13
ecrire_fichier
lire_par_indice_lign
LARGO & ELMASRY
Page 14
Téléchargement