TacOS-team / tacos

Système d'exploitation / Operating System
GNU General Public License v3.0
9 stars 4 forks source link

[Sémaphores] Repenser les sémaphores #101

Closed MaximeCheramy closed 12 years ago

MaximeCheramy commented 12 years ago

Suite à mon travail sur l'implémentation d'un waitpid en utilisant des sémaphores, je me suis rendu compte que l'interface proposée était à la fois peu claire et incomplète.

Peu claire : il y a des keys et des ids. Le problème c'est que ces fameux ids, lorsqu'ils sont utilisés, ne servent qu'à une chose, récupérer la key qui se trouve à l'intérieur. Alors pourquoi cette distinction ? Est-ce que c'était pour avoir plusieurs sémaphores pour une même key ? ksemget permet de récupérer et ksemcreate permet en + d'allouer, mais là où c'est un peu confus c'est que sous Linux par exemple (SysV), il n'y a que semget qui permet de créer avec un flag. Réduire le nombre de fonctions serait sans doute plus compréhensible. ksemget permet de récupérer un id à partir d'une key, mais chaque appel à ksemget renvoie un nouvel id. J'ai envie de dire : wtf. C'est à lier avec cette histoire de key et id, c'est confus.

Incomplet : j'ai eu besoin de faire un "tant que pas libre, je fais des semV". Pour ça j'ai commencé à exporter le sem_t, mais j'ai l'impression de faire doublon avec du code existant trop limitant. Et j'ai l'impression de faire encore un hack.

Compatibilité : Pour faciliter le développement d'applications, est-ce qu'on peut envisager de faire une interface en terme de syscall compatible plus ou moins avec soit POSIX soit SysV ?

MaximeCheramy commented 12 years ago

Je rouvre : j'ai oublié de modifier l'interface userspace.