*
This commit is contained in:
62
SCR3.1/devoir27/TaF27
Normal file
62
SCR3.1/devoir27/TaF27
Normal file
@@ -0,0 +1,62 @@
|
||||
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.
|
Reference in New Issue
Block a user