• Aucun résultat trouvé

LeconceptdeprocessusOrdonnancementdeprocessusOp´erationssurlesprocessusCommunicationentreprocessusCommunicationclient-serveur Processus

N/A
N/A
Protected

Academic year: 2022

Partager "LeconceptdeprocessusOrdonnancementdeprocessusOp´erationssurlesprocessusCommunicationentreprocessusCommunicationclient-serveur Processus"

Copied!
31
0
0

Texte intégral

(1)

Processus

Le concept de processus

Ordonnancement de processus Op ´erations sur les processus Communication entre processus Communication client-serveur

(2)

Le concept de processus

Un SE ex ´ecutes divers programmes

Un processus est un programme en cours d’ex ´ecution S’appelle aussi t ˆache ou job

Un programme est une entit ´e passive (e.g. sur le disque) Un processus est une entit ´e active, avec un ´etat

Un programme peut avoir plusieurs processus

(3)

El ´ements de processus ´

Un processus a plusieurs parties

Le code du programme `a ex ´ecuter (text section)

Les registres (y compris le program counter)

La pile (stack), qui contient des donn ´ees temporaires

La data section qui contient les variables globales

Le tas (heap) qui contient les donn ´ees allou ´ee dynamiquement

(4)

La m ´emoire d’un processus

(5)

Etats d’un processus ´

Au cours de sa vie le processus passe par plusieurs ´etats

New: processus en cours de cr ´eation

Running: processus en cours d’ex ´ecution

Waiting: En attente d’un ´ev ´enement

Ready: Pr ˆet `a l’ex ´ecution, en attente d’un processeur

Terminated: Le processus a fini son ex ´ecution

(6)

Diagramme des ´etats

(7)

Bloc de contr ˆ ole de processus (PCB)

Descripteur de l’ ´etat d ´etaill ´e du processus

state: running, waiting, ...

ID: Identifiant, typiquement un nombre

Filiation: parent, enfants

Etat du processeur: registres, PC´

ordonnancement: priorit ´e, queue d’attente

Resources m ´emoires utilis ´ees

Accounting: Resources d ´ej `a utilis ´ees

E/S: fichiers ouverts, p ´eriph ´eriques associ ´es

state ID

Program counter

Registres

Limites m ´emoire Fichiers ouverts

· · ·

(8)

Changement de contexte

(9)

Threads

Un thread d ´ecrit l’ex ´ecution d’une s ´equence d’instructions Autres noms: fil d’ex ´ecution ou encore processus l ´eger Descripteur d’un thread: ID, PC, registres, et pile

Certains SE permettent plusieurs threads par processus

Chaque thread d’un processus peut s’ordonnancer ind ´ependemment Ex ´ecuter “fonctions” en m ˆeme temps dans le m ˆeme espace m ´emoire Le PCB contient alors une liste de descripteurs de threads

(10)

Ordonnancement

Multiprogrammation pour maximiser l’usage du CPU

Time-sharing veux rapidement donner un CPU `a un processus pr ˆet I.e.: minimiser le temps de r ´eponse, maximiser le throughput

Ordonnanceur choisi quand ex ´ecuter quel thread sur quel CPU Utilises des queues:

Queue de tous les threads

Queue des threads qui sont pr ˆets

Queue des threads en attente

(11)

Queues de processus

(12)

Ordonnanceur

(13)

Ordonnanceurs

Souvent l’ordonnanceur se divise en deux parties

Ordonnanceur `a long-terme choisi quels threads ont le droit d’avancer Ordonnanceur `a court-terme les r ´epartis sur les CPUs

Court-terme: invoqu ´e tr `es fr ´equemment, doit ˆetre tr `es rapide Processus g ´en ´eralement class ´es dans 2 cat ´egories:

CPU-bound: beaucoup de calculs, peut d’E/S

I/O-bound: peu de calculs, beaucoup d’E/S

(14)

Multit ˆache et GUI

L’ordonnanceur ne voit pas l’ ´ecran

Le GUI peut dire au noyau quelle(s) t ˆache(s) est en avant (foreground) De m ˆeme il peut ralentir/stopper les t ˆaches de fond (background)

Pas forc ´ement n ´ecessaire

On ne vout pas stopper toutes les t ˆaches de fonds

(15)

Changement de contexte (le retour)

Lors d’un changement de contexte, il faut

sauvegarder l’ ´etat du processus sortant

restorer l’ ´etat du processus entrant

...plus les caches

Temps perdu et source d’inefficacit ´e

L’ordonnanceur doit aussi minimiser les changements de contexte

(16)

Cr ´eation de processus

Un parent cr ´ee des enfants: un arbre de processus Le nouveau processus obtient un nouvel ID

Choix d’ex ´ecution, selon que le parent attend ou pas

Choix de quelles resources partager entre l’enfant et son parent

Fichiers ouverts

M ´emoire allou ´ee

(17)

Cr ´eation en POSIX

fork cr ´ee un nouveau processus

Partage les fichiers ouverts, rec¸oit une copie de la m ´emoire exec modifie le processus en changeant le programme

(18)

Cr ´eation en POSIX: Exemple

pid_t pid = fork();

if (pid < 0) {

printf (stderr, "Help!!\n");

} else if (pid == 0) {

execlp ("/bin/ls", "ls", NULL);

} else {

waitpid (pid);

printf ("Done!\n");

}

(19)

Fin d’un processus

Le processus peut se terminer en suicide (appel syst `eme exit) Ou on peut le tuer (infanticide, ou entre amis) avec kill

Ou il peut ˆetre termin ´e par le syst `eme en cas d’erreur Le parent est averti pour constater le d ´ec `es

Entre temps l `a, le processus termin ´e est appel ´e zombie

(20)

Communication entre processus

Utilis ´ee lorsque le travail est divis ´e entre plusieurs processus

Pour profiter du parall ´elisme

Pour des raisons de modularit ´e

Pour des raisons de s ´ecurit ´e

Efficacit ´e du partage d’information Deux grandes cat ´egories

Passage de messages: synchronisation implicite

M ´emoire partag ´ee: communication implicite

(21)

Probl `eme producteur-consommateur

Exemple classique: un processus g ´en `ere s ´equentiellement des donn ´ees utilis ´ee par un autre

Le consommateur doit attendre que le buffer se remplisse Deux mod `eles:

unbounded-buffer: le producteur n’a jamais besoin d’attendre

bounded-buffer: le producteur doit attendre si le buffer est plein

(22)

Bounded-buffer, m ´emoire partag ´ee na¨ıve

Le buffer est un tableau en m ´emoire partag ´ee, avec deux compteur:

in: index o `u ins ´erer le prochain ´el ´ement

out: index o `u trouver le prochain ´el ´ement

while (((in + 1) % BUFFER SIZE) == out) /*Wait*/;

buffer[in] = next produced;

in = (in + 1) % BUFFER SIZE;

while (in == out) /*Wait*/;

next consumed = buffer[out];

(23)

Message passing

Permet aux processus de communiquer et se synchroniser Pas de partage de variables

Une fois ´etablie la connection:

send pour envoyer un message

receive pour lire les messages rec¸u

Flot peut ˆetre une s ´equence de bytes ou sequence de paquets

Diverses techniques d’implantation (souvent, par m ´emoire partag ´ee)

(24)

Messages (a)synchrones et (non-)bloquant

L’ ´echange de message est synchrone quand le message n’est pas consid ´er ´e comme envoy ´e tant qu’il n’a pas ´et ´e rec¸u

Une primitive est bloquante si elle oblige le processus `a attendre

Un receive non-bloquant renvoie NULL s’il n’y rien

Un send asynchrone peut bloquer si le buffer est plein

(25)

POSIX shared memory

Syst `eme bas ´e sur la partage de fichier Ouverture, comme celle d’un fichier:

shm_fd = shm_open (name, O_CREAT|O_RDWR, 0666);

La partage vient de l’ouverture simultan ´ee dans plusieurs processus Taille fix ´ee:

ftruncate (shm_fd, size);

Acc `es en m ´emoire:

base = mmap (NULL, size, PROT_READ|PROT_WRITE,

MAP_SHARED, shm_fd, 0);

(26)

Pipes

Pipes ordinaires: communication style producteur-consommateur Producteur ´ecrit d’un c ˆot ´e

Consommateur lit de l’autre

Communication unidirectionnelle Ne fonctionnent que localement

Anonymes: utilisables seulement entre processus li ´es

(27)

IPC par messages dans Mach

Mach est un (gros) micro-noyau. Tout se fait par messages Chaque t ˆache a 2 mailboxes pr ´ed ´efinies: Kernel et Notify

Trois primitives:

msg_send

,

msg_receive

,

msg_rcp

Nouvelles mailboxes:

port_allocate

Diverses options si la mailbox est pleine

(28)

Sockets

Syst `eme client-serveur

Un socket est le “bout” (endpoint) d’une communication Chaque socket a une addresse IP et un port:

bind

Certains num ´eros de ports d ´edi ´es, standards La communication a lieu entre deux sockets

Communication ´etablie d’abord:

listen

,

bind

. Echange bidirectionnel de s ´equences de bytes´

(29)

Communication par sockets

(30)

Appels de proc ´edure distants - RPC

Syst `eme client-serveur

RPC abstrait la communication derri `ere une interface de proc ´edure Stubs des deux c ˆot ´es sont des proc ´edures “proxy”

Le stub client marshall les arguments et les envoie

Le stub du serveur les rec¸oit, les unmarshall, et fait l’appel local La r ´esultat fait le chemin inverse

RPC n’a pas la m ˆeme fiabilit ´e qu’un appel de fonction Appels bloquants ou non

(31)

Communication par sockets

Références

Documents relatifs

Tout d’abord, le développement d’un système complet permettant de transcrire les processus existants en langage FAUST permettra de disposer d’un corpus représentatif de

Mod´ eliser chacun des deux probl` emes suivants en terme de coloration de graphe (en prenant la variante de coloration la plus appropri´ ee) et indiquer si le calcul d’une

La préemption est la capacité d'un système d'exploitation multitâche à suspendre un processus au prot d'un autre.. Le multitâche préemptif est assuré par

– au standard POSIX pthread largement mis en oeuvre sur les systèmes UNIX/Linux – à l’API WIN32 threads fournie par Microsoft ©Windows pour les processus légers Les pages man

La topologie initiale T des espaces E intervenant dans toute la suite sera toujours supposée nucléaire. §

nous en rappellerons seulement les grandes lignes.. La démonstration du lemme suivant est analogue à celle du lemme I.2 : LEMME. fortement Markovien), dès qu’il l’est

Toute utilisation commerciale ou impression systématique est constitutive d’une infraction pénale.. Toute copie ou impression de ce fichier doit contenir la présente mention

Dans toute la suite de cet article, on conviendra que le fait d'être un temps d'arrêt algébrique, un processus algébriquement bien mesurable ou prévisible, et de manière générale