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

Clarification sur le type de la valeur du sémaphore #20

Closed
wants to merge 1 commit into from

Conversation

precondition
Copy link

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é, or c'est faux.
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 aussi amener certains à croire qu'un entier non-signé est utilisé.

À cause de ça, la condition if du pseudo-code pour sem_wait me semblait être une condition toujours fausse et relevait donc d'une faute de frappe. Ce serait une contradiction car un entier non-signé est toujours forcément ≥0. Quand bien même on décrémenterait un entier non-signé égal à 0, on aura alors à faire à un phénomène d'overflow où la variable prendrait une valeur égale à UINT_MAX (dont la valeur exacte dépendra du nombre de bits), pas à -1.

 int sem_wait(semaphore *s)
 {
  s->val=s->val-1;
  if(s->val<0)
  {
   // Place this thread in s.queue;
   // This thread is blocked;
  }
 }

Ce PR clarifie donc le fait que la valeur du sémaphore est un entier signé qui peut aller dans les nombres négatifs pour éviter que d'autres étudiants fassent dans la même erreur de compréhension que moi.

PS: Les slides ne sont pas open-source, j'imagine ?

@precondition
Copy link
Author

Fermé en faveur d'une approche alternative proposée dans #21

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