Quelques raccourcis :
Vous trouverez ici quelques documents et quelques liens pouvant, je l'espère, vous être utiles. Vous pouvez aussi consulter, parmi les liens divers mis à votre disposition, ceux portant sur la multiprogrammation et ceux portant sur le parallélisme. Dans les suggestions de lecture, il est probable que vous ayez un intérêt pour celles portant sur les systèmes répartis.
Les documents qui vous sont fournis ici le sont pour vous rendre service.
Je travaille très fort sur chacun de mes cours. Veuillez ne pas vendre (ou donner) les documents que je vous offre ici à qui que ce soit sans mon consentement. Si des abus surviennent, je vais cesser de rendre ce matériel disponible à toutes et à tous.
Si ces documents vous rendent service, faites-le moi savoir. Mon adresse de courriel est disponible sur la page où on trouve mon horaire.
Notez qu'en cette saison d'été 2017, un lundi est férié : le 22 mai (fête des patriotes).
Index des séances théoriques | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S00 | S01 | S02 | S03 | S04 | S05 | S06 | S07 | S08 | S09 | S10 | S11 | S12 | S13 | S14 |
Séance | Semaine du | Contenu |
---|---|---|
S00 |
1 mai |
Au menu :
Sur le plan des bases de l'opérationnalisation de la multiprogrammation, nous avons jeté un oeil à ce qui suit :
Sur le plan technique, nous avons survolé les opérateurs de transtypage ISO, propres au langage C++ et à la richesse de son système de types, de même que les conventions d'appel, pour lesquelles le concept est général mais l'écriture utilisée pour fins d'illustration (p. ex. : __stdcall)) est celle d'un compilateur en particulier. Quelques mots sont « échappés » (condition de course, par exemple) sans être expliqués, mais nous y reviendrons... |
S01 |
8 mai |
Au menu :
Nous avons aussi survolé la question des concepts d'atomicité et de volatilité dans divers langages, pour comprendre leur utilité (parfois, leur nécessité), leurs limites et leurs ramifications. Ceci met en relief les limites des compilateurs et de certaines approches plus traditionnelles à la concurrence sur des ordinateurs munis de plusieurs processeurs ou de plusieurs coeurs, et mène à discuter de synchronisation à très bas niveau. J'ai ajouté un exemple opérationnel d'une classe Mutex avec deux implémentations (système, usager) sur ../../Sujets/Client-Serveur/mutex-deux-impl.html |
S02 |
15 mai |
Au menu :
Le TP00 vous sera proposé durant cette séance. |
22 mai |
Congé (fête des patriotes) |
|
S03 |
29 mai |
Au menu :
|
S04 |
5 juin |
Au menu :
On m'a demandé de mettre en ligne un exemple d'utilisation d'expressions régulières. En voici un (en C++, mais c'est semblable dans d'autres langages) qui consomme et affiche les identifiants d'un fichier source, sans discriminer en fonction du contexte (ce qui est dans une chaîne de caractères ou dans un commentaire sera aussi affiché) :
|
S05 |
12 juin |
Au menu :
Le calendrier facultaire nous demande de ne pas tenir d'évaluations cette semaine. Pourtant, je vous suggère que nous ayons un minitest comme à l'habitude, puisque je compte les huit meilleurs du lot... Vous ne pouvez que gagner au change! |
S06 |
15 juin 18 h-21 h |
Le calendrier facultaire nous demande de ne pas tenir d'évaluations cette semaine. Pourtant, je vous suggère que nous ayons un minitest comme à l'habitude, puisque je compte les huit meilleurs du lot... Vous ne pouvez que gagner au change! |
S07 |
19 juin |
Au menu :
Cette semaine est celle des intras. Puisqu'il n'y a pas d'intras dans ce cours, nous tiendrons une séance (humaine!) en classe |
26 juin |
Relâche pour vous. Profitez-en! |
|
S08 |
3 juillet |
Au menu : à déterminer
|
10 juillet |
Votre chic prof sera à Toronto cette semaine pour la rencontre du WG21. Vous pouvez suivre ses aventures sur ../../Sujets/Orthogonal/wg21-2017-Toronto.html si vous le souhaitez |
|
S09 |
17 juillet |
Au menu :
Le TP02 vous sera proposé durant cette séance. Remettez le TP01 soit en début de séance (papier) ou au plus tard à 17 h (électronique) Si vous voulez avoir peur, voir :
|
S10 |
24 juillet |
Au menu :
|
S11 |
31 juillet |
Au menu :
Si la question du parallélisme vous intéresse même une fois le cours terminé, je vous invite à lire ces deux articles extrêmement importants, dont je traite parfois en classe (mais le temps ne m'a pas permis de le faire cette fois) :
Ce sont tous des textes profonds, instructifs, et qui valent la peine d'être lus avec attention. |
S12 |
7 août |
Je ne vais pas terriblement bien aujourd'hui, et il ne semble pas possible de reprendre le cours à une date ultérieure du fait que les examens finaux débutent demain. Pour cette raison, j'ai laissé ci-dessous ce que je comptais faire avec vous cette semaine, incluant une version PDF du minitest (que vous pourrez faire – individuellement! – dans le confort de votre foyer). Je vous invite à jeter un coup d'oeil aux sujets prévus, en particulier celui des continuations et la présentation de Michael Wong sur les exécuteurs (dans la vidéo, il y a beaucoup de trucs périphériques, alors ce qui vous intéresse débute autour de la 55e minute). Au menu :
|
« S14 » |
14 août |
À la « séance 14 », vous aurez droit à un on-ne-peut-plus-chic examen final, qui se tiendra de 9h à 12h au local D7-3021. Le TP02 doit être remis en début de séance (si vous privilégiez la forme imprimée) ou à 17 h aujourd'hui (si vous privilégiez la remise électronique). |
Les sections qui suivent proposent du code ou des exemples proposés en classe, le tout dans le but de vous permettre d'étudier la chose, de critiquer, de commenter, de questionner et d'expérimenter à loisir.
![]() |
Sélectionnez cette cible pour les sources de l'exemple Philosophes-0. Ces sources implémentent une solution naïve... tellement qu'il ne s'agit pas d'une solution (elle ne fonctionne pas vraiment, contenant une condition de course). Pour une cible plus globale, touchant chacune des solutions proposées, voir ceci. |
![]() |
Sélectionnez cette cible pour les sources de l'exemple Philosophes-1. Cette solution repose sur l'intervention d'un médiateur (un Waiter), qui implémente une politique de permission évitant de réelles situations problématiques. Pour une cible plus globale, touchant chacune des solutions proposées, voir ceci |
![]() |
Sélectionnez cette cible pour les sources de l'exemple Philosophes-2. Cette solution repose sur un protocole entre les philosophes (on ne prend les baguettes que dans un ordre bien précis). Pour une cible plus globale, touchant chacune des solutions proposées, voir ceci |
![]() |
Sélectionnez cette cible pour les sources de l'exemple Philosophes-3. Cette solution repose sur un moniteur capable de d'accorder le privilège de manger à un philosophe seulement s'il est certain que ses deux voisins ne mangent pas déjà. Pour une cible plus globale, touchant chacune des solutions proposées, voir ceci |
Les moyennes des résultats obtenus aux questions quasi-hebdomadaires suivent. Notez que l'écart-type n'est pas significatif étant donné la pondération des questions (sur cinq points, un point de différence représente , ce qui bousille quelque peu cette composante statistique).
Question | Séance | ||
---|---|---|---|
Q00 | S02 |
|
|
Q01 | S03 |
|
|
Q02 | S04 |
|
|
Q03 | S05 |
|
|
Q04 | S06 |
|
|
Q05 | S07 |
|
|
Q06 | S08 |
|
|
Q07 | S09 |
|
|
Q08 | S10 |
|
|
Q09 | S11 |
|
|
: |
|
Petite remarque sur les moyennes par question et sur la moyenne globale telles que présentées ici : je ne tiens compte que des participant(e)s au minitest, excluant les absent(e)s ce jour-là (ce qui explique les variations dans la colonne du ) ce qui signifie que la moyenne globale qui servira à évaluer la note finale sera, règle générale, un peu plus faible que ce que vous voyez ici (les absents à chaque minitest auront alors zéro pour ce minitest). Ce qui m'intéresse ici est de montrer les résultats pour celles et ceux qui ont effectivement répondu aux questions.
Les consignes des travaux pratiques en lien avec le cours sont ci-dessous. Notez que dû aux contraintes du calendrier, il est possible que deux travaux pratiques se chevauchent; tenez-en compte dans votre gestion du temps.
Travail | Consignes | Date de proposition | Date de remise | |||
---|---|---|---|---|---|---|
TP00 |
S02 (15 mai) | S05 (12 juin) | ||||
TP01 |
S05 (12 juin) | S08 (17 juillet) | ||||
TP02 |
S08 (17 juillet) | « S14 » (16 août) |