S´erie d’exercices #4
IFT-2245 6 f´ evrier 2017
4.1 Conditions de course
Dans beaucoup de syst`emes, il peut y avoir des conditions de course. Pre- nons l’exemple d’un compte en banque partag´e par une femme et son mari, et imaginons que le mari fait un appel `awithdrawau mˆeme moment que la femme fait un appel `a deposit. D´ecrire tout ce qui peut se passer dans ce genre de circonstance, et comment ´eviter les diff´erents probl`emes.
4.2 Mutex avec swap
Utiliser l’instruction sp´eciale atomiqueswap pour implanter des primitives d’exclusion mutuelleacquireet releasequi assurent l’attente limit´e.
4.3 Atomicit´ e
Montrer que si les op´erationswait et signal des s´emaphores ne sont pas ex´ecut´ee atomiquement, alors l’exclusion mutuelle peut ˆetre viol´ee.
4.4 Section critique ` a 2
Voici un candidat-solution au probl`eme de la section critique : bool flag[2] = { false, false };
int turn;
void enter (void) { flag[myself] = true;
while (flag[other] && turn == other) /*wait*/;
}
void leave (void) { turn = other;
flag[myself] = false;
}
Pour chacune des trois propri´et´es d´esir´ees (exclusion mutuelle, progr`es, et attente limit´ee), prouver qu’elle est v´erifi´ee ou montrer un contre exemple.
1
4.5 Inhiber les interruptions
Expliquer pourquoi inhiber les interruptions n’est pas une technique ap- propri´ee pour impl´ementer les primitives de synchronisation dans un syst`eme multiprocesseur.
4.6 Spinlocks
Expliquer pourquoi les spinlock sont inappropri´es dans un syst`eme mono- processeur, mais sont souvent utilis´es dans les syst`emes multiprocesseurs ?
4.7 Section critique ` a 3
Prendre la solution de Peterson au probl`eme de la section critique et le g´en´eraliser `a 3 processus.
2