10. Activité pratique : processus et threads
La ressource publiée par Brio sous LAB3.5_processus_thread est servie sous le nom LAB2.5_processus_thread.pdf.
10.1 Liens symboliques
L’activité demande d’examiner la syntaxe de ln et le chemin /usr/bin/g++ pour reconnaître qu’un nom de commande peut être un lien symbolique. Rediriger ce lien vers /dev/null empêcherait l’invocation normale du compilateur. Cette manipulation privilégiée endommagerait l’environnement et ne doit pas être effectuée sur le système personnel.
10.2 fork, attente et faute mémoire
ExempleFork.cpp doit être expliqué avec fork, wait, sleep et getpid. Il faut distinguer :
- la valeur de retour de
forkdans chaque branche; - les PID réels;
- l’ordre garanti par
wait; - l’ordre qui reste libre.
Réactiver une écriture par pointeur invalide doit produire une faute mémoire. Cette observation illustre la protection de l’espace d’adressage et ne permet pas de déduire un ordre fixe entre le père et le fils.
10.3 Exemples pthread
ExempleThreads1.cpp fait identifier pthread_create, pthread_join et pthread_exit. ExempleThreads2.cpp doit être exécuté plusieurs fois pour observer des ordres variables. Lorsque la boucle de jointure est retirée, le thread principal peut terminer le processus avant que tous les travailleurs aient fini.
Les compilations et observations demeurent des actions personnelles à réaliser dans la VM officielle; elles ne sont pas présentées comme exécutées ici.