Libellé du cours : | Programmation système |
---|---|
Département d'enseignement : | MIN / Mathématiques - Informatique |
Responsable d'enseignement : | Madame ISABELLE LE GLAZ |
Langue d'enseignement : | Français |
Ects potentiels : | 0 |
Grille des résultats : | |
Code et libellé (hp) : | LA1_A_IF_MIN_PSY - Programmation systèmes |
Equipe pédagogique
Enseignants : Madame ISABELLE LE GLAZ / Monsieur THOMAS BOURDEAUD HUY
Intervenants extérieurs (entreprise, recherche, enseignement secondaire) : divers enseignants vacataires
Résumé
Ce module permet de présenter les éléments de programmation système en C sous Linux. Notions liées à l’architecture d’un système d’exploitation monolithique et multitâches Notions nécessaires pour mettre en oeuvre les différentes technique de communication inter-processus sous UNIX, ainsi que la protection et le partage de ressources : -Processus & ordonnancement, création de processus fils, création de threads -Protection par mutex, sémaphores -Production/Consommation de ressources, Synchronisation, Exclusion mutuelle -Communication via signaux, mémoire partagée, tubes anonymes, tubes nommés, sémaphores anonymes, sémaphores nommés, boites aux lettres ● Séances 1 & 2 & 3 & 4 : Révisions des langage C, Shell + prise en main d'un RPI. Projet de développement en C sur RPI ● Séances 5 & 6 : Processus et signaux ● Séance 7 & 8 : Processus, threads, parallélisme et concurrence, mutex ● Séance 9 & 10 : Sémaphores ● Séance 11 & 12 : Mémoire partagée ● Séance 13 & 14 : Tubes et tubes nommés ● Séance 15 & 16 : Boites aux lettres
Objectifs pédagogiques
À l’issue du cours, l’élève sera capable de : ● comprendre les fondements de base des systèmes d’exploitation centralisés ● respecter les contraintes de la programmation système POSIX, dans un environnement UNIX ● appréhender un système par la programmation de ces composants : processus, appels systèmes - instruction/interruption, signaux, sémaphores, threads, … ● concevoir une application multi-processus ou multi-threads avec accès concurrents. Contribution du cours au référentiel de compétences ; à l’issue du cours, l’étudiant aura progressé dans : ● concevoir un système ● réaliser, développer un système ● mettre en place des protocoles de tests ● réaliser et exécuter des jeux de tests Connaissances travaillées: ● Vocabulaire de la programmation système ● Bonnes pratiques du développement système ● Gestion des processus ● Traitement des exceptions ● utilisation avancée des communications inter processus ● algorithmique ● programmation concurrente Compétences développées: ● Bonnes pratiques de développement ● réaliser du code propre ● réaliser des tests unitaires ● commenter son code ● Mettre en commun son code ● Développer une application communicante
Objectifs de développement durable
Modalités de contrôle de connaissance
Contrôle Continu / Contrôle Terminal
Commentaires: Compte-rendus de TP + Soutenance/rapport sur mini-projet + DS
Ressources en ligne
● Plateforme pédagogique de l’école
Pédagogie
Les séances alternent entre TD et TP. Chaque grand sujet est à réaliser sous forme d'un TD avec compte-rendu noté ( contrôle continu). En parallèle, les élèves doivent produire une application multi-processus, mettant en oeuvre au moins deux types de communication inter-processus et un partage et/ou synchronisation de ressources (travail noté sous forme de contrôle terminal, faisant l'objet d'une mini-soutenance technique + un compte-rendu).
Séquencement / modalités d'apprentissage
Nombre d'heures en CM (Cours Magistraux) : | 0 |
---|---|
Nombre d'heures en TD (Travaux Dirigés) : | 32 |
Nombre d'heures en TP (Travaux Pratiques) : | 28 |
Nombre d'heures en Séminaire : | 0 |
Nombre d'heures en Demi-séminaire : | 0 |
Nombre d'heures élèves en TEA (Travail En Autonomie) : | 0 |
Nombre d'heures élèves en TNE (Travail Non Encadré) : | 0 |
Nombre d'heures en CB (Contrôle Bloqué) : | 0 |
Nombre d'heures élèves en PER (Travail PERsonnel) : | 0 |
Nombre d'heures en Heures Projets : | 0 |
Pré-requis
Programmation en langage C Shell / Linux