ÉLÉMENTS DE BASE UNIX.

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

Stockage de données.
Synchronisation des processus père - fils
GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)
Introduction aux Systèmes d’Exploitation
Gestion de FICHIERS.
C.
Mémoire & Processus Cours SE - SRC
13 – 16 Décembre 2005 Laurence Viry Introduction à MPI MPI_2.
Objectifs Présentation et utilisation du langage PERL
Suite à de nombreuses remarques concernant le projet de structures de données 'Gestion d'un Aéroport' , voici un polycopié de cours concernant la gestion.
FLSI602 Génie Informatique et Réseaux
Systèmes d’exploitation
Système d’exploitation : Assembleur
Système d’Exploitation
Systèmes d'exploitations Les redirections d'entrées/sorties GRARI Mounir ESTO Année 2011.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Récursivité.
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
Labview Programmation réseau Communication par sockets
Système d’exploitation
PROGRAMMATION SCIENTIFIQUE EN C PRO Généralités u Présentation du plan de cours –Disponibilité –Références u Environnement de travail –Langage C.
Segments de mémoire partagée
Course Critique Race Condition
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les fichiers binaires en C++
FICHIERS : Définition : Algorithme général:
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie II 2014.
SYSTÈME D’EXPLOITATION I
UNIX COMMUNICATION INTERNE ENTRE PROCESSUS
UNIX: Système de Gestion de Fichiers
Manipulation des fichiers dans le langage VB
Signaux – Tubes La gestion des signaux La communication par tube
Plan cours La notion de pointeur et d’adresse mémoire.
Les fichiers texte en C++
La librairie assert.h.
Jean-Michel ILIE - novembre SIL - module M12 Programmation Internet en PHP SIL module M12 Jean-Michel Ilié IUT Paris 5 - département informatique.
Le langage C Rappel Pointeurs & Allocation de mémoire.
VAL3 Ethernet - Sockets A partir VAL 3 Version 4.x.
Les processus, à quoi ça sert ?
PHP 3° PARTIE : GESTION DE FICHIERS ET DE REPERTOIRES
La notion de type revisitée en POO
Argc et argv Utilisation des paramètres de la ligne de commande.
Labo 4 : Les structures et les entrées et sorties
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Programmation Système et Réseau
Les sockets.
ISBN Chapitre 10 L'implémentation des sous- programmes.
8PRO100 Éléments de programmation Les pointeurs de caractères.
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Les fichiers 1ère partie
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Patricia Renault UPMC 2005/2006
Système de gestion fichiers
Architecture Client/Serveur
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Les Processus.
1 PHP 5 Notions fondamentales (niveau 1 cours #3) Formation continue – Cégep de Sainte-Foy François G Couillard.
Chapitre 9 Les caractères.
Plan… -Introduction et motivations : -Qu'est-ce que le traitement de fichiers ? -Terminologie et définitions fondamentales des structures de fichiers :
Client/Server Socket. Client/Serveur.
Abes agence bibliographique de l’enseignement supérieur Les scripts.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Informatique 2A Langage C 4ème séance
1 UNIX AVANCE Yves PAGNOTTE – Janvier – COMMUNICATION INTER PROCESSUS : TUBES.
Accès aux fichiers en C.
Transcription de la présentation:

ÉLÉMENTS DE BASE UNIX

1. PRESENTATION UNIX Avant-propos Plusieurs versions Unix système d’exploitation développé aux laboratoires Bell en 1969 1ère version commercialisée en 1978 écrit en langage C pour la portabilité du système Plusieurs versions

Commande Unix sous Shell et main() Interface programme C Commande Unix sous Shell et main() % prog a b c main(argc, argv, anvp) Paramètres d’appel à l’exécution de main(argc, argv, envp) on récupère argc: le nombre de paramètres du 2ème paramètre argv: adresse d’un tableau d’adresses de chaînes de caractères sous Unix la première chaîne est le nom du programme (“prog”) envp: adresse d’un tableau d’adresses de chaînes de caractères donnant les valeurs des variables Shell

Exemple d’appel: % prog par1 par2 par3 par4 avec variables d’environnement: TERM = vt100 HOME=/usr/moi La commande est composée de 5 paramètres main(argc, argv, envp) après exécution argc= 5 argv= adresse tableau contenant “prog” “par1” “par2” “par3” “par4” envp= adresse tableau contenant “TERM=vt100” ”HOME=/usr/moi”

Interface main(argc, argv,envp) int argc; char **argv, **envp; argc: nombre d’éléments du tableau d’adresses pointé par argv argv: pointe sur le tableau qui contient les adresses des paramètres d’appel envp: pointe sur le tableau qui contient les adresses des variables d’environnement

Exemple de programme C affichage des paramètres d’appel du programme lui-même main(argc, argv, envp) int argc; char **argv, **envp; { int k; for(k=0;k<argc;++k) { printf(“paramètres %d: %\n”,k+1,argv[k]); argv[k]; } for(k=0;;++k) { { if(envp[k][0]) printf(“environnement %d: %\n”,k+1,envp[k]); else break;} } exit(0);}

La variable d’environnment Unix: environ la variable ‘environ’sous Unix est un pointeur sur un tableau de pointeurs vers les chaînes de caractères des variables d’environnement exemple: extern char **environ; main() { int k; for(k=0;;++k) { if(environ[k][0]) printf(“environnement %d: %\n”,k+1,environ[k]); else break; } exit(0);}

Les moyens de communications internes Généralités Communications internes: entre processus sur une même machine: exec() fichiers moyens de communications Unix signaux tubes IPCs: file de messages mémoire partagée sémaphores Communications externes: d’autres moyens pour la communication entre processus tournant sur des machines différentes (sockets)

Les signaux plusieurs processus se partagent: la mémoire le processeur quelques utilisations d’un signal cas 1: demande d’E/S occupée => processus endormi jusqu’à E/S libérée Unix envoie un signal à tous les processus prêts cas 2: déconnexion d’un terminal tous les processus en cours recoivent un signal SIGHUP et s’arrêtent cas 3: fin d’un processus fils par exit() un signal SIGCHLD est envoyé au père qui est en attente wait()

Qu’est-ce qu’un signal? interruption d’un processus fonctions utiles traitement à effectuer attente du signal envoi du signal attente traitement signal

LES TUBES OU PIPE Types: tube anonyme tube nommé Moyen de communication entre deux processus s’exécutant sur une même machine Fichiers particuliers (SGF) Géré par le noyau File de données (FIFO) Lectures destructrices

TUBE ANONYME Structure sans nom Communication entre deux processus Deux descripteurs: lecture et écriture Deux pointeurs automatiques: lecture et écriture pointeur de lecture sur le 1er caratère non lu pointeur d’écriture sur le 1er emplacement vide Processus de même filiation Principe: pipe(): création du tube par le père fork(): création du processus fils héritage de l’ouverture du tube (fichier) exec(): passage des descripteurs en paramètres

Le processus A dépose Le processus B lit _ e d _ e d o h t é m Le processus B dépose Le processus A lit

filiation TUBE création P1 F1 F2 P2 F3 F1

L’ouverture du tube se fait par pipe() et non open() lseek() interdit CARACTÉRISTIQUES L’ouverture du tube se fait par pipe() et non open() lseek() interdit taille limitée descripteurs de lecture fermés et tentative d’écriture signal SIGPIPE arrêt du processus lectures multiples: le 1er qui lit récupère les données tube vide et lecture ou nombre de données > existantes code erreur = 0 processus bloqué jusqu’à dépôt de données tube plein et écriture processus bloqué jusqu’à lecture de données

Synchronisation Ecriture E Ecriture E Lecture L Lecture L SI Processus A TUBE Processus B Lecture L Lecture L PA transmet à PB ou PB transmet à PA SI PA dépose et PA lit => PB bloqué PA dépose, PB dépose et PB lit => risque que B lise sa propre donnée

Fermeture des descripteurs inutiles Modèle Q/R L - E L - E TUBE 1 Processus B Processus A TUBE 2 L - E L - E Fermeture des descripteurs inutiles

FONCTION TUBE pipe(tab) crée un tube retourne les n° des deux descripteurs dans un tableau ‘tab’ tab[0]: n° du descripteur de lecture: dl tab[1]: n° du descripteur d’écriture: de remplit la fonction d’ouverture d’un fichier classique

FONCTIONS SGF read(dl, buf, nb) dl: n° descripteur lecture buf : zone de réception des octets nb : nombre d’octets à lire write(de, buf, nb) de: n° du descripteur écriture buf: zone d’émission des octets nb: nombre d’octets à écrire close(dl) et close(de) fermeture des descripteurs fermeture des descripteurs automatique si processus terminé suppression du tube si fermeture de tous les descripteurs

TUBE NOMMÉ Caractéristiques communes aux tubes anonymes: communication entre processus s’exécutant sur une même machine fichier particulier file de messages pointeurs gérés automatiquement: lseek() inutilisable Différence: fichier portant un nom filiation non nécessaire création par la fonction SGF mknod() ouverture par open() un seul descripteur par ouverture de tube fichier persistant

écriture écriture lecture lecture Processus A Processus B open(“échange”) TUBE open(“échange”) “echange” lecture lecture

FONCTION CRÉATION SGF mknod (nom_du_fichier, accès+S_IFIFO) mkfifo (nom_fichier, accès) utilisation de la fonction de création d’un i-node particulier spécifier un nom de fichier donner les droits d’accès création d’un fichier fonctionnant en mode FIFO

FONCTION OUVERTURE SGF open(nom_du_fichier, mode) ouverture en lecture si mode = O_RDONLY ouverture en écriture si mode = O_WRONLY ouverture en maj si mode = O_RDWR ouverture bloquante / non bloquante mode O_RDONLY O_WRONLY ouverture avec retour code erreur si aucune ouverture en lecture ouverture sans attente O_NDELAY processus bloqué jusqu’à ouverture en écriture par un autre processus processus bloqué jusqu’à ouverture en lecture par un autre processus sinon

FONCTIONS LECTURE / ÉCRITURE SGF read(desc, buf, nb) lecture dans le tube si O_DELAY à l’ouverture retour code erreur si lecture dans un tube vide sinon processus bloqué si tube vide, attente suffisamment de données à lire write(desc, buf, nb) écriture dans le tube retour code erreur si tube plein processus bloqué si tube plein, attente tube suffisamment vide pour écrire

FONCTIONS FERMETURE / DESTRUCTION SGF close() fermeture du fichier fermeture du descripteur du fichier ouvert dans chacun des processus unlink() destruction du fichier ou rm commande shell de destruction du fichier