Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correction du pseudocode sem_wait et sem_post #21

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

precondition
Copy link

@precondition precondition commented Jan 4, 2022

La diapositive 6 du chapitre 7 sur les sémaphores dit très clairement que le type de la valeur du sémaphore est un entier non-signé.
slide 6 chapitre 7

Le syllabus évite de dire que c'est un entier non-signé mais la formulation « un entier qui stocke la valeur, positive ou nulle, du sémaphore » pourrait sous-entendre qu'un entier non-signé est utilisé.

En outre, nous pouvons aussi lire dans man sem_overview que la valeur d'un sémaphore ne peut pas descendre en dessous de zéro:

A semaphore is an integer whose value is never allowed to fall below zero. Two operations can be performed on semaphores: increment the value by one (sem_post(3)); and decrement the semaphore value by one (sem_wait(3)). If the value of a semaphore is currently zero, then a sem_wait(3) operation will block until the value becomes greater than zero.

Si on suppose que la valeur est un entier non-signé, la condition if(s->val<0) du pseudo-code fourni pour sem_wait est une contradiction; une condition jamais satisfaite.

Idem pour if(s->val<=0) dans sem_post. Il est impossible d'incrémenter un entier non-signé et d'obtenir un nombre inférieur à 0.

Ce PR met à jour le pseudo-code de sem_wait en décrémentant la valeur uniquement si celle-ci est strictement supérieure à 0 et en bloquant le thread si la valeur est égale à 0 (une condition réalisable, contrairement à s->val<0) et enlève le if dans sem_post.

@precondition precondition changed the title Correction du pseudocode pour valeur non-signée Correction du pseudocode sem_wait et sem_post Jan 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant