Systèmes 1 L3 informatique
Modalité de contrôle de connaissances
- session 1: 35% projet + 65% examen
- session 2: max(examen, 35% projet + 65% examen ) Remarque : la note du projet c'est la note de la session 1, pas de soutenances de projet en session 2
Le projet
Voilà le sujet du projet systèmes.La date de remise de projet est repoussée jusqu'à 2 janvier 2012 à 23h59. D'autres modalités ne changent pas. Les soutenances auront lieu le jeudi 12 janvier 2012 salle T (548C). Les inscriptions au secrétariat de L3.
Examen
le 11 janvier 2012, 8h30-11h30, salle 13EDocuments autorisés pendant l'examen: vous pouvez imprimer et utiliser pendant l'examen les deux aide-mémoires données ci-dessous. De plus chacun peut ramener et utiliser une seule feuille manuscrite avec ses propres notes (chacun peut y mettre ce qu'il/elle juge utile pour examen). Cette feuille doit être signée avec votre nom. Tous les autres documents sont interdits.
Aide-mémoires
Avertissement : ces aide-mémoires peuvent contenir des erreurs (surtout d'orthographe, mais pas uniquement).
Pour s'entrainer
le sujet d'examen janvier 2011Cours
jeudi 12h00-1400 l'amphi 6C Halle aux farinesQuelques livres et liens utiles :
- Jean-Marie Rifflet, Jean-Baptiste Yunès, UNIX Programmation et communication, DUNOD
contient tout ce qui se fera en cours de systèmes aussi bien en L3 qu'en M1 et beaucoup plus, par contre pour un rappel approfondi de C il vaut mieux chercher ailleurs -
Jean-Pierre Braquelaire, Méthodologie de la programmation en C, MASSON
c'est avant tout un cours de C, mais le chapitre 7 décrit POSIX.1 - W. Richard Stevens, Stephen A. Rago, Advanced Programming in the UNIX Environment, Addison Wesley
- The Design and Implementation of the 4.4BSD Operating System
- The Single UNIX Specification
- Standard C Library
- The C Library Reference Guide contient aussi un rappel succinct de C
COURS
-
le 22 septembre
- rappel de C : arithmétique de pointeurs,
-
allocation dynamique de mémoire :
malloc(), calloc(), realloc(), free(), - tableau comme paramètre d'une fonction : réduction vers un pointeur.
- Un simple Makefile.
-
le 29 septembre
-
les entrées et sorties standard, les flots
FILE *, -
ouvrir et fermer le flot :
fopen, fclose, -
lecture et écriture de caractères
fgetc getc getchar,fputc putc putchar - lecture et écriture de chaînes de caractères,
-
entrées sorties binaires
fread fwrite, -
contrôle de tampon :
setvbuf setbuf fflush. -
Exemple : copier un fichier lire_var.
Exécutez ce programme avec
time:time lire_var fichier_in fichier_out taille_tamponavec les différentes tailles du tampon. Comparer le temps d'exécution.
-
les entrées et sorties standard, les flots
-
le 6 octobre
- Généralité sur UNIX.
-
Gestion des erreurs :
errno, strerror(), perror(). - Descripteurs de fichier. Types de fichiers. La structure de système de fichier sous UNIX.
-
open close creatpour ouvrir, fermer et créer un fichier ordinaires. -
read() readv() write() writev() pread() pwrite(). - Exemple : copier un fichier .
- Position courante dans un fichier régulier :
lseek()
-
le 13 octobre
-
Création, suppression et lecture d'un répertoire :
mkdir() rmdir() opendir(), closedir(), readdir(). - Exemple : afficher un répertoire.
-
Le retour sur les droits d'accès :
umask. - La structure de système de fichiers, le concept de i-node. Les informations stockées dans un i-node.
- Liens physiques (liens durs)
-
Création, suppression et déplacement d'un lien physique. Les fonctions
link() unlink() rename(). - Organisations de fichiers ouverts de points de vue de processus : tables de descripteurs, la table de fichiers ouverts, la table de v-nodes.
-
Création, suppression et lecture d'un répertoire :
- le 20 octobre
-
Le répertoire courant de processus : les fonctions
getcwd() chdir(). -
La lecture des informations stockées dans un i-node, les fonctions
stat() fstat(). - La structure
struct stat - Exemple: un programme qui lit et affiche certaines informations de i-node.
- Les notions de propriétaire réel et propriétaire effectif d'un processus. Les bits: set-uid, set-gid, sticky.
- le 27 octobre
-
Les fonctions
chmod, fchmod, chown, fchown, utime, localtime. -
Comment trouver les information sur un utilisateur (son nom login, son numéro ID,
le répertoire d'accueil. Les fonctions
getpwuid() getpwnam(). -
Exemple :
parcours d'un répertoire et des ses sous-répertoires. (Pour parcourir
récursivement les sous répertoires utilisez l'option
-R. Les liens symboliques ne sont pas traités correctement.) - le 3 novembre
-
Les liens symboliques. La comparaison des liens symboliques avec les liens physiques.
Les fonctions
symlink() readlink() lstat(). -
Verrouillage de fichiers réguliers. La structure
struct flocket la fonctionfcntl() - le 10 novembre
-
Création de processus :
fork(). - exemple.
- le 17 novembre
- Communiction entre les processus par un tube nommé. Exemples -- lecture et écriture bloquante et non bloquante dans un tube.
-
Processus zombie. La fonction
wait(). - le 24 novembre
-
Processus zombie - suite. La fonction
waitpid(). -
Recouvrement : les primitives de la famille
exec - le 1 décembre
-
Duplication de descripteurs, les primitives
dup()etdup2(). - Applications : redirections des entrées et sorties. Exemples.
- le 8 décembre
- Tubes anonymes. Exemples - plusieurs versions d'un programme qui communique avec ses fils par un tube anonyme.