Syllabus des cursus de Centrale Lille

Programmation système

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
Intervenants extérieurs (entreprise, recherche, enseignement secondaire) : divers enseignants vacataires

Résumé

L’objectif principal de ce cours est de pouvoir développer des applications en mettant en œuvre des outils de communication inter-processus disponibles dans un système d’exploitation UNIX. Les notions étudiées sont celles liées à l’architecture d’un système d’exploitation monolithique et multitâches, celles nécessaires pour mettre en oeuvre les différentes techniques de communication inter-processus sous UNIX, ainsi que celles concernant la protection et le partage de ressources : - Rappels des notions étudiées en LE1 et LE2 concernant les sujets suivants : -Architecture : matériel, noyau - pilotes, bibliothèques (appels système), SHELL - Multiprogrammation, commutation, segmentation mémoire, partage de ressources, droits d’accès, modes d’exécution & protection. - Implémentations UNIX (SysV - BSD - GNU) et POSIX - Processus & ordonnancement - Gestion de priorité et politiques d’ordonnancement -Modèle mémoire d’un processus -Processus & ordonnancement, création de processus fils (clonage) , création de threads -Signalisation d’un système d’exploitation, Notion de signal & interruption (matérielle & logicielle), masques de signaux, déroutement de traitement -Protection de ressources partagées par mutex et sémaphores anonymes et sémaphores nommés. -Modèles IPC, Production/Consommation de ressources, Synchronisation et inter-blocages, exclusion mutuelle -Communication inter-processus via signaux, -mémoire partagée, -tubes anonymes, -tubes nommés, -boîtes 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 / Dernier Contrôle Bloqué du cours
Commentaires: Plusieurs contrôles continus de durée faible ( Maximum 1 heure) ont lieu tout au long du module. Deux TP font l’objet d’une restitution d’un compte-rendu noté, les séances concernées changent chaque année. Un contrôle terminal se déroule sous forme d'un développement selon cahier des charges.

Ressources en ligne

Pour chaque séance, les sujets sont disponibles sur Moodle.

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) : 16
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

Algorithmique. Programmation en C sous Linux Shell Réseaux de PETRI

Nombre maximum d'inscrits

Remarques