Bonjour
Si mon sujet n'est pas dans la bonne rubrique je comprendrais aisément qu'on le déplace
pour autant il parle de sémaphore et de mutex codé en C sur eclipse dans le cadre d'un cours
je précise que je débute dans la compréhension du système de gestion de processus sous unix et linux et en général
or il y a des choses après avoir implémenté en c les algos des sémaphores et mutex que je pense ou pensais avoir compris
voici le problème :
j'ai 3 programmes ou projet sous eclipse (je met les codes des fichiers .c en pièces jointes)
sy.c =>synchro.c // ou phase d'initialisation des sémaphores et execution des Fils lecteurs et redacteur
l.c =>lecteur.c
red.c =>redacteur.c
Pour essayer de comprendre j'ai affiché l’adresse d’attachement retour de shmat contenu dans *mem mais ça ne m'aide pas beaucoup plus pour comprendre les résultats
(parfois avec difficulté printf ayant des comportements bizarres (que je ne comprend pas!) avec l'execution des programmes surtout si il y'a \t ou \n à l'intérieur du message donc je met le \n au dernier printf)
J'ai étudié les différentes primitives utilisées dans les programmes sur www.man-linux-magique.net/ avec difficultés mais ça m'aide pas vraiment en plus de m'embrouiller à ce stade même si c'est intéressant.
De plus je pense c'est plus un déroulement du code ou des notions que je ne comprend pas.
Quand j'execute plusieurs fois synchro.o j'ai parfois ce genre de résultat que je ne comprend pas :
pour moi après qu'un rédacteur est écrit dans la zone mémoire partagée le lecteur d'après devrait lire la dernière valeur écrite par un rédacteur.
ex:
redacteur:valeur mem 2 valeur memoire 2
lecteur:valeur mem 2 valeur memoire 2
lecteur:valeur mem 1 valeur memoire 0
redacteur:valeur mem 2 valeur memoire 1
redacteur:valeur mem 2 valeur memoire 2
lecteur:valeur mem 2 valeur memoire 0
lecteur:valeur mem 3 valeur memoire 0
redacteur:valeur mem 2 valeur memoire 3
lecteur:valeur mem 1 valeur memoire 0
lecteur:valeur mem 2 valeur memoire 0
redacteur:valeur mem 2 valeur memoire 1
lecteur:valeur mem 3 valeur memoire 0
redacteur:valeur mem 2 valeur memoire 2
redacteur:valeur mem 2 valeur memoire 3
lecteur:valeur mem 1 valeur memoire 0
lecteur:valeur mem 2 valeur memoire 0
redacteur:valeur mem 1 valeur memoire 2
lecteur:valeur mem 3 valeur memoire 0
redacteur:valeur mem 1 valeur memoire 2
redacteur:valeur mem 0 valeur memoire 3
J'ai vraiment besoin de comprendre ce qui se passe car je pensais avoir compris un peu les algos semaphores et mutex.
Et là je suis assez perdu au vu des résultats.
Comme les cours continus sur les threads, toutes les primitives et que ça risque de devenir de plus en plus bloquant(non je ne suis pas un processus) pour comprendre si je ne pige pas ces résultats.
En vous remerciant par avance de vos réponses et votre aide![]()
Partager