Systèmes d Exploitation

Dimension: px
Commencer à balayer dès la page:

Download "Systèmes d Exploitation"

Transcription

1 Systèmes d Exploitation chapitre 12 Introduction aux systèmes répartis Plan Introduction Modélisation F. Moal 2012/2013 Source : cours E-mi@ge, G.M. Cochard 2 1

2 Introduction Un système informatique = ensemble de composants matériels et logiciels communicants Réalisation suivant deux techniques : Introduction un système réparti = un ensemble d ordinateurs ( de toutes tailles, marques,...) répartis géographiquement dans des lieux différents et reliés entre eux par un réseau de communication les systèmes à parallélisme fortement couplé Une tâche est décomposée en sous-tâches élémentaires synchronisées au sein d une même machine : pipe line, SIMD, MIMD les systèmes à parallélisme faiblement couplé Les tâches sont distribuées à des unités spécialisées avec une coordination assurée à un niveau supérieur : systèmes répartis ou distribués, réseaux de machines 3 Les systèmes distribués d actualité : demande de systèmes OUVERTS, INTERCONNECTABLES, DISTRIBUES La création de l OSF (Open Software Foundation), en 1988 (Bull, DEC, Hitachi, HP, IBM, Philips, Siemens,...) 4 2

3 Introduction Introduction les systèmes répartis posent un nombre non négligeable de problèmes : synchronisation des processus incertitudes spatiales et temporelles accès cohérents aux ressources ordonnancement d évènements terminaison d un travail fiabilité gestion des processus fichiers, bases de données, transactions objets raisonnement et intelligence artificielle protocoles et appels de procédures... 5 Synchronisation de processus Exemple d un parking de N places (ressources) destinées à accueillir des automobiles (processus) en compétition pour se garer. synchronisation nécessaire : une voiture ne peut se garer que si il existe une place. Simple si centralisé : sémaphore / un compteur dans un moniteur Si réparti (plusieurs entrées et sorties dans le parking)?? 6 3

4 Introduction Incertitudes spatiales et temporelles Les délais de transmission d un message entre deux ordinateurs d un réseau sont non négligeables. Les conséquences immédiates sont : Introduction l événement e1 intervient de manière absolue avant e2. ces événements sont perçus différemment par les sites : le site 1 voit e2 se produire avant e1 tandis que le site 4 voit e1 se produire avant e2 à un instant donné, sur un site donné, on ne connaît que de façon approchée l état d un système 2 événements du système réparti peuvent être perçus dans un ordre différent par deux sites distincts 7 8 4

5 Introduction Accès cohérent à une ressource Introduction Ordonnancement d événements exemple du parking à N places comportant plusieurs accès 1, 2,..., n La solution précédente engendre des problèmes nouveaux : l ordre d arrivée des automobiles aux accès ne correspond pas à l ordre d entrée dans le parking ( le premier arrivé n est pas nécessairement le premier à entrer à cause de l attente du message) il se peut que le compteur = 0 chaque fois que le message passe à l accès n i ; il s ensuit donc une attente indéfinie pour les automobiles qui veulent entrer

6 Introduction Introduction Pour un système centralisé, la solution au premier problème est la file d attente unique et u ordre défini sur la base d une horloge unique locale Pour un système réparti, il existe des files d attente multiples en général ; il n y a pas d horloge unique, mais au contraire plusieurs horloges non synchrones. On est donc confronté au problème de la construction d un ordre global strict Terminaison Comment peut-on être sûr qu un système réparti a terminé son travail? Il ne suffit pas de constater que les processus sont inactifs car des messages en transit peuvent les réactiver à tout moment!

7 Introduction Introduction Exemple : Algorithme de la casquette (Dijkstra 1983) : Des employés de bureau travaillent dans les bureaux dans un immeuble qu un gardien est chargé de fermer après le travail. Les règles sont les suivantes : il n y a qu un employé par bureau quand un employé entre dans un bureau il allume la lumière un employé quitte un bureau soit pour rentrer chez lui, soit pour aller dans un autre bureau. un employé qui quitte un bureau pour aller dans un autre bureau laisse le premier bureau allumé et allume la lumière dans le second (si ce n est déjà fait) un employé qui quitte un bureau pour rentrer chez lui éteint la lumière le travail est terminé quand tous les employés sont rentrés chez eux 13 L algorithme fonctionne comme suit : 1) Chaque bureau est numéroté de 1 à n et le gardien visite les bureaux toujours dans l ordre 1,...n. Le gardien est muni d une casquette et il commence toujours sa ronde avec la casquette sur la tête. 2) Si le gardien visite un bureau occupé, il reste dans ce bureau jusqu à ce que l agent sorte. 3) Chaque fois que le gardien quitte un bureau allumé, il l éteint et met sa casquette sous son bras. 4) Si le contrôleur revient à son point de départ avec sa casquette sur la tête, il peut fermer l immeuble : le travail est terminé. 14 7

8 Les motivations qui ont conduit au développement des systèmes répartis sont : assurer la communication entre applications existantes adapter la structure des systèmes à celle des applications fournir des services interactifs à coût raisonnable augmenter la disponibilité des systèmes réduire les temps de traitement partager des ressources entre plusieurs utilisateurs Un système réparti possède de manière générale les caractéristiques suivantes : ensemble d éléments de traitement (UC) reliés par un réseau de communication permettant l échange d information un élément en panne ne met pas en panne les autres éléments plusieurs éléments ont une connaissance commune et partielle de l état du système faciliter l évolutivité

9 une situation " simple " : l accès à un fichier distant Solution 1 : transfert par FTP principe : construction sur la machine A d une copie locale du fichier. Nécessité de connaître le nom du fichier distant et l identité de la machine B critique : création de deux versions du fichier ; après manipulation, on aura deux versions incohérentes. Pour prendre en compte les modifications apportées par A, il faut recopier le fichier sur B. procédé très lourd si on veut modifier seulement un octet difficulté de maintien de la cohérence en cas d utilisation simultanée par plusieurs usagers formule intéressante pour la distribution de logiciels

10 Solution 2 : Accès à distance, désignation explicite : UU principe : Unix United permet l accès à des fichiers distants sur des systèmes sous Unix en réseau local. Adjonction d une super racine /../ exemple :copie de prog dans gedeon de machin : cp prog /../machine2/gedeon réalisation : Ajout d une couche de connexion entre le noyau Unix résident et le " reste " (programmes utilisateurs + système non résident) : Newcastle Connexion

11 critique : accès direct au fichier l utilisateur doit connaître explicitement la localisation du fichier gestion complexe des droits d accès (sur chaque machine) Solution 3 : Accès à distance, désignation transparente principe : Emploi de NFS (Network File System) : création de lien entre un " point de montage " sur une machine i et un catalogue situé sur une machine j :

12 réalisation : emploi de v-nodes pour désigner les fichiers : critique : client en panne : pas grave ; serveur en panne : grave emploi de caches client et serveur pour réduire les temps d accès. Plusieurs clients entraînent des risques d incohérence (mais solutions par divers algorithmes). important : le serveur ne garde aucune indication sur les accès aux fichiers (c est à la charge du client)

13 Ces trois solutions permettent de mettre en évidence les problèmes suivants : désignation des entités, transparence pour l utilisateur synchronisation des activités, ordre des événements gestion de l information répartie, cohérence tolérance aux pannes Synchronisation Le problème de base est l ordonnancement des événements : quand peut -on dire qu un événement s est produit avant un autre? Précédence causale Les conditions de précédence causale évoquées précédemment peuvent se reformuler de la manière suivante : Un événement a précède directement un événement b si et seulement si C1) a et b ont lieu sur le même site et a est antérieur à b C2) a est l émission d un message et b est la réception de ce message

14 Avec la fermeture transitive, on obtient la relation " précède ", notée ci-dessous " ". Si a précède b et si b précède c alors a précède c. Deux événements a et b sont dits concurrents si on n a ni a b, ni b a. On notera donc que la relation " précède " est un ordre partiel puisqu elle ne permet pas de classer deux événements quelconques. Ordonnancement par estampillage Cet ordonnancement utilise des horloges logiques. Chaque site Si est muni d un compteur Hi à valeurs entières initialisé à 0. Ce compteur est une horloge logique. Lorsqu un événement a se produit sur le site Si, on incrémente Hi et la date de a est la valeur du compteur Hi(a) Tout message m émis par le site Si porte une estampille E(m) qui est la date d émission au sens précédent. Tout message m reçu par le site Sj correspond à un événement qui modifie l horloge logique Hj de la manière suivante : Hj=Max(Hj, E(m))

15 Cette méthode permet de dater les événements mais ne procure pas un ordre strict car des événements se produisant sur des sites distincts peuvent avoir la même date. On peut cependant, d une manière artificielle, définir un ordre strict en numérotant de manière unique les sites. La date d un événement sera alors le couple (numéro de site, date Hi). On notera cette relation d ordre par " Þ " : a Þ b ssi [Hi(a)<Hj(b) ou (Hi(a)=Hj(b) et i<j)]

16 Horloges vectorielles Avec la méthode précédente, a Þ b implique en fait que soit a b (précédence causale), soit a et b sont concurrents. L inconvénient est que l ordre Þ masque la précédence causale. Une solution à ce problème a été donnée en 1988 : les horloges vectorielles Une horloge vectorielle Vi[1...n] est un vecteur défini pour chaque site Si. Ce vecteur est initialisé à 0. Quand un événement se produit sur le site Si, alors Vi[i] = Vi[i] + 1. A l émission d un message sur le site Si, celui-ci est estampillé par l horloge vectorielle Vi, date de l émission du message sur le site de départ (horloge vectorielle). La réception du message m par un site Sj est un événement qui est daté par : Vj[k] = Max(Vj[k],Vi[k]) k=1,...,n où Vi est l estampille du message

17 Le passé d un événement a est l ensemble des événements qui précèdent causalement a et a lui-même a étant daté par l horloge vectorielle Va, Va[j] est le nombre d événements du passé de a sur le site Sj. Σj Va[j] est le nombre total d événements du passé de a Entre les dates définies par les horloges vectorielles, on peut définir un ordre partiel : (,, ) V W ssi pour tout j V[j] W[j] V W ssi pour tout j V[j] W[j] V W ssi (V W) et (V W) dont on déduit la propriété fondamentale : a b Û Va < Vb a,b concurrents Û Va ê ê Vb

18 Aperçus sur les algorithmes distribués de base. Aperçus sur les algorithmes distribués de base. Les algorithmes distribués oscillent entre deux catégories très distinctes : la centralisation totale Un noeud C du réseau est désigné comme noeud de contrôle unique. Si un noeud quelconque X veut accéder à un objet partagé, X envoie un message REQUEST à C. Quand l objet est disponible, le noeud C envoie un message REPLY au noeud X. Seul, le noeud C prend les décisions et toute l information disponible est concentrée en C la décentralisation totale Tous les noeuds du réseau ont le même " volume " d information ; tous les noeuds prennent des décisions basées sur l information connue localement ; tous les noeuds portent une responsabilité égale ; tous les noeuds dépensent la même " quantité " d efforts pour aboutir à une décision intéressant la communauté des noeuds ; la défaillance d un noeud n implique pas la paralysie totale du système

19 Bien entendu, ces deux catégories sont extrêmes et les algorithmes distribués se placent dans des catégories intermédiaires. A partir de 1978, de nombreuses propositions d algorithmes ont été publiées (Lamport 1978, Thomas 1979, Gifford 1979, Ricart et Agrawala 1981, Maekawa 1985,...) Les points communs (hypothèses)à tous ces algorithmes sont principalement les suivants : un système distribué est considéré comme un ensemble de N noeuds numérotés de 1 à N. Chaque noeud héberge un processus qui demande l accès exclusif à une ressource du réseau. Cette requête est communiquée à d autres processus. les messages envoyés par un processus à un autre arrivent dans l ordre de leur envoi (propriété pipeline) chaque message arrive à destination après un intervalle de temps fini ; le réseau est supposé maillé complètement (logiquement) : chaque processus peut envoyer directement un message à n importe lequel des processus

20 Autres algorithmes distribués élection Dans certains systèmes, un processus est " élu " pour effectuer certaines tâches, par exemple régénérer un jeton dans un anneau à jeton. cet exemple peut être généralisé l anneau physique devient alors un anneau logique : les différents noeuds numérotés de 1 à N => anneau Exemple : un algorithme d élection dû à Chang (1979) qui est basé sur une technique de filtrage sur un anneau ( on laisse passer ou on ne laisse pas passer) En cas d élection chaque processus transmet sur l anneau un message de candidature portant son numéro. A la réception du message k par le processus Pi, si k<i, le message est stoppé, si k>i, le message est retransmis au noeud suivant

21 procédures du site i : terminaison détection de la perte du jeton : candidat := true; envoyer_suivant(élection,i); réception du message (élection,k) select k > i : envoyer_suivant(élection,k); k < i : if candidat:=false then candidat :=true; envoyer_suivant(élection,i); end; k = i : régénérer_jeton /* le site i a été élu */ end; Un algorithme de terminaison permet de détecter la fin d un travail réparti, c est à dire quand tous les processus sont terminés aucun message n est en transit

22 Tjrs en anneau virtuel. Sur cet anneau les messages ne peuvent se doubler et un message peut successivement visiter tous les sites. Un message spécial appelé jeton circulant sur cet anneau et passant deux fois au même site est considéré comme ayant fait le tour de tous les sites. Si chaque site a été visité deux fois par le jeton et qu il est resté passif entre deux passages, la terminaison est alors détectée. L algorithme de Misra (1983) : un jeton est utilisé qui n est autre qu un compteur augmentant de 1 à chaque passage de noeud

23 Modélisation des systèmes répartis procédures d un site : début d un traitement (réception de message) état := actif; couleur := noir; /* couleur de l activité d un site */ fin d un traitement état:= passif; if jeton_present then couleur := blanc /* couleur de l inactivité d un site */ envoyer_jeton(1); jeton_present:=false; end; réception du jeton(j) if état :=actif then /* site actif */ jeton_present :=true; else if j=n and couleur=blanc then /* site non actif */ terminaison_détectée; else if couleur=blanc then envoyer_jeton(j+1); else couleur:=blanc; envoyer_jeton(1); end; end; end; 45 Modèle client serveur Le client est le noeud A qui demande un service, le serveur est le noeud B qui réalise le service. Généralement A et B sont des noeuds (machines) différentes mais évidemment reliés par un réseau de communication En général, les serveurs sont dédiés à un groupe de tâches à fonctionnalités voisines: serveur de noms, serveur de fichiers, serveur d impression,

24 Modélisation des systèmes répartis Du côté serveur, le message de requête de procédure peut être accueilli par un processus serveur cyclique : processus serveur : répéter indéfiniment recevoir(client, message); extraire(message, service_id, paramètres); selon service_id... id : début effectuer_service[id](parametres,resultats); envoyer(client, resultats); fin;... fin; fin; 47 Modélisation des systèmes répartis La solution précédente ne permet de servir qu un client à la fois. Pour servir simultanément plusieurs clients, il faut une famille de processus serveurs fonctionnant suivant le schéma suivant : un processus veilleur reçoit une demande et active un processus exécutant. Ce dernier peut être choisi dans un pool fixe ou créé dynamiquement

25 Modélisation des systèmes répartis Implémentations La solution précédente ne permet de servir qu un client à la fois. Pour servir simultanément plusieurs clients, il faut une famille de processus serveurs fonctionnant suivant le schéma suivant : un processus veilleur reçoit une demande et active un processus exécutant. Ce dernier peut être choisi dans un pool fixe ou créé dynamiquement. Plusieurs niveaux : - Sockets - RPC - RMI - Architecture implicitement réparties (JEE)

26 Implémentations: sockets Implémentations: sockets Socket en Java, rappels! public class Serveur { public static final int PORT = 4567; - Un serveur qui écoute et lance des threads - Un Service par client connecté (thread) - Plusieurs clients public static void main(string[] args) throws IOException{ ServerSocket socketserveur = new ServerSocket(PORT); // boucle infinie d'attente de connection while (true) { // accepte une connection d'un client et retourne un socket sur ce client. Socket traitesocket = socketserveur.accept(); System.out.println("Connection au serveur depuis : " + traitesocket.getinetaddress().gethostaddress()); // démarre un nouveau thread pour s'occuper du client Service traitement = new Service(traiteSocket); new Thread(traitement).start(); // fermeture du socket socketserveur.close();

27 Implémentations: sockets Implémentations: sockets public class Service implements java.lang.runnable { // le socket connecté au client private Socket traitesocket; // le constructeur qui reçoit comme argument un socket connecté au client. public Service( Socket clisock ) { traitesocket = clisock; public void run() { try { // les flux d'entrée-sortie sur le socket BufferedReader entreedepuisclient = new BufferedReader(new InputStreamReader(traiteSocket.getInputStream())); PrintWriter sortieversclient = new PrintWriter(traiteSocket.getOutputStream(),true); // tant qu'il y à qqch à lire du socket connecté au client, traiter String demande, reponse; do { demande = entreedepuisclient.readline(); reponse = traiter(demande); sortieversclient.println(reponse); while (!demande.equals("quit")); // fermer les flux et le socket sortieversclient.close(); entreedepuisclient.close(); traitesocket.close(); catch (IOException e) { 53 public class Client { public static void main(string[] args) throws IOException { // création du socket sur le port 4567 de localhost Socket socket = new Socket(« ", 4567); PrintWriter sortieversserveur = new PrintWriter(socket.getOutputStream(),true); BufferedReader entreedepuisserveur = new BufferedReader(new InputStreamReader(socket.getInputStream())); //tant que data les écrire vers le serveur String message,reponse; do { message = ; // envoi du message au serveur sortieversserveur.println(message); reponse = entreedepuisserveur.readline(); while (!message.equals("quit")); // Fermeture des ressources sortieversserveur.close(); entreedepuisserveur.close(); socket.close(); 54 27

28 Modélisation des systèmes répartis Modélisation des systèmes répartis Appel de procédure à distance - RPC Le client envoie sa requête et reste bloqué ; la requête active le serveur qui exécute la procédure et renvoie les résultats. L arrivée de ceux-ci réactivent le client. Les problèmes généraux posés par le RPC (Remote Procedure Call) sont : la gestion de la création et de l exécution du processus serveur ( modèle client serveur) la transmission des paramètres et des résultats : communication par message mécanismes de conversion : les codes client et serveurs peuvent être de natures différentes (machines différentes) attitude à adopter en cas de défaillance du client, du serveur, du système de communication

29 Modélisation des systèmes répartis Modélisation des systèmes répartis organisation du client et du serveur pour une RPC : On constate que deux procédures locales sont utilisées : les talons (stubs). Le talon client effectue les tâches suivantes : mise en forme, pour le transport, des paramètres d appel (emballage ou marshalling) envoi d un message (identité de la procédure appelée + paramètres) blocage du processus client déblocage à l arrivée des résultats extraction des résultats et transposition ( déballage ou unmarshalling) exécution du retour de procédure

30 Modélisation des systèmes répartis Modélisation des systèmes répartis Le talon serveur effectue les tâches suivantes : Stub + skeletton : réception du message client, détermination de la procédure appelée, déballage des paramètres exécution de la procédure appelée préparation du message de retour (emballage) envoi du message de retour fin d exécution (mort du processus ou blocage d attente) 59 Méthode utilisée par RMI Ressources : Cours AAR Matthieu Exbrayat

31 RMI Petit détour historique... Pour être précis, parler de «Java RMI» Invocation distante Deux objets dialoguent naturellement, par invocation de méthode Un peu de code et des composants externes pour masquer la distance Approche proposée Des exemples de complexité croissante RMI découle de l'approche RPC RPC = Remote procedure call Accès aux services distants par un mécanismes de fonctions Interfaces développées grâce à une IDL (Interface Definition Language) Format externe de représentation des données (marshalling)

32 Suivez le guide (RPC)... Bilan historique des RPC... Standardisation, Simplicité, Portabilité, A apporté le marshalling et l IDL mais : Client Stub Skeleton Serveur Constituait un point central (risque d engorgement, de délai, de bloquage) Précompilation Nécessitait l introduction du multithreading... IDL Chez le client (pour cacher l attente) Chez le serveur (pour supporter les clients multiples) Ce qui complexifiait les applis (partage de ressources, etc.)

33 (Java) RMI Un seul langage Moins hétérogène, IDL = java, pas de marshalling... Localisation transparente On passe par un annuaire Ne se place pas tout à fait au même niveau que les RPC! Offre l'appel de méthodes, de manière (assez) transparente, vers des objets de localisation quelconque... Niveau 0 : dialogue local package hello; public class Hello { public void hello(){ System.out.println("hello"); package hello; public class Call { public static void main(string[] args){ Hello h=new Hello(); h.hello(); 65 Et maintenant, en route! 66 33

34 Niveau 1 : RMI en local Niveau 1 Schématiquement Recherche Call RMI registry 3. Référence 4. Invocation 1. Enregistrement Hello Vu de plus près... L'appelant ne connaît pas la classe appelée Il connaît une interface (c'est à dire un type de service) et une adresse (un nom associé à ce service) Il connait l'adresse du RMI registry L'appelé est invocable à distance : il implémente l'interface on lui associe un proxy (stub : client + skeletton : serveur) il se déclare auprès du RMI registry (sous le nom connu par l'appelant)

35 Niveau 1 Niveau 1 : Mise en oeuvre Vu de près Recherche Hello RMI registry 3. Référence + stub 1. Enregistrement Hello Ecrire l'interface + les deux classes (<java5) Compiler le stub : rmic classe Lancer le registry (pour l'instant, à partir de la racine des classes serveur) Lancer la classe serveur (enregistrement) Lancer la classe client Call 4.1. Invoc. locale HelloStub 4. Invocation distante *HelloSkel* HelloImpl 4.3. Invoc. locale

36 Interface + serveur (<=java5) Lanceur (<java5) 71 package hello; public interface Hello extends java.rmi.remote { public String hello() throws java.rmi.remoteexception; package helloserveur; import hello.hello; public class HelloImpl extends java.rmi.server.unicastremoteobject implements Hello{ public HelloImpl() throws java.rmi.remoteexception { public String hello() { return "hello"; // constructeur vide package helloserveur; import java.net.malformedurlexception; import java.rmi.remoteexception; public class HelloLaunch { public static void main(string[] args) { try { HelloImpl h=new HelloImpl(); java.rmi.naming.rebind("//localhost/monservice",h); System.out.println("service hello enregistre"); catch (RemoteException e) { e.printstacktrace(); catch (MalformedURLException e) { e.printstacktrace(); 72 36

37 Client (<java5) Mise en oeuvre (<java5) package helloclient; import hello.hello; public class Call { public static void main(string[] args){ try { Hello h=(hello) java.rmi.naming.lookup("//localhost/monservice"); String result=h.hello(); System.out.println(result); catch (java.rmi.remoteexception re) { // pb accès distant re.printstacktrace(); catch (java.net.malformedurlexception e) { // URL mal écrite e.printstacktrace(); catch (java.rmi.notboundexception e) { // pas de service correspondant e.printstacktrace(); ~> cd demo/bin/ bin> rmic helloserveur.helloimpl bin> ls helloserveur HelloImpl.class HelloImpl_Stub.class HelloLaunch.class bin> rmiregistry& [1] 6385 bin> java helloserveur.hellolaunch service hello enregistre ~> cd demo/bin/ bin> java helloclient.call hello bin>

38 Interface + serveur (>=java5) Lanceur (>=java5) 75 package hello; public interface Hello extends java.rmi.remote { public String hello() throws java.rmi.remoteexception; package helloserveur; import hello.hello; public class HelloImpl implements Hello { public HelloImpl() { public String hello() { return "hello"; // constructeur vide package helloserveur; import java.rmi... import hello.hello; public class HelloLaunch { public static void main(string[] args) { try { HelloImpl h=new HelloImpl(); Hello stub = (Hello) UnicastRemoteObject.exportObject(h, 0); // ^^^ étape inutile si HelloImpl étend UnicastRemoteObject Registry registry = LocateRegistry.getRegistry("localhost"); // ou getregistry(); registry.bind("monservice", stub); System.out.println("service hello enregistre"); catch (RemoteException e) { e.printstacktrace(); catch (AlreadyBoundException e) { e.printstacktrace(); 76 AAR Matthieu EXBRAYAT Master 2 MIAGE / IRAD Orléans 38

39 Client (>=java5) Mise en oeuvre (>=java5) package helloclient; import java.rmi.registry.*; import hello.hello; public class Call { public static void main(string[] args){ try { Registry registry = LocateRegistry.getRegistry("localhost"); // ou getregistry(); Hello h=(hello) registry.lookup("monservice"); String result=h.hello(); System.out.println(result); catch (java.rmi.remoteexception re) { // pb accès distant re.printstacktrace(); catch (java.rmi.notboundexception e) { // pas de service correspondant e.printstacktrace(); ~> cd demo2/bin bin> rmiregistry& [1] 6841 bin> java helloserveur/hellolaunch service hello enregistre ~> cd demo2/bin/ bin> java helloclient.call hello bin>

40 Niveau 2 : RMI distant RMI security server Schématiquement Recherche Call Contrôle RMI registry (site?) 3. Référence 4. Invocation 1. Enregistrement Hello RMI permet le chargement dynamique de classes inconnues Utilisation d interfaces Implémentation après coup Un peu risqué Risque d incohérences Risque de piratage Java fournit un mécanisme de protection RMISecurityServer (basique) Similaire au bac à sable des applets

41 Sécurité dans JDK 1.2 (et +) SecurityManager Les droits sont organisés par domaine (que les objets soient locaux ou distants) Une classe appartient à un domaine Politique de sécurité D1 D2 D3 Accès complet Bac à sable SecurityManager Ressources système Classe abstraite Un seul par JVM, non redéclarable Déclare des accès par ressource On peut utiliser des fichiers de définition Affine le fonctionnement du SM java -Djava.security.policy=mage.policy Policytool : gestion «graphique» des droits

42 Policytool Un fichier policy très simple... grant { permission java.net.socketpermission "*: ", "connect,accept"; ;

43 Mise en oeuvre du SM Mise en oeuvre dans l'exemple Avant l instanciation de l objet remote (début de main) Avant l appel à un objet remote (client) If (System.getSecurityManager()==null) { System.setSecurityManager( new RMISecurityManager()); De quel côté? Client : accède à des données distante : ok Serveur : ne reçoit rien de suspect : pas nécessaire utilisation d'un fichier «java.policy» grant { permission java.net.socketpermission "*: ", "connect,accept,resolve"; ; java -Djava.security.policy=java.policy helloclient.call

44 Client package helloclient; import java.rmi.registry.*; import java.rmi.*; import hello.hello; public class Call { public static void main(string[] args){ if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); try { Registry registry = LocateRegistry.getRegistry("localhost"); // ou getregistry(); Hello h=(hello) registry.lookup("monservice"); String result=h.hello(); System.out.println(result); catch (java.rmi.remoteexception re) { // pb accès distant re.printstacktrace(); catch (java.rmi.notboundexception e) { // pas de service correspondant e.printstacktrace(); AAR Matthieu EXBRAYAT Master 2 87 MIAGE / IRAD Orléans 88 Niveau 3 : chargement dynamique de classes Intérêt des interfaces? le service importe plus que le code le codage peut évoluer Se limiter au seul service? On peut faire transiter des objets (paramètres) entre client et serveur Quelle caractéristique doivent-ils posséder? Plutôt que des objets, les signatures peuvent contenir des interfaces... 44

45 Accès à des classes distantes Exemple L'interface est connu de C & S L'implémentation n'est définie que d'un côté, mais Elle doit être accessible de l'autre côté Utilisation d'un serveur de classe (codebase) plusieurs protocoles possibles (ftp, http...) Le méthode hello prend en paramètre la «carte de visite» du client dispose d'une méthode «contenutexte» (équivalent à un tostring personnalisé) l'implémentation est laissée libre au client

46 Niveau 3 : vue d'ensemble Mise en oeuvre serveur HTTP 0. mise en place des classes dans le serveur Call Implémentation de la CV RMI registry Hello package hello; public interface Hello extends java.rmi.remote { public String hello(cartevisite cv) throws java.rmi.remoteexception; package hello; public interface CarteVisite { public String contenutexte(); 91 Certaines classes intermédiaires ne sont pas représentées ici

47 Côté client... Côté client... package helloclient; package helloclient; import hello.cartevisite; import java.io.*; public class CarteVisiteClient implements CarteVisite,Serializable { private String nom; private String prenom; public CarteVisiteClient(String nom,string prenom) { this.nom=nom; this.prenom=prenom; public String contenutexte () { return prenom+ +nom; 93 import java.rmi.registry.*; import hello.*; public class Call { public static void main(string[] args){ if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); try { Registry registry = LocateRegistry.getRegistry("localhost"); // ou getregistry(); Hello h=(hello) registry.lookup("monservice"); CarteVisite cv=new CarteVisiteClient(«Dupont», «Jean»); String result=h.hello(cv); System.out.println(result); catch (java.rmi.remoteexception re) { // pb accès distant re.printstacktrace(); catch (java.rmi.notboundexception e) { // pas de service correspondant e.printstacktrace(); 94 AAR Matthieu EXBRAYAT Master 2 MIAGE / IRAD Orléans 47

48 Côté serveur... Côté serveur package helloserveur; import hello.*; public class HelloImpl implements Hello { public HelloImpl() { public String hello(cartevisite cv) { return "hello"+cv.contenutexte; // constructeur vide package helloserveur; import java.rmi... import hello.hello; public class HelloLaunch { public static void main(string[] args) { if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); try { HelloImpl h=new HelloImpl(); Hello stub = (Hello) UnicastRemoteObject.exportObject(h, 0); Registry registry = LocateRegistry.getRegistry("localhost"); // ou getregistry(); registry.bind("monservice", stub); System.out.println("service hello enregistre"); catch (RemoteException e) { e.printstacktrace(); catch (AlreadyBoundException e) { e.printstacktrace(); 96 AAR Matthieu EXBRAYAT Master 2 MIAGE / IRAD Orléans 48

49 Mise en oeuvre Détails pratiques Lancer un serveur http sur la machine client (ou un autre site) Placer la classe CarteVisiteClient sur ce serveur Lancement du client : java -Djava.rmi.server.codebase= -Djava.security.policy=java.policy helloclient.call Ici, les classes sont à la racine du serveur (modulo leur package) Côté serveur Il faut un java.policy!!! serveur HTTP on trouve un petit serveur de test chez sun disponible dans les ressources pédagogiques policy côté serveur idem à client

50 Question Modélisation des systèmes répartis Le serveur est un serveur de calcul Le client lui adresse une classe implémentant le calcul demandé Il envoie aussi les paramètres nécessaires Le client n'attend pas la réponse Le serveur le prévient à la fin des calculs Comment s'y prendre?... FIN :)

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

Plus en détail

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples

Plus en détail

Remote Method Invocation en Java (RMI)

Remote Method Invocation en Java (RMI) Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation

Plus en détail

Calcul Parallèle. Cours 5 - JAVA RMI

Calcul Parallèle. Cours 5 - JAVA RMI Calcul Parallèle Cours 5 - JAVA RMI Eric Goubault Commissariat à l Energie Atomique & Chaire Ecole Polytechnique/Thalès Saclay Le 28 février 2012 Eric Goubault 1 28 février 2012 Remote Method Invocation

Plus en détail

Intergiciel - concepts de base

Intergiciel - concepts de base Intergiciel - concepts de base Ada Diaconescu, Laurent Pautet & Bertrand Dupouy ada.diaconescu _at_ telecom-paristech.fr Rappel : système réparti Système constitué de multiples ressources informatiques

Plus en détail

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011 Java RMI Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr Université de Provence 8 mars 2011 Arnaud Labourel (Université de Provence) Java RMI 8 mars 2011 1 / 58 Web services Services par le réseau

Plus en détail

Programmation répartie RPC & RMI

Programmation répartie RPC & RMI Programmation répartie RPC & RMI Plan du cours Introduction Définitions Problématiques Architectures de distribution Distribution intra-applications Notion de processus Programmation multi-thread Distribution

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Conception de serveurs d'applications ouverts

Conception de serveurs d'applications ouverts Conception de serveurs d'applications ouverts Stéphane Frénot 3 Un modèle d'exécution standard Application Stéphane Frénot 4 1 Répartition "horizontale" d'une application Application de Présentation Application

Plus en détail

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13 Programmation Réseau Sécurité Java Jean-Baptiste.Yunes@univ-paris-diderot.fr UFR Informatique 2012-2013 Java Sécurité? différentes sécurités disponibles et contrôlables intégrité contrôle d accès signature/authentification/cryptographie

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Introduction aux algorithmes répartis

Introduction aux algorithmes répartis Objectifs et plan Introduction aux algorithmes répartis Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR http://sardes.inrialpes.fr/people/krakowia! Introduction aux algorithmes

Plus en détail

Java - RMI Remote Method Invocation. Java - RMI

Java - RMI Remote Method Invocation. Java - RMI Remote Method Invocation Yann Viémont Université de Versailles St-Quentin Plan 1. Introduction 2. Rappels sur les RPC 3. Le modèle objet de Java-RMI 4. Architecture générale 1. Introduction = Disponible

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle 1 Principes 2 Architecture 3 4 Aperçu d utilisation

Plus en détail

Programmation réseau avec Java. 3/7 RMI, un peu de sécurité et CORBA

Programmation réseau avec Java. 3/7 RMI, un peu de sécurité et CORBA Programmation réseau avec Java 3/7 RMI, un peu de sécurité et CORBA Olivier Ricou 5 juin 2008 Java, comme CORBA avant, permet d exécuter des taches à distances avec la RMI. Cette partie aborde les points

Plus en détail

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant. Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de

Plus en détail

Modèle client-serveur Plan. Modèle client-serveur. Modèle client-serveur définition. Modèle client-serveur communication par messages.

Modèle client-serveur Plan. Modèle client-serveur. Modèle client-serveur définition. Modèle client-serveur communication par messages. Modèle client- Modèle client- Plan Michel RIVEILL riveill@unice.fr Polytech Nice - Sophia Principe Traitement des défaillances Désignation, localisation et liaison Intégration aux langages de programmation

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Java Naming and Directory Interface

Java Naming and Directory Interface Introduction Java Naming and Directory Interface Gaël Thomas gael.thomas@lip6.fr Université Pierre et Marie Curie Master Informatique M2 Spécialité SAR Java Naming and Directory Interface (JNDI) Java Standard

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Dis papa, c est quoi un bus logiciel réparti?

Dis papa, c est quoi un bus logiciel réparti? Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre 2006 10. Des sockets aux bus logiciels répartis 1 0. Une application répartie 2 Objectif Découvrir la

Plus en détail

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

Plus en détail

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

[APPLICATON REPARTIE DE VENTE AUX ENCHERES] 2012 Polytech Nice- Sophia El Hajji Khalil Yousfi Hichem SI4 - Log [APPLICATON REPARTIE DE VENTE AUX ENCHERES] Sommaire Architecture de l application... 3 Le Serveur... 3 Le Client... 4 Passage en CORBA...

Plus en détail

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction Plan du cours Autres modèles pour les applications réparties Introduction Riveill@unice.fr http://rangiroa.polytech.unice.fr Notre terrain de jeu : les systèmes répartis Un rappel : le modèle dominant

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Communication inter-processus (IPC) : tubes & sockets exemples en C et en Java F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Java : implémentation

Plus en détail

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet Sécurité Java 2 Première approche L 'internet permet une multiplication des moyens de diffusion des applications. Le courrier électronique, le Web, le FTP sont autant de moyens de distribuer des composants

Plus en détail

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration Julien MATHEVET Alexandre BOISSY GSID 4 Rapport Load Balancing et migration Printemps 2001 SOMMAIRE INTRODUCTION... 3 SYNTHESE CONCERNANT LE LOAD BALANCING ET LA MIGRATION... 4 POURQUOI FAIRE DU LOAD BALANCING?...

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry. : Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.fr Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

Chapitre 4 : Exclusion mutuelle

Chapitre 4 : Exclusion mutuelle Chapitre 4 : Exclusion mutuelle Pierre Gançarski Juillet 2004 Ce support de cours comporte un certain nombre d erreurs : je décline toute responsabilité quant à leurs conséquences sur le déroulement des

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

NFP111 Systèmes et Applications Réparties

NFP111 Systèmes et Applications Réparties NFP111 Systèmes et Applications Réparties 1 de 34 NFP111 Systèmes et Applications Réparties Cours 7 - CORBA/Partie 1 Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon

Plus en détail

Synchro et Threads Java TM

Synchro et Threads Java TM Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire

Plus en détail

2 Chapitre 1 Introduction

2 Chapitre 1 Introduction 1 Introduction Ce livre présente les Enterprise JavaBeans 2.0 et 1.1 qui constituent la troisième et la deuxième version de la spécification des Enterprise JavaBeans. Tout comme la plate-forme Java a révolutionné

Plus en détail

Traitement de données

Traitement de données Traitement de données Présentation du module TINI Présentation du module : Le module Tini se décline en plusieurs versions, il est constitué d une carte d application et d un module processeur : Les modules

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

L exclusion mutuelle distribuée

L exclusion mutuelle distribuée L exclusion mutuelle distribuée L algorithme de L Amport L algorithme est basé sur 2 concepts : L estampillage des messages La distribution d une file d attente sur l ensemble des sites du système distribué

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication Chapitre VII : Principes des réseaux Structure des réseaux Types de réseaux La communication Les protocoles de communication Introduction Un système réparti est une collection de processeurs (ou machines)

Plus en détail

Le Modèle de Sécurité dans JAVA

Le Modèle de Sécurité dans JAVA Le Modèle de Sécurité dans JAVA $Id : javasecurity.lyx 1565 2008-10-22 13 :57 :30Z phil $ 22 octobre 2008 Université de Cergy-Pontoise, 2 rue A. Chauvin 95302 Cergy-Pontoise cedex e-mail laroque@u-cergy.fr

Plus en détail

Le modèle client-serveur

Le modèle client-serveur Le modèle client-serveur Olivier Aubert 1/24 Sources http://www.info.uqam.ca/~obaid/inf4481/a01/plan.htm 2/24 Historique architecture centralisée terminaux passifs (un seul OS, systèmes propriétaires)

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation

Plus en détail

La carte à puce. Jean-Philippe Babau

La carte à puce. Jean-Philippe Babau La carte à puce Jean-Philippe Babau Département Informatique INSA Lyon Certains éléments de cette présentation sont issus de documents Gemplus Research Group 1 Introduction Carte à puce de plus en plus

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

Programmation client-serveur sockets - RPC

Programmation client-serveur sockets - RPC Master Informatique M Plan de la suite Programmation client-serveur sockets - RPC Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/people/krakowia

Plus en détail

Gestion répartie de données - 1

Gestion répartie de données - 1 Gestion répartie de données - 1 Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia Gestion répartie de données Plan de la présentation Introduction

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Projet de Veille Technologique

Projet de Veille Technologique Projet de Veille Technologique Programmation carte à puce - JavaCard Ing. MZOUGHI Ines (i.mzoughi@gmail.com) Dr. MAHMOUDI Ramzi (mahmoudr@esiee.fr) TEST Sommaire Programmation JavaCard Les prérequis...

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

GEI 465 : Systèmes répartis

GEI 465 : Systèmes répartis Université de Sherbrooke GEI 465 : Systèmes répartis Travaux à effectuer Ahmed Khoumsi Automne 2004 Page 1 Les deux premiers travaux que vous effectuerez vous donneront, respectivement, l occasion d utiliser

Plus en détail

OS Réseaux et Programmation Système - C5

OS Réseaux et Programmation Système - C5 OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement

Plus en détail

WEA Un Gérant d'objets Persistants pour des environnements distribués

WEA Un Gérant d'objets Persistants pour des environnements distribués Thèse de Doctorat de l'université P & M Curie WEA Un Gérant d'objets Persistants pour des environnements distribués Didier Donsez Université Pierre et Marie Curie Paris VI Laboratoire de Méthodologie et

Plus en détail

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

Développement Logiciel

Développement Logiciel Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Programmation parallèle et distribuée

Programmation parallèle et distribuée ppd/mpassing p. 1/43 Programmation parallèle et distribuée Communications par messages Philippe MARQUET Philippe.Marquet@lifl.fr Laboratoire d informatique fondamentale de Lille Université des sciences

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Programmation Internet en Java

Programmation Internet en Java Chapitre 8 Programmation Internet en Java Vous avez déjà utilisé Internet, le plus connu des inter-réseaux mondiaux d ordinateurs et quelques-uns de ses services, en particulier le web et le courrier électronique.

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 I. Objectif du TP TP1 : Initiation à Java et Eclipse Programmation Mobile Initiation à l environnement Eclipse et aux notions de base du langage Java. II. Environnement

Plus en détail

Solutions du chapitre 4

Solutions du chapitre 4 Solutions du chapitre 4 Structures de contrôle: première partie 4.9 Identifiez et corrigez les erreurs (il peut y en avoir plus d une par segment de code) de chacune des proposition suivantes: a) if (

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

Systèmes répartis. Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine. Systèmes répartis p.1/49

Systèmes répartis. Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine. Systèmes répartis p.1/49 Systèmes répartis Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine Systèmes répartis p.1/49 Systèmes répartis Définition très large : un système réparti est système informatique

Plus en détail

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007 NFP 121 Java et les Threads Présentation : Thierry Escalarasse Mai 2007 Plan du cour Présentation de la notion de Threads La classe Thread L interface Runnable Les états d un thread La Synchronisation

Plus en détail

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1 Choquet Mathieu Masson Jérôme Groupe 6 Domotique p.1 SOMMAIRE : Introduction...... I/ Envoi de SMS...... II/ Architecture...... III/ Serveur...... IV/ Détection de mouvement...... V/ Problème rencontré......

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier Intergiciels pour la répartition CORBA : Common Object Request Broker Patrice Torguet torguet@irit.fr Université Paul Sabatier Plan du cours 2 Introduction à CORBA Architecture de l ORB Implémentation

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. fortier@lipn.univ-paris13.fr A308, Université de Paris 13

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. fortier@lipn.univ-paris13.fr A308, Université de Paris 13 WEBSERVICES Michael Fortier Master Informatique 2ème année fortier@lipn.univ-paris13.fr A308, Université de Paris 13 https ://lipn.univ-paris13.fr/ fortier/enseignement/webservices/ Sommaire 1 Rappels

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM Copyright TECH 2012 Technext - 8, avenue Saint Jean - 06400 CANNES Société - TECHNEXT France - Tel : (+ 33) 6 09 87 62 92 - Fax :

Plus en détail

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture API04 Contribution Apache Hadoop: Présentation et application dans le domaine des Data Warehouses Introduction Cette publication a pour but de présenter le framework Java libre Apache Hadoop, permettant

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Architectures n-tiers Intergiciels à objets et services web

Architectures n-tiers Intergiciels à objets et services web Plan pour aujourd hui Architectures n-tiers Intergiciels à objets et services web Clémentine Nebut Nebut LIRMM / Université de Montpellier 2 Clementine.nebut@lirmm.fr Introduction Architectures classiques

Plus en détail

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T> Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector l Stack Une pile d'objects Les éléments de la classe Pile sont maintenant des instances

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail