% INF3173 — Principes des systèmes d'exploitation % UQAM — Département d'informatique % Plan de cours — Automne 2020 * Horaires, locaux et enseignants: * Site web du cours: Responsable(s) du cours ======================= Coordination ------------ Beaudry, Éric PK-4635 Enseignement ------------- Privat, Jean PK-4830 Groupes: 020, 030 Les étudiants doivent consulter régulièrement leur courriel UQAM, moyen de communication du professeur avec le groupe-cours. - Un [canal de discussion](https://mattermost.info.uqam.ca/inf3173-a2020/) privé en ligne est disponible pour interagir avec les enseignants, démonstrateurs et les autres étudiants. Un lien d'invitation vous sera envoyé par courriel. - Pour les questions d'ordre général, utilisez ce canal Mattermost, attendez un délai de quelques jours avant de relancer. *Aucune question d'ordre général ne sera répondu en privé si elle n'a pas été posée sur le canal de discussion en premier.* - Pour des questions plus spécifiques, personnelles ou pour relancer, contactez le professeur par courriel. - Aucune remise de TP ou de devoir par courriel ne sera acceptée. Le site web officiel du cours est . Il contient l'information à jour sur le cours ainsi que le matériel du cours (diapositives, vidéos, etc.). D'autres services (dont [Moodle](https://www.moodle.uqam.ca/)) pourraient être utilisés par exemple pour les évaluations en ligne (examens, quiz, remises de TP, etc.). Description du cours ==================== Objectifs --------- Maîtriser et appliquer les concepts fondamentaux des systèmes d'exploitation. Comprendre les mécanismes et les politiques mises-en-oeuvre par les systèmes d'exploitations. Maîtriser la programmation système UNIX/Linux en C. Sommaire du contenu ------------------- Rôles, types et structure générale des systèmes d'exploitation. Mécanismes noyaux : appels systèmes, interruptions, modes d'exécution processeur. Gestion des processus : états des processus, création et terminaison (fork et exec). Multitâche : changement de contexte, fils (threads), ordonnancement des tâches. Gestion des fichiers : systèmes de fichiers, inodes, descripteurs de fichiers, fichiers spéciaux. Communication inter-processus : échanges de messages, signaux, tubes, mémoire partagée. Concurrence : synchronisation, sections critiques, interblocages. Gestion de la mémoire : adressage, allocation, protection, pagination, mémoire virtuelle. Entrées-sorties : pilotes, pseudo-périphériques. Les considérations de sécurité seront intégrées au développement de la matière. Modalité d'enseignement ----------------------- Ce cours comporte une séance obligatoire de laboratoire (2 heures). Préalables académiques ---------------------- - INF2171 - Organisation des ordinateurs et assembleur - INF3135 - Construction et maintenance de logiciels Objectif du cours ================= Présenter les concepts fondamentaux des systèmes d'exploitation (processus, threads, E/S, systèmes de fichiers, gestion de la mémoire, concurrence, parallélisme, communication, sécurité, ...). Illustrer les concepts présentés à travers l'utilisation du système Unix: programmation en C d'applications multiprocessus, synchronisation, communication, ... Formule pédagogique et matériel requis ====================================== Le cours sera donné sous une forme de classe inversé. - Des capsules (et les diapositives des présentations) présentant la matière théorique seront rendue disponibles - Les séances magistrales seront utilisées pour répondre aux questions, faire des expériences, des exercices ou des études de cas. - Les laboratoires (2h) se dérouleront de façon synchrone. Zoom ---- Pour assister aux séances synchrones, le logiciel [zoom](https://uqam.zoom.us/) sera utilisé. Le lien zoom pour assister aux séance est si un mot de passe est instauré ou changé, cela sera communiqué par courriel. Les séances seront enregistrés et rendues disponible dans la mesure du possible. Vous devrez obligatoirement **activer votre caméra** lors des évaluations orales. Cela peut-être une caméra de téléphone, webcam, tablette, mais **une caméra est obligatoire sinon une note de zéro sera attribuée**. Linux ----- Pour réaliser les exercices de laboratoire et les travaux pratiques, les étudiants doivent avoir accès a un ordinateur utilisant une distribution Linux avec les logiciels et bibliothèques nécessaires au développement d'application en C (gcc et autre). Dans le cadre du cours, nous utilisons des distributions basées sur Debian (dont Ubuntu), mais la plupart des autres distributions Linux à jour seront acceptables. MacOS X ou le Sous-système Windows pour Linux (WSL) **n'est pas suffisant** pour participer (et réussir) le cours. L'utilisation d'une machine virtuelle Linux est acceptable ainsi que l'utilisation des serveurs de l'UQAM [mise à disposition](https://wiki.uqam.ca/display/SWSI/Labunix) des étudiants comme `java.labunix.uqam.ca`. Contenu du cours ================ Le contenu indiqué ici est donné à titre indicatif. Vouz aurez au moins la semaine précédente pour étudier le matériel de cours et regarder les vidéos. Semaine 1: Présentation du cours -------------------------------- - Comment ça va se passer Semaine 2: Introduction ----------------------- - Définition des systèmes d'exploitation - Composantes d'un ordinateur - Rôles d'un système d'exploitation - Mode noyau du processeur - Appel système - Interruptions et autres mécanismes materiels Semaine 3: Processus -------------------- - Threads. - Segments mémoire. Semaine 4: Création et terminaison ---------------------------------- - Vie et états. - Appel systèmes notables: fork exec wait Semaine 5: Ordonnancement des processus --------------------------------------- - Ordonnanceurs et politiques d'ordonnancement. - Préemptifs et non-préemptifs Semaine 6: Systèmes de fichiers ------------------------------- - Table des inodes - Droits des fichiers, utilisateur, processus - Liens durs et symboliques. - Accès et modification des fichiers. - Descripteur de fichiers - appels systèmes notables: stat open close read write Semaine 7: Systèmes de fichiers (suite) --------------------------------------- - Adressage des fichiers. - Traitement des fichiers ouverts. - Fiabilité de l'espace disque. Semaine 8: Examen intratrimestriel ---------------------------------- - Note: la séance de laboratoire est maintenue Semaine 9: Communication inter-processus ---------------------------------------- - Signaux. - Tubes simples. - Tubes nommés. - Appels systèmes notables: sigaction kill pipe dup2 Semaine 10: Concurrence ----------------------- - Thread. - Section critique. - Sémaphore. - Interblocage. Semaine 11: Gestion de la mémoire --------------------------------- - Allocation contiguë - Base/limit - Problèmes d'allocation. - Fragmentation Semaine 12: Pagination ---------------------- - Mémoire virtuelle. - Protection mémoire. - Copy-on-write. Semaine 13: Entrées-sorties --------------------------- - Pilote. - Asynchronisme. - Pseudo-périphériques. Semaine 14: Sujets avancés -------------------------- - Virtualisation - Conteneurs - Autres sujets possibles - Révision Semaine 15: Examen final ------------------------ - Séance de laboratoire de révision Modalités d'évaluation ====================== Description Pondération Dates -------------------- ------------- ---------------------------- 5 Quiz 10% Tout au long de la session Travail pratique 0 5% Semaines 2 et 3 Travail pratique 1 20% Semaines 4 à 7 Devoir intra 20% Semaine 8 Travail pratique 2 25% Semaines 9 à 14 Devoir final 20% Semaine 15 Les 5 quiz seront répartis tout au long de la session et donneront lieu à des notes intermédiaires. Les travaux pratiques (ainsi que les quiz et devoirs) devront être réalisés individuellement. Aucun retard ne sera accepté pour les TP ou les devoirs. Les devoirs seront des examens à réaliser à la maison dans une période d'une semaine. Validation orales ----------------- **Des évaluations orales seront utilisées pour valider les résultats des TP et/ou des devoirs.** En cas de plagiat ou de fraude, la sanction peut aller de la note zéro pour le travail ou l'examen, jusqu'à l'exclusion de l'université. Les règlements concernant le plagiat seront strictement appliqués. Pour plus de renseignements, consultez le site suivant : L'étudiant doit obtenir une moyenne cumulée aux examens supérieure ou égale à 50%. Si ces seuils ne sont pas atteints, la mention échec sera automatiquement attribuée au cours et ce, quelles que soient les notes obtenues. Médiagraphie ============ Les ressources suivantes sont recommandés. - SILBERSCHATZ, A., GAVIN, P.B., GAGNE, G. -- Operating Systems Concepts, 10TH EDITION, WILEY, 2018. - TANENBAUM, Andrew S. -- *Modern Operating Systems* -- PRENTICE HALL, 4RD ED., 2014. - TANENBAUM, Andrew S. -- *Système d'exploitation* -- PERSON EDUCATION, 3RD ED. - NUTT, G. -- *Operating system concepts* -- ADDISON WESLEY. - STALLING, W. -- *Operating systems Internals and Design Principles* -- PRENTICE HALL. - BIC, L.F. et SHAW, A.C. -- *Operating systems principles* -- PRENTICE HALL - KERNIGHAN, B.W., RITCHIE, D.M. -- *The C programming language* -- PRENTICE HALL. - RIFFLET, J.M. -- *La programmation sous Unix* -- SCIENCE INTERNATIONAL, PARIS. - GRAY, J.S. -- *Inteprocess communications in Linux* -- THE NOOKS AND GRANMIS - ROBBINGS, K.A. et ROBBINGS, S. -- *Unix Systems Programming* -- PRENTICE HALL.