Logo ÉTS
Session
Cours
Responsable(s) Abdelouahed Gherbi

Se connecter
 

Sauvegarde réussie
Echec de sauvegarde
Avertissement
École de technologie supérieure

Responsable(s) de cours : Abdelouahed Gherbi


PLAN DE COURS

Automne 2024
LOG710 : Principes systèmes d'expl. et programmation système (3 crédits)





Préalables
Programme(s) : 7065,7070,7365,7610
             
  Profils(s) : Tous profils  
             
    LOG320    
             
Unités d'agrément
Total d'unités d'agrément : 58,8 60,0 % 40,0 %




Qualités de l'ingénieur

Qn
Qualité visée dans ce cours  
Qn
  Qualité visée dans un autre cours  
  Indicateur enseigné
  Indicateur évalué
  Indicateur enseigné et évalué



Descriptif du cours
Au terme de ce cours, l’étudiante ou l'étudiant aura acquis et appliqué les concepts, principes de base et techniques établies utilisés en génie logiciel pour l’analyse, la conception et l’implémentation des systèmes d’exploitation modernes.

Structures et architectures des systèmes d'exploitation : monolithique, en couche, micronoyau, et modulaire. Mode d’opération des systèmes d’exploitation : mode utilisateur, mode privilégié. Mécanisme des interruptions, appels systèmes et commutation de contexte. Concept de processus et fils d’exécution : bloc de contrôle de processus, état de processus et gestion de processus. Communication interprocessus : communication par échange de messages et par mémoire partagée. Synchronisation et coopération entre processus : exclusion mutuelle, sémaphores, mutex et moniteurs. Problème d’interblocage : graphes d’allocation de ressources et graphe d’attente, techniques de prévention, détection et évitement d’inter-blocage. Technique d’ordonnancement du processeur. Gestion de mémoire et système de mémoire virtuelle paginée. Système de gestion de fichiers. Fiabilité, protection et sécurité des systèmes d’exploitation. Étude de cas de système d’exploitation modernes.

Séances de laboratoire portant sur la programmation système incluant le processus de configuration, compilation et installation du noyau d’un système d’exploitation moderne, l’extension du noyau par implémentation de nouveaux appels systèmes et la conception et programmation de pilotes de périphériques.



Objectifs du cours

À la fin du cours, l'étudiant(e) devra être capable de :

  • Connaître les principales architectures des systèmes d’exploitation;
  • Comprendre les mécanismes et les algorithmes utilisés dans les systèmes d’exploitation;
  • Savoir choisir le système d’exploitation en fonction des besoins du projet;
  • Posséder les principes de la programmation système;



Stratégies pédagogiques
  • Un (1) cours magistral par semaine.
  • Des exercices pratiques en classe
  • Deux (2) heures de laboratoire par semaine.



Utilisation d’appareils électroniques

Le professeur permet l'utilisation d'appareils électroniques en cours dans la mesure ou ça ne perturbe pas le bon déroulement du cours et que ça ne dérange pas les autres étudiants ainsi que le professeur.  Cependant, il est interdit d'enregistrer (audio, photo ou vidéo) en totalité ou en partie les séances de cours de quelques façons que ce soit sans son autorisation préalable.

Les ordinateurs et tablettes ne sont autorisés lors des examens et Quiz. Seulement la calculatrice sera permise.

 




Horaire
Groupe Jour Heure Activité
01 Jeudi 08:30 - 12:00 Activité de cours
Vendredi 13:30 - 15:30 Laboratoire (Groupe A)
Vendredi 15:30 - 17:30 Laboratoire (Groupe B)



Coordonnées du personnel enseignant le cours
Groupe Nom Activité Courriel Local Disponibilité
01 Ahmed Bali Activité de cours cc-Ahmed.Bali@etsmtl.ca
01 Alexis Brodeur Laboratoire (Groupe A) cc-Alexis.Brodeur@etsmtl.ca



Cours
  1. Introduction aux systèmes d’exploitation (3.5 heures[1])
    1. Définition et évolution des systèmes d’exploitation (SE)
    2. Objectifs et principales fonctions des SE
    3. Modes d’opérations des SE
    4. Mécanismes des interruptions
    5. Les appels systèmes
    6. Structures usuelles des systèmes d’exploitation
  2. Processus et threads  (4 heures)
    1. Concept de processus, état de processus et PCB
    2. Ordonnancement des processus
    3. Opération sur les processus (fork et join)
    4. Threads
  3. Communication interprocessus (3.5 heures)
    1. Types de communications interprocessus
    2. Les signaux
    3. Les tubes
  4. Ordonnancement de la CPU  (3.5 heures)
    1. Concepts de base : cycle CPU-E/S, Ordonnanceur de CPU, critères d’ordonnancement
    2. Algorithmes d’ordonnancement : FCFS, SJF, Round-Robin, avec priorité, multi-niveaux
  5. Synchronisation des processus (7 heures)
    1. Problème de la concurrence des processus
    2. Section critique et exclusion mutuelle
    3. Les mécanismes de synchronisations : semaphores, mutex, moniteurs.
  6. Inter-blocage (3.5 heures)
    1. Définition et conditions nécessaires
    2. Modélisation d’inter-blocages
    3. Techniques de prévention, détection et évitement d’inter-blocages
  7. Gestion de la mémoire (7 heures)
    1. Fonction du gestionnaire de la mémoire
    2. Protection, relocation et swapping
    3. Multiprogrammation avec partitions fixes et partitions variables
    4. Algorithmes de placement
    5. Concept de mémoire virtuelle
    6. Pagination
    7. Algorithmes de remplacement de pages
  8. Systèmes de gestion des fichiers  (3.5 heures)
    1. Concept de fichier et opérations sur les fichiers
    2. Protection des fichiers
    3. Structure du système de fichiers
    4. Méthodes d’allocation d’espace
    5. Gestion d’espace libre
  9. Systèmes temps réel  (3.5 heures)
  10. Virtualisation (3.5 heures)
  11. Sécurité des systèmes d'exploitation (3.5 heures)

 


[1] Ces heures sont des heures approximatives d’enseignement pour chaque sujet et incluent le temps alloué à l’examen intra trimestriel.

 




Laboratoires et travaux pratiques

Une série de trois (03) laboratoires avec remise de rapports et code source seront effectués par groupe de deux à trois (2-3) étudiants.

  • Conception et implémentation d’un interprète de commandes (8 heures)
  • Conception et implémentation d’un ordonnanceur de processus (8 heures)

  • Conception, implémentation et test d’une API simplifiée d’un gestionnaire de mémoire avec plusieurs stratégies d’allocation de mémoire (8 heures)

NOTE : Le développement se fera dans une machine virtuelle que l'étudiant pourra utiliser sur son ordinateur personnel en plus de celui du laboratoire.




Utilisation d'outils d'ingénierie

L'étudiant se familiarisera avec les outils de développement de programmes dans l’environnement Linux. En particulier, il utilisera le langage de programmation C et les éditeurs de code, compilateurs, éditeurs de liens et débogueur de l’environnement Linux. L’étudiant pourra également utiliser une machine virtuelle Linux déployée avec le logiciel de virtualisation open source d’Oracle VirtualBox.




Évaluation
Trois (3) laboratoires 45 %
Examen intra 25 %
Examen final 30 %

 




Dates des examens intra
Groupe(s) Date
1 17 octobre 2024



Date de l'examen final
Votre examen final aura lieu pendant la période des examens finaux, veuillez consulter l'horaire à l'adresse suivante : https://www.etsmtl.ca/programmes-et-formations/horaire-des-examens-finaux


Politique de retard des travaux
Tout travail (devoir pratique, rapport de laboratoire, rapport de projet, etc.) remis en retard sans motif valable, c’est-à-dire autre que ceux mentionnés dans le Règlement des études (1er cycle, article 7.2.5/ cycles supérieurs, article 6.5.2) se verra attribuer la note zéro, à moins que d’autres dispositions ne soient communiquées par écrit par l’enseignante ou l’enseignant dans les consignes de chaque travail à remettre ou dans le plan de cours pour l’ensemble des travaux.



Absence à une évaluation

Afin de faire valider une absence à une évaluation en vue d’obtenir un examen de compensation, l’étudiante ou l’étudiant doit utiliser le formulaire prévu à cet effet dans son portail MonÉTS pour un examen final qui se déroule durant la période des examens finaux ou pour tout autre élément d’évaluation surveillé de 15% et plus durant la session. Si l’absence concerne un élément d’évaluation de moins de 15% durant la session, l’étudiant ou l’étudiante doit soumettre une demande par écrit à son enseignante ou enseignant.

Toute demande de validation d’absence doit se faire dans les cinq (5) jours ouvrables suivant la tenue de l’évaluation, sauf dans les cas d’une absence pour participation à une activité prévue aux règlements des études où la demande doit être soumise dans les cinq (5) jours ouvrables avant le jour de départ de l’ÉTS pour se rendre à l’activité.

Toute absence non justifiée par un motif majeur (voir articles 7.2.6.1 du RÉPC et 6.5.2 du RÉCS) entraînera l’attribution de la note zéro (0).




Infractions de nature académique
Les clauses du « Règlement sur les infractions de nature académique de l’ÉTS » s’appliquent dans ce cours ainsi que dans tous les cours du département. Les étudiantes et les étudiants doivent consulter le Règlement sur les infractions de nature académique (www.etsmtl.ca/a-propos/gouvernance/secretariat-general/cadre-reglementaire/reglement-sur-les-infractions-de-nature-academique) pour identifier les actes considérés comme étant des infractions de nature académique ainsi que prendre connaissance des sanctions prévues à cet effet. À l’ÉTS, le respect de la propriété intellectuelle est une valeur essentielle et tous les membres de la communauté étudiante sont invités à consulter la page Citer, pas plagier ! (www.etsmtl.ca/Etudiants-actuels/Baccalaureat/Citer-pas-plagier).

Systèmes d’intelligence artificielle générative (SIAG)
L’utilisation des systèmes d’intelligence artificielle générative (SIAG) dans les activités d’évaluation constitue une infraction de nature académique au sens du Règlement sur les infractions de nature académique, sauf si elle est explicitement autorisée par l’enseignante ou l’enseignant du cours.



Documentation obligatoire

SILBERSCHATZ, A.,  GAGNE G. and P.B. GALVIN, Operating System Concepts. 10th Edition, Wiley




Ouvrages de références

ANDREW S. Tanenbaum. Modern Operating Systems. Prentice Hall, New Jersey, 2001

STEVENS, W.R., Advanced Programming in the UNIX Environment. Addison-Wesley, 1992.

BOVET, D.P. & M. CESATI, Understanding the Linux Kernel: From I/O Ports to Process Management. 2nd Edition, O’Reilly, 2002.

GILLY, D., UNIX in a Nutshell. O’Reilly, 1992.

KERNIGHAM, B.W. & D. RITCHIE, The C Programming Language. 2nd Edition, Prentice-Hall, 1988.




Adresse internet du site de cours et autres liens utiles

Consultez le site du cours sur la plateforme Moodle.