63 lines
2.9 KiB
Plaintext
63 lines
2.9 KiB
Plaintext
|
Créez un répertoire cntr_r3.05, et pour chaque exercice un sous-répertoire (Ex1,
|
||
|
Ex2, etc.) pour y placer vos réponses.
|
||
|
|
||
|
Les exercices sont indépendants. Vous rendrez une archive compressée à la fin de
|
||
|
l'épreuve sur le site :
|
||
|
|
||
|
http://www.iut-fbleau.fr/site/site/DEVOIR
|
||
|
|
||
|
# EX1
|
||
|
1) Ecrivez un programme gdf1.c qui implante le diagramme de processus
|
||
|
conforme à la sortie suivante de la commande ps :
|
||
|
|
||
|
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
|
||
|
0 S 1000 30539 28785 0 80 0 - 1039 hrtime pts/0 00:00:00 a.out
|
||
|
1 S 1000 30542 30539 0 80 0 - 1039 hrtime pts/0 00:00:00 \_ a.out
|
||
|
1 S 1000 30544 30542 0 80 0 - 1039 hrtime pts/0 00:00:00 \_ a.out
|
||
|
1 S 1000 30546 30544 0 80 0 - 1039 hrtime pts/0 00:00:00 | \_ a.out
|
||
|
1 S 1000 30545 30542 0 80 0 - 1039 hrtime pts/0 00:00:00 \_ a.out
|
||
|
|
||
|
2) Expliquez (dans gdf2.txt) ce que provoque kill -TERM 30544.
|
||
|
|
||
|
3) Modifiez votre programme (gdf3.c) pour que le processus correspondant à 30546 utilise un
|
||
|
tube pour communiquer son PID au le processus correspondant à 30539.
|
||
|
|
||
|
# EX2
|
||
|
Le sous-repertoire 'src/' de votre répértoire de travail contient le source du
|
||
|
programme 'cachetst.c'. Ce programme peut être utilisé pour tester certaines
|
||
|
propriétés de la mémoire cache. Il crée une liste de structures et effectue
|
||
|
plusieurs passages par cette liste en faisant un test sur chaque élément.
|
||
|
|
||
|
La longueur de la liste et le nombre de passages (itérations) doivent être
|
||
|
donnsés sur la ligne de commande. Compilez et lancez ce programme avec par
|
||
|
exemple les valeurs '1000' '1000' sur la ligne de commande pour voir ce qu'il
|
||
|
calcule. Augmentez ces valeurs en prenant '10000' '100000' pour voir que le
|
||
|
temps de calcul est assez long.
|
||
|
|
||
|
Votre travail consiste à rajouter une partie de code à ce programme (appelez le
|
||
|
'vcachetst.c') pour qu'il affiche le nombre de tests actuellement
|
||
|
passés (la valeur de la variable 'z') après un ctrl + z depuis le terminal.
|
||
|
|
||
|
Mettez le source du programme 'vcachetst.c' dans le sous-repertoire 'src/'
|
||
|
|
||
|
# EX3
|
||
|
Écrire un programme où un processus père crée deux fils ; chaque fils attend un
|
||
|
couple d'entiers (x, y) du père et le renvoie dans l'ordre croissant. (combien
|
||
|
faut-il de tubes ?)
|
||
|
|
||
|
1. Le père prend quatre entiers a, b, c, d sur la ligne de commande,
|
||
|
|
||
|
2. il ordonne les couples (a1 , b1) et (c1, d1) grâce à ses deux fils (le père
|
||
|
donne le travail à **ses deux fils** avant de récupèrer le résultat)
|
||
|
|
||
|
3. Puis il ordonne les couples (a1, c1) et (b1, d1) grâce à ses deux fils, et
|
||
|
il obtient les couples (a2, c2) et (b2, d2).
|
||
|
|
||
|
4. Finalement, il ordonne le couple (c2 , b2) à l'aide d'un fils Il obtient le.
|
||
|
couple (c3, b3) .
|
||
|
|
||
|
5. Il affiche (a2 , c3 , b3 , d2).
|
||
|
|
||
|
On vieillera à fermer les descripteurs de fichiers inutilisés, à ne pas
|
||
|
dupliquer du code inutiliement.
|