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

Post on 04-Aug-2020

9 views 0 download

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

Programmation système et réseau sous unix

Bruno GAS

Orientation IRSI - 2016/2017

Organisation de l’UEEncadrement:• Responsable UE: Bruno Gas (bruno.gas@upmc.fr)• 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.

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

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

Plan du cours

• Unix - utilisation / fichiers

• Création et synchronisation de processus

• Communication par signaux et tubes

• Programmation réseau

• Threads

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/

Pourquoi unix ?

• Le prix

• Disponibilité des sources

• Intelligence des solutions mises en oeuvre

• Système simple et ouvert

• Grande ressource bibliographique

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

• ...

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)

Source: wikipedia

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

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

Architecture du noyau

Structure en éléments

disjoints et programmables

de façon disjointe

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

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

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.

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

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

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

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

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

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 nom@upmc.fr < fichier.txt

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

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

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

Exemple: CopieFichier.c

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);?

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)