SEPC-S1

De Ensiwiki
Aller à : navigation, rechercher


La page Ensiwiki n'est plus utilisée par ce cours depuis septembre 2021. La bonne page pour le cours de SEPC est là.

Sommaire

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là.

Page ensiwiki du cours de Système d'Exploitation et Programmation Concurrente, semestre 1.


Vous trouverez sur cette page:

  • Les supports de cours
  • Les supports de TD et TP

Les annales et d'autres trucs chouettes se trouvent sur la page générale du cours de SEPC.

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. Supports de cours (premier et second semestre)

Vidéos de la séance du 9 septembre 2020 : partie 1, partie 2, partie 3

Vidéos de la séance du 16 septembre 2020 : partie 1,partie 2 partie 3

Vidéos de la séance du 23 septembre 2020 : partie 1,Partie 1 sur Chamilo, partie 2

Vidéos de la séance du 30 septembre 2020 : Partie 1, Partie 2, Partie 3

Vidéos de la séance du 6 octobre 2020 : Partie 1

  • Cours 4 : L'ordonnancement ([transparents][1])
  • Cours 5 : Gestion mémoire Transparents

Vidéos de la séance du 6 octobre 2020 : Partie 2, Partie 3

Vidéos de la séance du 13 octobre 2020 : Partie 1 Partie 2 Partie 3 Partie 4

Vidéos de la séance du 20 octobre 2020 : Partie 1,Partie 2,Partie 3, Synthèse

Vidéos de la séance du 4 novembre : Partie 1, Partie 2, Partie 3, Partie 4

Vidéos de la séance du 18 novembre : Partie 1 Partie 2 Partie 3

Vidéos de la séance du 25 novembre : Partie 1, Partie 2, Partie 3, Partie 4

Vidéos de la séance du 2 décembre : Partie 1 Partie 2 Partie 2 sans problème de son

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. Bibliographie

Des livres contenants des explications détaillés, organisé par chapitre thématique (Processus, Mémoire, Fichiers, Synchronisation, etc. Vous pouvez lire chaque chapitre indépendamment des autres).

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. Archive confinement Covid-19 du printemps 2020 et 2021

Vous trouverez quelques supports détaillés utilisés lors du confinement Covid19 aux liens suivants

Les enseignants étaient souvent sur le serveur http://riot.ensimag.fr dans les salles "SEPC" et "SEPC Permanence Numérique"

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. Code des démos (second semestre et 2A en apprentissage)

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. Travaux dirigés et Travaux pratiques

Environnement de travail

  • Les squelettes sont prévus pour fonctionner avec l'environnement de référence de l'Ensimag (2015-2020: à base de centOS 7, celui des PC et des VM). Des Debian, Ubuntu et Manjaro récentes devraient fonctionner sans problème non plus. Tous les outils sont tous disponibles en standard dans votre distribution Linux.
  • Ils utilisent certains outils qu'il n'est pas nécessaire de comprendre mais qu'il faut utiliser pour effectuer les TPs:
    • Les Makefile pour la compilation et la construction du rendu, sont générés à l'aide de cmake
    • Les tests automatiques pour le shell utilisent un module standard pour le test des programmes interactifs du langage ruby (le paquetage de test est nommé ruby-minitest dans une débian récente, ou ruby-test-unit dans une debian plus ancienne)

Partager un projet avec votre binome dans gitlab.ensimag.fr

Pour rester simple, la source de votre gitlab sera la nouvelle origin et la branche s'appelle courante est master, mais c'est juste une convention.

  • Créer un projet VIDE (même pas un README) dans gitlab.ensimag.fr
  • Après avoir cloner le squelette, dans le répertoire de travail de git, nous allons changer les remotes:
  git remote rename origin upstream # la source "prof" est renommée en upstream
  git remote add origin URL-SSH-DU-PROJET-VIDE-DANS-GITLAB # crée une source distante en reprenant le nom /origin/
  git push --set-upstream origin master # copie l'état courant vers l'entrepot vide, devenant la source et y créant une branche /master/
  git pull -v # pour vérifier que vous utilisez votre gitlab
  git push -v # pour vérifier que vous utilisez votre gitlab

Séance 1

Minimum vital

  git clone https://github.com/gmounie/ensimag-rappeldec.git

L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme git push ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux. Corrections des bugs dans l'entrepôt: Faire git pull, pour les fusionner avec votre code.

    • Si vous voulez utiliser git plus avant, la page git du wiki avec des liens vers les tutoriaux.
    • Les solutions sont dans la branche solution (NDLR: Ne pas savoir faire un exercice est l'information utile ! La lecture de la solution ne vous apprendra pas ce que vous n'avez pas compris.)

Présentation du TP allocateur mémoire à rendre

  • TP allocateur mémoire virtuelle: Sujet
  • Les tests automatiques pour l'allocateur utilisent la bibliothèque C++ googletest
  • Le module python, qui permet de faire des test de votre allocateur en python utilise python3-dev. Vous devrez peut-être adapter le numéro de version (3.5, 3.9, etc) en fonction du python installé sur votre machine
  • Présentation TP allocateur Présentation

Nous vous conseillons de vous connecter à https://gitlab.ensimag.fr et de mettre en place une clef ssh sur votre compte (menu "user" en haut à droite, choisir "profile", puis le bouton en haut à droite "edit profile", puis dans le menu à gauche "clefs ssh")

  git clone git@gitlab.ensimag.fr:os/ensimag-malloc.git

Si vous ne vous êtes pas déjà connecté à gitlab.ensimag.fr et que vous n'avez pas mis en place une clef ssh, vous pouvez obtenir le squelette avec

  git clone https://gitlab.ensimag.fr/os/ensimag-malloc.git

Si vous forkez le squelette, pensez à le mettre en private. Ces TP étant une partie de vos examens, ils sont soumis à la charte des projets (cf. https://teide.ensimag.fr/Charte_contre_la_fraude.php)

Séance 2

Deux parties:

  1. Dekker-Peterson
  2. Présentation du TP shell

Dekker et Peterson

Présentation du TP shell à rendre

     man fork
     man 2 open (il y a beaucoup de open: les appels systèmes sont en section 2)
     info libc (doc de référence de la GNU Libc de votre Linux, avec des explications détaillées et des exemples complets de code))
     info libc "process creation example" (l'exemple de code de la section Process)
     info info (tutorial de info)
     emacs --eval '(info "libc")' (ou dans emacs, C-h i pour accéder à toutes les pages info, avec une interface colorée et des liens clicables)
  • Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
  git clone https://github.com/gmounie/ensimag-shell.git

L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme git push ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux.

    • Pour avoir un shell vraiment agréable, il peut utiliser la bibliothèque READLINE (édition de ligne, historique) (libreadline-dev dans une debian)
    • Les tests automatiques pour le shell utilisent un module standard pour le test des programmes interactifs du langage ruby (le paquetage de test est nommé ruby-minitest dans une débian récente, ou ruby-test-unit dans une debian plus ancienne)
    • Le shell utilise l'interpréteur scheme guile (version 1.8 ou 2.0)(guile-2.0-dev dans une débian récente)
    • FAQ TP Shell

Séance 3

Sujet du TD sur les moniteurs

  • Sujet
  • Enregistrement du TD, 2ème séance sur les moniteurs (lecteur/rédacteur, producteur/consommateur, début des philosophes)

Pour aller plus loin

Séance 4

Introduction aux threads

Présentation du TP thread à rendre

   git clone https://github.com/gmounie/ensimag-video.git
  • L'entrepôt est le même pour tout le monde. Il n'est donc accessible qu'en lecture. Les commandes commme git push ne devraient pas fonctionner. Vous ne pouvez pas y sauvegarder vos travaux.
  • Ce TP utilise les bibliothèques ogg, theora, vorbis et SDL2 (>= 2.0.4), ainsi que les entêtes de développement de ces bibliothèques (les include pour la compilation)

(noms Debian/Ubuntu: libsdl2-dev libogg-dev libvorbis-dev libtheora-dev.)

  • Sur certaines machines de l'ensimag, l'accélération de l'affichage par la SDL2 ne fonctionne pas bien. Vous pouvez la désactiver
 Dans src/ensitheora.c, la ligne 34
  renderer = SDL_CreateRenderer(screen, -1, 0);
 peut être remplacée par
  renderer = SDL_CreateRenderer(screen, -1, SDL_RENDERER_SOFTWARE);  
 # sinon télécharger coccinelle à la main sur la page précédente
 wget https://launchpad.net/~npalix/+archive/ubuntu/coccinelle/+files/coccinelle_1.0.8~20.04npalix1_amd64.deb
 sudo dpkg -i coccinelle_1.0.8~20.04npalix1_amd64.deb 
    • installation avec nix (sudo apt install nix; et vous ajouter au group nix-users) pour la Ubunutu LTS 20.4 qui n'a pas spatch, alors qu'il existe dans les Ubuntu avant et après.
 # une seule fois
 nix-channel --add https://nixos.org/channels/nixpkgs-unstable
 # pour lancer un shell qui aura coccinelle en supplément
 nix-channel --update
 nix-shell -p coccinelle --command=bash

Séance 5

Sémaphore 1

Séance 6

  • Mémoire: couplage mémoire (memory mapping)
    • Sujet du TP couplage mémoire
    • Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). Le programme utilise la bibliothèque SDL. (sous Debian et dérivées,vous aurez besoin du paquet libsdl2-dev et/ou libsdl-dev). On peut obtenir le squelette de départ en faisant :
  git clone https://github.com/gmounie/ensimag-shmem.git

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. Complément

TP OpenMP

  • Sujet du TP OpenMP
  • Sources: elles sont dans un entrepôt git sur le site github.com (branche master, le défaut). On peut les obtenir en faisant :
  git clone https://github.com/gmounie/ensimag-openmp.git

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. Annales d'examens

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! Exercices de synchronisation avec correction

Si vous voyez un bug dans les corrections, merci de le faire remonter !

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! QCM (Quiz interactifs)

Si vous voyez un bug dans les corrections, merci de le faire remonter !

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. QCM (PDF)

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. Planning SEPC (Cf. ADE)

Emploi du temps des cours et travaux dirigés de "SEPC" sont sur ADE.

  • Cours
    • 4MMSEPS1_CM_G1 : ISI, IF, SEOC
  • TD

ARCHIVES: juste pour la conservation ! Ne pas utiliser ! La bonne page est là. Quelques liens divers

Suggestion des élèves

Livre

Vidéos

  • OS: [2] (suggestion de: Vincent Lefoulon)
  • Mémoire virtuelle: [3] (suggestion de: Vincent Lefoulon)

A propos de GIT

Pour plus d'information sur l'utilisation de Git dans un cadre semblable à celui des TPs de ce cours, vous pouvez consulté la page: page sur les entrepots git partagées

Les enseignants