Université du Québec en Outaouais Département d'informatique et d'ingénierie
Sigle : INF3723  Gr. 01
Titre : Systèmes d'exploitation
Session : Automne 2018  Horaire et local
Professeur : Logrippo, Luigi
1. Description du cours paraissant à l'annuaire :

Objectifs

Au terme de cette activité, l'étudiant(e) sera en mesure : de comprendre les fonctionnalités de base des systèmes d'exploitation et leur implémentation, et de programmer des processus parallèles.

Contenu

Notions générales sur les systèmes d'exploitation et leur développement. Gestion de processus: états des processus et transitions d'états, files d'attente. Fils d'exécution (threads) et leur gestion. Processus parallèles et communication entre processus. Problèmes de synchronisation et techniques de synchronisation: sémaphores, moniteurs, méthodes synchronisées. Ordonnancement de l'unité centrale: différents algorithmes et leur évaluation. Interblocage de processus. Gestion de la mémoire centrale et de la mémoire virtuelle, différents algorithmes et leur évaluation. Fragmentation, pagination, segmentation et permutation. Systèmes de fichiers et leur implémentation, mémoire de masse. Sécurité: méthodes de protection des données et contrôle d'accès. Application aux systèmes d'exploitation Unix, Linux et Windows, travaux pratiques sur la programmation concurrente. Ce cours comporte des séances obligatoires de travaux dirigés (TD) de deux heures par semaine.

2. Objectifs spécifiques du cours :

Faire connaître aux étudiants les fonctions principales d'un système d'exploitation.

Familiariser les étudiants aux problèmes liés à la réalisation de ces fonctions et aux moyens de les résoudre (illustrations à partir des cas UNIX, Java avec "threads").

Faire acquérir de nouvelles approches de programmation (processus concurrents communicants avec partage des ressources) et les appliquer à des cas réels.

À terme, les étudiants doivent être, non seulement au fait des problèmes des systèmes d'exploitation (synchronisation, communication, partage des ressources et interblocage), mais aussi capables d'appliquer les solutions appropriées.

3. Stratégies pédagogiques :
  • Cours magistraux
  • Séances de travaux dirigés
  • Devoirs écrits et de programmation
  • Un examen de mi-session et un examen final
4. Heures de disponibilité ou modalités pour rendez-vous :

Après le cours ou sinon envoyer un courriel au professeur : luigi.logrippo@uqo.ca

5. Plan détaillé du cours sur 15 semaines :
Semaine Thèmes Dates
1   

Introduction

  • Introduction générale au cours
  • Qu'est-ce qu'un système d'exploitation
  • Évolution historique
  • Systèmes à temps réel

Rappel : Structure des ordinateurs

  • Structure des entrées/sorties
  • Interruptions
05 sept. 2018 
2   

Structure des systèmes d’exploitation

  • Aperçu sur la problématique du cours : gestion de processus, gestion de mémoire, gestion de fichiers, gestion d'E/S
  • Hiérarchie de stockage
  • Services des SE
  • Appels système
  • Structure à couche des SE, Micronoyaux
  • Machines virtuelles

Travail dirigé 1 (14 septembre 2018) : Introduction à Unix-Linux

12 sept. 2018 
3   

Processus

  • Notion de processus, Bloc de contrôle de processus
  • Files d’attente de processus et ordonnancement de processus
  • Ordonnancement à courte, moyenne et longue échéance
  • Processus coopérants
  • Exemple du producteur/consommateur

Threads

  • Threads noyau et threads utilisateur
  • Processus légers

Travail dirigé 2 (21 septembre 2018) : Processus en Unix-Linux

19 sept. 2018 
4   

Ordonnancement des processus

  • Concepts de base
  • Critères d'ordonnancement
  • Algorithmes d'ordonnancement, évaluation
  • Ordonnancement multiprocesseur
  • Ordonnancement temps réel
  • Ordonnancement de threads
  • Évaluation d’algorithmes

Travail dirigé 3 (28 septembre 2018) : Ordonnancement de processus

26 sept. 2018 
5   

Synchronisation des processus

  • Problème de la section critique (SC)
  • Solutions du problème de la SC : solutions par logiciel, par matériel, sémaphores, moniteurs
  • Les problèmes du tampon borné, des lecteurs/écrivains, des philosophes

Travail dirigé 4 (5 octobre 2018) : Les threads et leur utilisation

03 oct. 2018 
6   

Semaine d'études

10 oct. 2018 
7   

Interblocages

  • Caractérisation des interblocages
  • Prévention des interblocages
  • Éviter les interblocages
  • Détection d’interblocage
  • Travail dirigé 5 (19 octobre 2018) : La section critique et l’exclusion mutuelle
17 oct. 2018 
8   

Examen de mi-session

Travail dirigé 6 (26 octobre 2018) : Les sémaphores en Java

24 oct. 2018 
9   

Gestion de la mémoire (1)

  • Liaison d'adresses et chargement de programmes
  • Allocation de mémoire contiguë
  • Fragmentation de mémoire
  • Pagination
  • Segmentation

Travail dirigé 7 (2 novembre 2018) : Problèmes de synchronisation, moniteurs

31 oct. 2018 
10   

Gestion de la mémoire (2)

  • Continuation du cours 9

Travail dirigé 8 (9 novembre 2018) : Gestion de la mémoire

07 nov. 2018 
11   

Mémoire virtuelle

  • Algorithmes de remplacement de pages
  • Allocation de cadres de pages
  • Écroulement et ses causes
  • Modèle de l’ensemble de travail
  • Taux de défaut de pages

Travail dirigé 9 (16 novembre 2018) : Mémoire virtuelle

14 nov. 2018 
12   

Systèmes de fichiers

  • Attributs, opérations sur fichiers
  • Méthodes d'accès
  • Structures de répertoires
  • Méthodes d'allocation et de gestion de l'espace libre

Travail dirigé 10 (23 novembre 2018) : Systèmes de fichiers

21 nov. 2018 
13   

Systèmes d'entrée/sortie

  • Matériel, scrutation, interruptions
  • Accès direct en mémoire
  • Interfaces d'E/S d'applications

Structure de la mémoire auxiliaire

  • Organisation de fichiers sur disques
  • Ordonnancement d'E/S disque

Travail dirigé 11 (30 novembre 2018) : Discussion du devoir de programmation

28 nov. 2018 
14   

Protection et sécurité

  • Problèmes de protection, différentes solutions
  • Matrices d'accès et leur implémentation
  • Récapitulation du cours
05 déc. 2018 
15   

Examen final

12 déc. 2018 
6. Évaluation du cours :
  • Examen de mi-session : 25 %
  • Examen final : 40 %
  • Travaux écrits: 15 %
  • Travail de programmation: 20 %
7. Politiques départementales et institutionnelles :
8. Principales références :
  1. Notes du professeur (Moodle), ainsi que les manuels suivants, repérables dans la bibliothèque :

  2. A. Silberschatz, P. Galvin, G. Gagné, Principes des systèmes d'exploitation, Vulbert
  3. A. Silberschatz, P. Galvin, G. Gagné, Operating systems concept, John Wiley & Sons
  4. W. Stallings, Operating Systems, Internal and Design Principles, Prentice-Hall
  5. A. Tanenbaum, Systèmes d'exploitation, Pearson Education
  • Ressources de la bibliothèque en informatique et génie informatique (UQO)

    http://biblio.uqo.ca/disciplines/informatique.php

Notes du professeur

  • http://w3.uqo.ca/luigi/INF3723/notes_de_cours_index.html

9. Page Web du cours :
https://moodle.uqo.ca