La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

C. Crochepeyre Cnam - DiapasonUnix: éléments de base1 ÉLÉMENTS DE BASE UNIX.

Présentations similaires


Présentation au sujet: "C. Crochepeyre Cnam - DiapasonUnix: éléments de base1 ÉLÉMENTS DE BASE UNIX."— Transcription de la présentation:

1 C. Crochepeyre Cnam - DiapasonUnix: éléments de base1 ÉLÉMENTS DE BASE UNIX

2 C. Crochepeyre Cnam - DiapasonUnix: éléments de base2 1. PRESENTATION UNIX Avant-propos –Unix système dexploitation –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

3 C. Crochepeyre Cnam - DiapasonUnix: éléments de base3 Interface programme C Commande Unix sous Shell et main() % prog a b c main(argc, argv, anvp) Paramètres dappel –à lexécution de main(argc, argv, envp) on récupère argc: le nombre de paramètres du 2ème paramètre argv: adresse dun tableau dadresses de chaînes de caractères sous Unix la première chaîne est le nom du programme (prog) envp: adresse dun tableau dadresses de chaînes de caractères donnant les valeurs des variables Shell

4 C. Crochepeyre Cnam - DiapasonUnix: éléments de base4 Exemple dappel: –% prog par1 par2 par3 par4 avec variables denvironnement: 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

5 C. Crochepeyre Cnam - DiapasonUnix: éléments de base5 Interface main(argc, argv,envp) int argc; char **argv, **envp; argc: nombre déléments du tableau dadresses pointé par argv argv: pointe sur le tableau qui contient les adresses des paramètres dappel envp: pointe sur le tableau qui contient les adresses des variables denvironnement

6 C. Crochepeyre Cnam - DiapasonUnix: éléments de base6 Exemple de programme C –affichage des paramètres dappel du programme lui-même main(argc, argv, envp) int argc; char **argv, **envp; { int k; for(k=0;k

7 C. Crochepeyre Cnam - DiapasonUnix: éléments de base7 La variable denvironnment Unix: environ –la variable environsous Unix est un pointeur sur un tableau de pointeurs vers les chaînes de caractères des variables denvironnement –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);}

8 C. Crochepeyre Cnam - DiapasonUnix: éléments de base8 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: dautres moyens pour la communication entre processus tournant sur des machines différentes (sockets)

9 C. Crochepeyre Cnam - DiapasonUnix: éléments de base9 Les signaux –plusieurs processus se partagent: la mémoire le processeur –quelques utilisations dun signal cas 1: –demande dE/S occupée => processus endormi jusquà E/S libérée –Unix envoie un signal à tous les processus prêts cas 2: –déconnexion dun terminal –tous les processus en cours recoivent un signal SIGHUP et sarrêtent cas 3: –fin dun processus fils par exit() –un signal SIGCHLD est envoyé au père qui est en attente wait()

10 C. Crochepeyre Cnam - DiapasonUnix: éléments de base10 Quest-ce quun signal? –interruption dun processus –fonctions utiles traitement à effectuer attente du signal envoi du signal signal attente traitement

11 C. Crochepeyre Cnam - DiapasonUnix: éléments de base11 LES TUBES OU PIPE –Types: tube anonyme tube nommé –Moyen de communication entre deux processus sexécutant sur une même machine –Fichiers particuliers (SGF) –Géré par le noyau –File de données (FIFO) –Lectures destructrices

12 C. Crochepeyre Cnam - DiapasonUnix: éléments de base12 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 louverture du tube (fichier) exec(): passage des descripteurs en paramètres

13 C. Crochepeyre Cnam - DiapasonUnix: éléments de base13 méthdeo_d e _ Le processus A dépose Le processus B lit Le processus A lit Le processus B dépose

14 C. Crochepeyre Cnam - DiapasonUnix: éléments de base14 filiation P1 F1F2 F3 P2 F1 TUBE création

15 C. Crochepeyre Cnam - DiapasonUnix: éléments de base15 –CARACTÉRISTIQUES Louverture 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 –code erreur = 0 –processus bloqué jusquà lecture de données

16 C. Crochepeyre Cnam - DiapasonUnix: éléments de base16 TUBE Ecriture E Lecture L Processus A Processus B –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 Synchronisation

17 C. Crochepeyre Cnam - DiapasonUnix: éléments de base17 TUBE 1 L - E Processus A Processus B Modèle Q/R TUBE 2 L - E Fermeture des descripteurs inutiles

18 C. Crochepeyre Cnam - DiapasonUnix: éléments de base18 –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 douverture dun fichier classique

19 C. Crochepeyre Cnam - DiapasonUnix: éléments de base19 –FONCTIONS SGF read(dl, buf, nb) dl: n° descripteur lecture buf : zone de réception des octets nb : nombre doctets à lire write(de, buf, nb) de: n° du descripteur écriture buf: zone démission des octets nb: nombre doctets à é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

20 C. Crochepeyre Cnam - DiapasonUnix: éléments de base20 TUBE NOMMÉ –Caractéristiques communes aux tubes anonymes: communication entre processus sexé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

21 C. Crochepeyre Cnam - DiapasonUnix: éléments de base21 TUBE écriture lecture Processus A Processus B écriture lecture echange open(échange)

22 C. Crochepeyre Cnam - DiapasonUnix: éléments de base22 –FONCTION CRÉATION SGF mknod (nom_du_fichier, accès+S_IFIFO) mkfifo (nom_fichier, accès) utilisation de la fonction de création dun i-node particulier spécifier un nom de fichier donner les droits daccès création dun fichier fonctionnant en mode FIFO

23 C. Crochepeyre Cnam - DiapasonUnix: éléments de base23 –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 modeO_RDONLY O_NDELAY sinon ouverture sans attente processus bloqué jusquà ouverture en écriture par un autre processus O_WRONLY ouverture avec retour code erreur si aucune ouverture en lecture processus bloqué jusquà ouverture en lecture par un autre processus

24 C. Crochepeyre Cnam - DiapasonUnix: éléments de base24 –FONCTIONS LECTURE / ÉCRITURE SGF read(desc, buf, nb) lecture dans le tube si O_DELAY à louverture –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 si O_DELAY à louverture –retour code erreur si tube plein sinon –processus bloqué si tube plein, attente tube suffisamment vide pour écrire

25 C. Crochepeyre Cnam - DiapasonUnix: éléments de base25 –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


Télécharger ppt "C. Crochepeyre Cnam - DiapasonUnix: éléments de base1 ÉLÉMENTS DE BASE UNIX."

Présentations similaires


Annonces Google