0% ont trouvé ce document utile (0 vote)
21 vues5 pages

CM4 Processus

Le document traite de la gestion des processus et des threads dans un système d'exploitation, en expliquant les concepts de programme, processus et thread. Il décrit également les états d'un processus, les structures de données associées, ainsi que les appels système pour la création et la terminaison des processus. Enfin, il aborde les implications de la gestion des processus, notamment la gestion des processus zombies et orphelins.

Transféré par

Jessica Karega
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues5 pages

CM4 Processus

Le document traite de la gestion des processus et des threads dans un système d'exploitation, en expliquant les concepts de programme, processus et thread. Il décrit également les états d'un processus, les structures de données associées, ainsi que les appels système pour la création et la terminaison des processus. Enfin, il aborde les implications de la gestion des processus, notamment la gestion des processus zombies et orphelins.

Transféré par

Jessica Karega
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction!

"#$%&'()%!*+,-.($%/&!
! !!

,%&-)../0(%!1'2!
! !! ! ! ! "#!$%&!'()*%&&+&!
0%.+1##(-&%!5671-&%!

0%.+1##(-&%!86&-946&-:/%.!

0%.+1##(-&%!2%!3)4-%&.!

Gestionnaire CPU! Gestionnaire CPU!

! Il est responsable de lʼallocation des processus pour exécuter les ! Remarques !


instructions dʼun programme!
1. Manipuler les threads nécessite moins de temps que manipuler
! Programme : entité inactive soumise par un utilisateur (ex. fichier)! les processus car plus complexes!
-- Un programme est composé de plusieurs processus!
2. Certains systèmes dʼexploitation supportent de multiple threads
! Processus : entité active qui nécessite un ensemble de ressources, avec un processus unique. Et dʼautres supportent de multiple
y compris la CPU, pour exécuter sa tâche.! threads avec de multiple processus. !
! !! ! -- Un processus peut consister en plusieurs threads !
3. Dans un système temps partagé, le multithreading permet
dʼaugmenter la réactivité (responsiveness), le partage de
! Thread : créé par un processus, il peut être exécuté indépendamment
ressources, et décroître lʼoverhead.!
de son processus parent. !
! !!
Abstraction des Processus! Abstraction des Processus!

! Exemple : 2 programmes A et B!
! ! Etats dʼun processus!
1. Trouver lʼentrée du Job A ! !
2. Identifier les ressources nécessaires à A ! ! Nouveau : en cours de création!
3. Exécuter les processus : une étape un processus ! ! Prêt : en attente dʼobtenir la CPU!
" Arrivée dʼune interruption!
! Exécution : en cours dʼexécution dans la CPU !
4. Réaliser un changement de contexte vers Job B!
5. Trouver lʼentrée du Job B! ! Bloqué : suspendu, pas prêt à être exécuté !
6. Identifier les ressources nécessaires au Job B ! • Pourquoi ? Attente dʼun événement.
7. Exécuter les processus : une étape un processus ! Ex : le processus fait une demande de lecture à partir du disque!
" Terminer le Job B! • Quand cesse-t-il dʼêtre bloqué ?
8. Réaliser un changement de contexte vers A! Ex : une fois les données prêtes, le disque émet un signal dʼinterruption!
9. Reprendre lʼexécution du processus interrompu ! ! Terminé : lʼexécution arrive à terme ou le programme a été forcé de
! ! " Terminer le Job A! sʼarrêter !

Abstraction des Processus! Abstraction des Processus!

! !! ! ! Quʼest-ce qui constitue un processus ?!


DE%#$%! 8&<$! =@6)/+1#! C%&7-#6!
"#$%&&/9+1#! 1. Un identifiant unique (PID)!
:(9).../*%+(!!! :(9).../*%+(!!!
7();(/<<%&! 7();(/<<%&! 2. Une image mémoire!
• Partie statique : code et données!
?-A#(,!&%9&-.%! ;%:/<$%!=>?!
• Partie dynamique : pile et tas!

3. Un contexte CPU : état des registres!


B,1:/6! ! Compteur programme (CP)!
! Opérandes courants!
! Pointeur vers la pile!
Processus : transitions entre les états!
4. Des descripteurs de fichiers : pointeurs vers les fichiers ouverts
et les périphériques!
1).3(456!7/(!58)(9).../*%+(!9%&!7()*%&&+&!
Abstraction des Processus! Abstraction des Processus!

! ! Structures de données du SE! Appels système (Unix)!

! PCB (Process Control Block) : structure qui contient toutes les 䕞 fork( ) crée un processus fils !
informations de chaque processus ! 䕞 Tous les processus sont crées à partir dʼun parent!
- Identifiant du processus ! 䕞 Le processus init est lʼancêtre de tous les processus !
- Etat courant du processus!
- Contexte du processus !
䕞 exec( ) permet à un processus dʼexécuter un exécutable donné!
! ! - Registres CPU (sauvegardés à la suspension du processus)! 䕞 exit( ) termine un processus!
- Mémoire Centrale : @ mémoire du processus!
䕞 wait( ) entraîne le blocage dʼun processus père jusquʼà ce que
- Ressources : physiques (disque, imprimante), fichiers !
le processus fils se termine!
- Priorité du processus : si applicable, pointeurs vers dʼautres
processus (parent)! ! Beaucoup de variantes de ces appels existent avec différents arguments!

Abstraction des Processus! Abstraction des Processus!

! ! Création dʼun processus (1)! Création dʼun processus (2)!

! Allocation de la mémoire et création dʼimages mémoire! ! Un nouveau processus est créé en faisant une copie ! !
• Charger le code et les données du disque! ! ! mémoire du parent!
• Créer une pile dʼexécution !
䕞 Le nouveau processus est ajouté à la liste des processus !
! Ouverture des fichiers basiques !
䕞 Lʼexécution du père et du fils commence juste après lʼappel fork( )!
• STD IN, OUT, ERR!
䕞 Les processus père et fils sʼexécutent et modifient les données
! Initialise les registres CPU ! mémoire indépendamment!

• PC pointe vers la première instruction!


Abstraction des Processus! Abstraction des Processus!

! ! Création dʼun processus : fork( )! ! ! Création dʼun processus : fork( )!

'2T!!e!
! !! !!!!9-2F$!!=)(>!G!H1-2!IJ!!! ! ! !! !!!!0.3!!'2!K!)7%.GX$1$1XY!ZF;[\;I!J!! !(T!!Xa%,,1!\1&,2b!X!!
!!'T!cd^e!
! !! !!!!!9-2F$!!!9J! ! ! ! ! ! ! •!!!"#H1)(+1#!2/!#1/H%(/!9&1)%../.!!!!
! ! ! !! !!!!!*B/(!!(]^_`!K!Xa%,,1!\1&,2b!X!J!! !*)70%!
!!!!(H%)!=)(>!?@! '2T!!e!
! !! !!!!!9)+C5%!!'!K!cd^e!J! ! !(T!!Xa%,,1!\1&,2b!X!!
! !! !!!!!9!K!=)(>!?!@J!!
•!!!O1#$%@$%!2/!3,.!&%)19-6!P!9(&+&!2%!! ! !! !!!!!9-2F$!!!9!J! ! ! ! ! ! ! !9T!^Scc!
! ! !!'T!cd^e!
! !! !!!!!0=!G9I!! !!!!!)%,/-!2/!9L&%! !9T!V!
! !! !!!!!A!! ! !! !!!!!9!K!=)(>!?!@!J!!
•!!!Q(!H(,%/&!2%!&%$1/&!2/!=)(>?@!9%&7%$!! !'T!^d_S!
! ! ! ! ! >>!9(&+%!2/!9&1)%../.!9L&%! ! ! ! !!!!!0=!G9I!!!>>!9&1)%../.!9L&%!!!
!!!!2%!2-R6&%#)-%&!,%.!S!T! !'2T!'%&76!
! ! ! !!!!!!M! ! ! ! ! ! '!K!^d_S!J!
! ! ! !!!!!%5&%!! ! ! U!V!!T!9&1)%../.!9L&%! ! ! ! !!!!!%5&%!!!
! ! K!V!!T!9&1)%../.!3,.! !(T!!XaO,,1!\1&,2b!X!! !(T!!XaO,,1!\1&,2b!X!!
! ! ! !!!!!N!! ! ! ! ! ! *5)&%!'2!J!
! ! W!V!T!%&&%/&!
! ! ! ! ! >>!9(&+%!2/!9&1)%../.!3,.! ! !! !!!!(]!9fS!`!K!gOg!J!!
! ! ! !!!!!M!

Abstraction des Processus! Abstraction des Processus!

Fin dʼun processus fils (1)! Fin dʼun processus fils (2)!

! Scénarios de terminaison dʼun processus ! ! Quand le processus père appelle wait( ), le fils zombie est nettoyé.!

! - En appelant exit( ) : cʼest fait automatiquement lorsque la fin ! wait( ) bloque le processus père jusquʼà ce que le fils se termine!
! ! ! ! du main( ) est atteinte!

! - Le système termine un processus misbehaving!


Remarque :!
! Les processus terminés restent dans le système (zombies)! ! Si le processus père termine avant le fils, le processus init adopte
le processus fils orphelin et le ʼʼ récupèreʼʼ.!
Abstraction des Processus!

Fin dʼun processus fils (3)!

! D)09!!%E03!G!0.3!!.$($/.!IJ!

䕞 Un moyen dʼarrêter le processus!

9-2F$!!F/03!G!0.3!G!.$($/.!IJ!
9-2F$!!F/03!G!9-2F$!!9-2Y!!0.3!!G.$($/.Y!!0.3!19+1#.!IJ!

䕞 Fonction à appeler par le père pour sʼassurer que son fils a terminé
son exécution!
䕞 Possibilité de cibler quel processus on souhaite attendre!

Vous aimerez peut-être aussi