vendredi 7 décembre 2007

tranche de vie

voila pourquoi j'adore l'informatique.
pour info pini, est une grosse brute à poils drus qui parfois me prend en petit scarabée (non c'est pas une position), pour essayer d'ouvrir mon esprit aux joies de la prog pour homme.

question du jour : comment implenter un read/write lock réentrant avec des sémaphores ?
#pini> -e+a
#chap> il faut d'abord définir un read write lock
#pini> un lock lockable soit en read, soit en write
#chap> ensuite le concept de sémaphore réentrant
#pini> non, c'est le lock qui doit être réentrant
#chap> ensuite tu te tapes les spécifs sur papier
#pini> le sémaphore, c le modèle de base: valeur de départ, P et V
#chap> tu codes
#chap> tu débuggues
#chap> et voile
#chap> -e+a
#pini> oué, ben justement, je trouve pas l'algo pour être à la fois read-reentrant et #rite-reentrant (et je voudrais aussi write-read-reentrant, tant qu'à faire)
#chap> hum je suis sur que c'est un problème interessant (et je suis pas ironique)
#chap> seulement je me souviens à peine des sémaphores
#chap> déjà que le rendez vous de ps était assez obscur à l'époque
#pini> bah, c'est juste un compteur avec une primitive P pour décrementer et bloquer si <= 0 et V #our incrémenter
#chap> hmmf mais y a des histoire de jetons non ?
#chap> et pis c quoi V ? ca demande l'objet sémaphoré ?
#pini> les jetons, c'est juste histoire d'illustrer la symbolique de la valeur du compteur
#pini> V, c'est la primitive qui ajoute un jeton (<=> incrémente le compteur)
#pini> P, c'est la primitive qui prend un jeton (<=> décremente le compteur) et bloque si y'en a pas (<=> compteur <= 0)
#pini> et je suis quasi-sûr qu'on peut utiliser juste ça pour faire un verrou lecture/écriture réentrant
#pini> pour l'instant, j'arrive à faire du read-reentrant, mais c tout
#chap> euh je retarduis en natif chap
#pini> à chaque fois que j'essaie une autre variante, je deadlock
#chap> tu veux un truc qui locke un objet
#chap> soit en r, soit en w soit les 2
#pini> soit en lecture, soit en écriture, oué
#chap> c un OR ou un XOR ?
#pini> justement
#chap> tin je me fais l'effet d'etre trop intellignet
#pini> tu as locké une fois en écriture, tu peux le refaire à l'infini (normal, si t'as le droit #'écrire)
#pini> et pareil en écriture
#pini> et pareil en lecture, pardon
#pini> et aussi permettre de locker en lecture après avoir locké en écriture
#chap> réentrant ça veut dire "tant que j'ai l'objet si je veux je le garde ?"
#pini> parce qu'un lock en écriture obtenu c'est garanti "section critique"
#pini> donc tu peux avoir un lock lecture, puisque tu es déjà le seul sur l'objet
#chap> section critique = ?
#pini> = "je suis tout seul"
#chap> c les trucs ou on peut pas etre duex ?
#pini> oué
#pini> non, réentrant ça veut dire que tu peux demander plusieurs fois de suite le même type de lock
#chap> oué c bien aussi comme tu dis :)
#pini> genre "read" "read" "read"
#pini> à cause que si tu l'as une fois, y'a pas de raison que tu l'ai pas 10x
#chap> mais le meme ps qui demande ou bien des différents ?
#chap> oui si tu reste toi , mais tu deviens qqn d'autre ?
#pini> le même
#pini> c'est réentrant que pour le même ps, sinon on appelle ça "le foutoir"
#chap> oki mais alors à ce moment la pourquoi ne pas rester dans la section critique ?
#chap> ^^
#pini> parce que le but caché du ça, c'est de fournir un certain nombre de fonction qui font le lock pour toi
#pini> soit en read, soit en write
#pini> et je veux pouvoir les appeller en cascade
#pini> par exemple appeller f qui lock en read depuis g qui lock en write
#chap> l'objet connait l'identité de celui qui locke ?
#chap> genre le pid
#pini> ben justement, je voudrais que pas
#chap> han
#pini> sinon, ça simplifie
#chap> evidemment c'te blaque
#chap> -q+g
#pini> :)
#chap> et c'est si pire que ça si tu met l'adresse du pointeur en office de pid ?
#chap> ou c pour le défi conceptuel uniquement
#pini> pour le défi

1 commentaire:

Kourai a dit…

Oué, c'est pas faux!