Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno...

28
Programmation système et réseau sous unix Bruno GAS Orientation IRSI - 2016/2017

Transcript of Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno...

Page 1: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Programmation système et réseau sous unix

Bruno GAS

Orientation IRSI - 2016/2017

Page 2: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Organisation de l’UEEncadrement:• Responsable UE: Bruno Gas ([email protected])• Chargée(e) de TP et projets:Séances (30h):• 5 cours - 10h• 3 TPs - 12h (2 groupes)• 2 séances de projets - 8h (2 groupes)• Libre service en salle 221.

Page 3: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Organisation de l’UEEvaluation (3 ECTS):• Note d’écrit: Contrôle de TP sur machine (écrit ou oral au rattrapage) Documents écrits et programmes réalisé en TP autorisés Pas de machines personnelles, pas d’accès à Internet

• Note de TP: évaluation du projet (non rattrapable) Rapport du projet, codes sources, exécutable Projets en monômes.

Documentation - énoncés de TP/projets:• Site Internet de la spécialité:

http://www.edu/upmc/sdi/isi http://www.edu/upmc/sdi/i4• Login/Passwd: Communiqués au premier cours• M1 Orientation IRSI -> Les unités d’enseignement -> Programmation et système sous Linux -> Intranet• M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet

Page 4: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Organisation de l’UEEmploi du temps

• COURS 1/5: Mercredi 15 septembre, 8h30-10h30 • COURS 2/5: Mercredi 22 septembre, 8h30-10h30 • TP 1/3, gr C1+C2: Lundi 26 septembre, 13h45 - 18h • TP 1/3, gr C3+C4: Mercredi 28 septembre, 13h45 - 18h • COURS 3/5: Lundi 10 octobre, 13h45 - 15h45 • COURS 4/5: Mercredi 14 octobre, 8h30-10h30 - CC (QCM) • TP 2/3, gr C1+C3: Lundi 24 octobre, 13h45 - 18h • TP 2/3, gr C2+C4: Mardi 25 octobre, 13h45 - 18h • TP 3/3, gr C1+C3: Lundi 7 novembre, 8h30-12h30 • TP 3/3, gr C2+C4: Mercredi 9 novembre, 13h45 - 18h • COURS 5/5: Jeudi 17 novembre, 8h30-10h30 • PROJET 1/2, gr C2+C4: Lundi 21 novembre, 8h30-12h30 • PROJET 1/2, gr C1+C3: Jeudi 24 novembre, 8h30-12h30 • PROJET 2/2, gr C1+C3: lundi 27 novembre, 13h45 - 18h • PROJET 2/2, gr C2+C4: Jeudi 1 décembre, 8h30-12h30

Examens • Examen de TP (note d'écrit), Gr C2+C4: Jeudi 15 décembre • Examen de TP (note d'écrit), Gr C1+C3: Jeudi 15 décembre • Remise des projets (note de TP), Vendredi 16 décembre

Page 5: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Plan du cours

• Unix - utilisation / fichiers

• Création et synchronisation de processus

• Communication par signaux et tubes

• Programmation réseau

• Threads

Page 6: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Introduction

• Unix est un système d’exploitation

• Né aux laboratoires Bell (AT&T) en 1970 (Ken Thompson, Dennis Ritchie, Brian Kernighan)

• Ecrit en langage C en 1973

• Système multi-tâches et multi-utilisateur

Source: http://www.commentcamarche.net/

Page 7: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Pourquoi unix ?

• Le prix

• Disponibilité des sources

• Intelligence des solutions mises en oeuvre

• Système simple et ouvert

• Grande ressource bibliographique

Page 8: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Raisons du succès d’unix/linux

• Ecrit dans un langage de haut niveau (C)

• Une interface simple et puissante (les «shells»)

• Des primitives puissantes qui simplifient l’écriture des programmes

• Multi-utilisateurs et multitâches

• Format générique pour les fichiers (flot d’octets)

• Architecture de la machine cachée à l’utilisateur

• ...

Page 9: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Points faibles

• Fragilité du SGF (corrigée avec les SGF journalisés)

• Gestion et rattrapage des interruptions inadaptés au temps réel

• Mécanisme de création/gestion des processus lourd (amélioré avec la gestion des threads)

Page 10: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Source: wikipedia

Page 11: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Vue générale du système

Un système d’exploitation

est un programme qui sert d’interface

entre un utilisateur et un

ordinateur

C’est aussi un ensemble de

procédures qui permet à un

groupe d’utilisateurs de

partager efficacement un

ordinateur

Page 12: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Point de vue utilisateur

Structure en couches et «Encapsulation» Chaque couche est conçue

pour pouvoir être utilisée sans connaître les couches inférieures

Page 13: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Architecture du noyau

Structure en éléments

disjoints et programmables

de façon disjointe

Page 14: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Le système de gestion de fichiers

C’est un outil de manipulation des fichiers

• Pour le système

• Pour les utilisateurs

Stockage des données des utilisateurs

Stockage des objets importants du système • mémoire • terminaux, • périphériques variés •...

• Partage: utilisation d’un même fichier par plusieurs utilisateurs • Efficacité: utilisation de cache, uniformisation des accès • Protection des éléments important du système • Protection inter-utilisateurs

Page 15: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Concept de fichier

L’unité logique de base est : le fichier

Suite finie de bytes matérialisée par des blocs disques et une inode

• Localisation sur le disque • Propriétaire et groupe propriétaire • Droits d’accès • Taille • Date de création

Contient les propriétés du fichier, mais pas son nom:

Un nom est lié à un fichier mais un fichier n’est pas lié à un nom. Un fichier peut exister sans avoir de nom dans l’arborescence

Page 16: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Arborescence

• Une seule racine • Une structure dynamique • Une grande puissance d’expression • Un graphe acyclique

Graphe acyclique:L’ensemble des algorithmes simples utilisables sur des graphe acycliques comme le parcours, la vérification des fichiers libres, etc. deviennent beaucoup plus difficiles à écrire pour des graphes admettant des cycles.

Des algorithmes de ramasse-miettes doivent être utilisés pour savoir si certains objets sont utilisés on non et pour récuperer les inodes ou blocs perdus après un crash.

Page 17: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Arborescence sous linux• / • /bin • /boot • /dev • /etc • /etc/rc.d • /etc/X11 • /etc/sysconfig • /etc/cron • /home • /lib • /mnt • /opt • /root • /sbin • /tmp • /usr • /var • /proc

Racine Les fichiers exécutables (en binaire) Le noyau et les fichiers de démarrage Fichiers spéciaux de communication avec les périphériques Fichiers de configuration du système scripts de démarrage du système scripts de configuration du serveur X configuration des périphériques description des tâches périodiques à effectuer Racine des répertoires personnels des utilisateurs Bibliothèques et modules du noyau Racine des points de montage des systèmes de fichier périphériques Applications supplémentaires Répertoire personnel de l’utilisateur root Fichiers exécutables pour l’administration du système Stockage des fichiers temporaires Programmes accessibles à tout utilisateur (structure id. à la racine) Données variables liées à la machine (ex: fichiers d’impression) Pseudo répertoire contenant une «image» du système

Page 18: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Types de Fichiers

• Fichiers répertoires : catalogue de noms de fichiers

• Fichiers standards : les fichiers textes, les programmes, tout ce qui est manipulé par l’utilisateur

• Liens symboliques : pointeur sur un autre fichier

• Fichiers spéciaux : fichier associé à un périphérique. Lorsqu’on agit sur ce fichier, on agit en fait sur le périphérique

• Exemple: le répertoire /dev : Il contient les dispositifs matériels (périphériques, devices)

Character devices: • Terminaux • Imprimantes • Mémoirte, ...

Block devices: • Disques • Bandes magnétiques • Lecteurs/graveurs DVD, ...

Périphériques pour lesquels la communication se fait octets par octets

Périphériques pour lesquels la communication se fait par blocs d’octets

Page 19: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Création / édition d’un fichier

• Créer un fichier : touch nom_fic <CR>

• Afficher le contenu d’un fichier :

• cat nom_fic <CR>

• more nom_fic <CR>

• Editer un fichier : vi nom_fic <CR> D

C I

<Escape><i>

<:>

<wq>

<q!>

Mode déplacement

Mode insertionMode commande

Page 20: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Droits d’accès aux fichiers et répertoires

• Pour chaque fichier, 3 classes d’utilisateurs :

• Pour chaque classe d’utilisateur, 3 types d’accès :

• Exemples :

u g o

r w x -

user group others

read write execute none

Page 21: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Modifier les droits

• Pour modifier les droits, il faut être propriétaire du fichier:

• chmod <mode> <fichier> <CR>

opérateurs : + : ajoute un droit - : retire un droit = : droit absolu

opérandes: u : droits du propriétaire g : droits du groupe du propriétaire o : droits des autres utilisateurs a : droits de tous les utilisateurs

• Exemples :

chmod u+rw toto.txt chmod o-rwx toto.txt chmod a+r toto.txt chmod go=r toto.txt

Page 22: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Redirections

• Une commande unix :

• lit ses données sur le fichier d’entrée standard (le clavier)

• écrit ses résultats sur le fichier standard de sortie (l’écran)

• écrit ses erreurs sur le fichier standard d’erreur (l’écran)

• A chaque fichier standard correspond un descripteur (ou numéro) :

• Les entrées/sorties standard peuvent être redirigées :

0 : stdinput 1 : stdoutput 2 : stderror

cat toto.txt > fichier.txt ls >> fichier.txt ls 2> messages.txt mail [email protected] < fichier.txt

Page 23: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Tubes (Pipes)

• Système d’échange d’informations entre deux commandes exécutées en parallèle

• Exemple :

• cat toto.txt | more <CR>

• ls | grep ‘toto’ <CR>

cat more

Lignes du fichier

fichier «toto.txt» Affichage page par page

Page 24: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Commande grep

• Recherche les occurrences d’une chaîne de caractères

• grep [option] <critere> [fichier (s)] <CR>

• Exemple :

• ls > ls.txt <CR>

• grep ‘toto’ ls.txt <CR>

• ls | grep ‘toto’ <CR>

• grep ‘^#’ toto.txt <CR> Rechercher toutes les lignes qui commencent par #

<critere> : [...] un intervalle de caractères [^...] complément de l’intervalle indiqué . n’importe quel caractère * répétition du caractère précédent ^ en début de ligne pour la recherche $ en fin de ligne pour la recherche

Page 25: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Fichiers: Appels systèmes de base

• Unix fournit deux ensembles de fonctions d’entrées/sorties

• Les appels système

• La bibliothèque d’entrées/sorties standard (printf, scanf, fprintf, fscanf...)

• Primitives réalisées directement par le noyau • Manipulation directe des fichiers • Entrées/sorties de données non typées

• Entrées/sorties «haut niveau» • Conversions de données

Page 26: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Exemple: CopieFichier.c

Page 27: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Descripteurs de fichiers• Les descripteurs sont de simples entiers alloués lors de l’ouverture d’un

fichier et désalloués lors de sa fermeture.

• Pour le noyau, ils représentent des entrées dans une table de descripteurs contenant les informations de contrôle.

• Trois descripteurs ont une signification particulière :

• Le descripteur 0 : entrée standard

• Le descripteur 1 : sortie standard

• Le descripteur 2 : sortie d’erreur

• Exemple : char buffer[1024];write(0, (void*)buffer, 1024);

printf(buffer);?

Page 28: Programmation système et réseau sous unix · Programmation système et réseau sous unix Bruno GAS ... • M1 I4 -> Détail des UEs -> Programmation système sous Linux -> Intranet.

Le buffer cache

• Lors d’une écriture dans un fichier, les données sont d’abord écrites dans des tampons mémoire, via le buffer cache, puis sauvegardées régulièrement sur le disque par le processus update.

• Les processus ne sont pas stoppés pendant l’écriture (gestion asynchrone)

• Accès concurrent optimisé

Buffer cache

programmeDisquee/s

update

autre programme option O_SYNC fonction int sync (void)