Supports de cours

Programmation Système/Systèmes d'exploitation

1er semestre

Objectifs et contenu

Ce cours est une introduction pratique à la programmation de systèmes UNIX-like en langage C, shell-script et python. La programmation est orientée application système, conjointement à une introduction aux outils système. Les objectifs d'apprentissage sont les suivants :

  • Savoir distinguer les composants internes de base d'un système d'exploitation de type UNIX et avoir un premier aperçu général de son fonctionnement.
  • Utiliser un système d'exploitation de type UNIX en ligne de commande à l'aide du shell bash
  • Savoir écrire ou interpréter des scripts appliqués aux opérations du système en bash ou en python.
  • Programmer en langage C des applications faisant directement appel aux appels systèmes POSIX d'un système d'exploitation.
  • Bibliographie et Documentation

  • Un peu d'histoire sur le contexte de la création d'UNIX 1 2
  • Graham Glass et King Ables, Unix for programmers and Users (3rd edition)) , Person Education 2003
  • Passeport pour UNIX et C, Jean-Marc Champarnaud
  • The UNIX Time-Sharing System (1974)
  • An Introduction to the UNIX Shell by S.R Bourne (1997)
  • The Bash guide for beginners
  • Bash Reference Manual
  • Explain Shell : parseur de ligne de commande avec aide intégrée.
  • ShellCheck: finds bugs in your shell scripts. .
  • Manuel de référence sur les entrées/sorties bas niveau de la librairie C GNU
  • Manuel de référence sur les processus de la librairie C GNU
  • Manuel de référence sur les tubes de la librairie C GNU
  • Supports de cours

    1. Introduction aux Systèmes d'exploitation, prise en main d'UNIX

    2. Programmation shell-scripts

    3. Appels système, entrées sorties et opérations sur les fichiers en C

    4. Processus et tubes

    5. Complément : mmap()

    Exercices pratiques

  • TP1_prise_en_main_unix.txt.md [corrigé]
  • TP2_shell_scripts.txt.md [corrigé]
  • TP3_syscalls_io_opfichiers.txt.md [corrigé partiel]
  • TP4_processus_tubes.txt.md [corrigé partiel]
  • Sujet du Mini-projet

  • mini_projet_progsysteme_hepia_2018_2019_sparse_file.pdf
  • Image raw test.img (MD5 = 96c8814698be5e0ee3809c6ecf77d74b)
  • Image sparse test.simg (MD5 = dc2c621233a4f7b8066872ab85acf1a0)
  • Exemple de sérialisation native en C
  • Sujet d'examen type

  • progsysteme_exam_novembre2014_jour_rattrapage.pdf