To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
DS-kursusgang nr. 6: distribuerede objekter 1. Intro (oversigt over grundl₣ggende begreber og komponenter) 2. De basale designspørgsm ₢ l ved konstruktion.
// Semaphore.java package semaphore; public class Semaphore { int resources = 1; // Constructors Semaphore() {} Semaphore(int i) { resources = i; } synchronized.
Selve objektet versus referencen til objektet Nedarvning
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
Grundlæggende programmering Efterår 2001
Objektorienteret programmering
09 – Arv og polymorfi i java
Hvordan man skriver koden.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
VPG/Otto Knudsen1 VPR - Repetition Trådning Distribueret Programmering Sprogteori Grafer.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
Begreber og Redskaber 2. Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation.
Forelæsning 3.1 Collections Javas for-each løkke
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Eksempel på realisering af domænemodel
Beskeder/beskedkøer Afsender- proces hej Modtager- proces.. msgsnd(..,"hej",..);.. msgrcv(..);.. Afsender skal bl.a. angive den besked der ønskes afsendt.
Objekter og klasser Rasmus D. Lehrmann DM
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets.
Per P. MadsenStyresystemer og tjenester1 Indhold: 1.Introduktion til styresystemer. 2.Processer og tråde. 3.Synkroniseringsmetoder og InterProcesCommunikation.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
 Processer og tråde  Implementation af tråde  Trådinterferens  Synkronisering  Atomare aktiviteter.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Forelæsning 7.1 – repetition
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Samtidighed. Disposition Formål med tråde Eksempel på fordel ved tråde Thread-pooling Livscyklus Problemstillinger Algoritmer ◦Dekkers ◦Peterson Opsumering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIProgrammering af Store Systemer1 Concurrency i Java – Samarbejdende tråde.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Klasser og objekter (Afsnit i manualen).
Tråde & Executors – uge 2.
Tråde & Executors – uge 2.
Præsentationens transcript:

To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface RMIProblemSe t Fælles: de objekter, der overføres referencer til, skal implementere et interface, som er kendt hos både server og klient, og som nedarver fra java.rmi.Remote de objekter, der overføres referencer til, skal være instanser af klasser som der på server-siden genereres stubbe og skeletter ud fra Forskel: (1) kræver synkronisering af rebind()/lookup. (1) kræver type-cast.

Parameter-overførsel af objekter ved fjern-procedurekald import..; class RMISolverImpl extends UniCastRemote implements RMISolver {.. public boolean setProblem(RMIProblemSet s) { currProblem = s; return true;.. } Problem slås ikke op

Type-casting Implicit type-konvertering: int i = 0; float f = i; System.out.println(f); Type-casting = eksplicit programmeret type-konvertering float f = 1.1; int i = (int) f; System.out.println(i); public java.rmi.Remote lookup(){..};.. Thing t = (Thing) Naming.lookup() Procedure lookup returnerer et objekt af typen java.rmi.Remote

CLASSPATH RMI-compiler (rmic) kender ikke den default-classpath, som java-oversætteren (javac) bruger. Derfor skal classpath-en sættes eksplict i C:\autoexec.bat set CLASSPATH=.;C:\jdk1.1.8\classes;C:\jdk1.1.8\lib\classes.zip Nu kan RMI-compileren finde klasser i: det aktuelle katalog kataloget C:\jdk1.1.8\classes zip-filen C:\jdk1.1.8\lib\classes.zip Tjek med instruktorerne hvad classpath skal være på maskinerne i J420 installationsafhængigt

Formål med Farleys multitrådede webserver/problemsolver (eks ) Klient/browser Server Solver Håndtering af multiple klienter

Formål med Farleys rmi-programmer (eks ) solver koordinator Fordeling af solvere på forskellige værtsmaskiner

// Farley eks. 4-2 class RunnableSolverServer {.. serviceClient(..) { RunnableSolver s = new RunnableSolver(..); Thread t = new Thread(s); t.start; } Servicering af klient-forespørgsel i separat tråd Fordele: svargaranti: en tråd er dedikeret til at lytte til nye henvendelser højniveauprogrammering: overflødiggør eksplicit programmering af fordeling af cpu-tid mellem de enkelte henvendelser

Eksplicit programmering af fordeling af cpu-tid while (true) { listen_for_0.1_sec_and_add_new_clients_to_list_L; for_all_clients_c_in_L { service_client_for_0.1_sec(c); }; } // ?? Hvordan vides hvor serviceringen er kommet til (hvilken programlinje) ? Hvordan undgås tidsspilde pga. blokering ? Teknisk set måske muligt, men vanvittig kompliceret.

Design: 1 tråd per samtidig opgave/agent Hver opgave, der skal løses samtidigt med andre opgaver, placeres i separat tråd eller proces. Administration af samtidighed overlades til operativsystem (og/eller Java køretidssystem). Programmet for den enkelte opgave kan skrives som om programmet havde maskinen for sig selv (stort set).

Multi-proces vs. multi-tråd Ligheder med fork()-ning af nye processer: samme programtekst samme OS-resourcer (fildeskriptorer, etc.) hver sin tråd (i billedlig betydning) parallelitet: cpu-deling blokering skeduleres (mini-skedulering af tråde i samme proces) Forskel - tråde har samme globale variable er del af samme proces Afgørende for håndtering af multiple klienter

Javas tråd-implementation: Klasser, interfaces, modifier interface Runnable class Thread run() start()stop() sleep() setPriority(..) …. class Object wait()notify() …. Thread(Runnable t) // constructor Implementa- tionen af run() er trådens program En instans af class Thread gør programmet til separat tråd Metode-modifier: synchronized

To måder at skabe en tråd interface Runnable class Thread run() class RI run() class SubT

To måder at skabe en tråd Ofte er begge metoder anvendelige. 1. Implementation af runnable A. Definer en class RI som implementerer interface Runnable. B. Parameteroverfør en instans af RI til en instans af class Thread. C. Kald start() i Thread -instansen. Giver mulighed for at tråden nedarver fra andre klasser. 2. Nedarvning fra class Thread A. Definer en class SubT som nedarver fra class Thread. B. Kald start() i en instans af class SubT. (Giver visse muligheder for at overskrive metoder.) Jf. Farley

Farleys multitrådede server: klassehierarki RunnableSolverServerRunnableSolver SolverSimpleServer RunnableSolverClient SimpleClient Runnable

Farley brug af metode 1 (A) run() Skridt A: En solver defineres som en klasse, der implementerer Runnable. RunnableSolver Solver Runnable solve() class RunnableSolver implements Runnable, Solver { void solve() {..sqrt..} public void run() {.. solve();.. }

class RunnableSolver implements Runnable, Solver { void solve() {..sqrt..} public void run() {.. solve();.. } class RunnableSolverServer {.. RunnableSolver s = new RunnableSolver(); Thread T = new Thread(s); t.start();.. } Skridt B: Solveren oprettes af RunnableSolverServer som tråd ved at parameter- overføre solver-objektet til et Thread-objekt. Skridt C: Thread-objektets start()-metode kaldes. Kalder run() i s /solver-objektet Farley brug af metode 1 (B+C)

Farleys multitrådede program Vink til tilpasning: Brug Java-filerne i kataloget threads: runnablesolver.java etc. Solver og ProblemSet i ikke-distribueret udgave (eks. 3-1 og 3-2) fra kataloget distributed objects. Diverse klasser fra pseudo-webserver skal bruges. Ved evt. oversættelsesproblemer: Tjek store/små bogstaver i filnavne (unix: ProblemSet defineres i ProblemSet.java). RunnableSolver.java: - PrintResults(..) -> printResults(..)

Håndtering af tråde Synkronisering som gensidig udelukkelse: Beskyttelse af en kritisk region for at undgå race conditions. void run() { X = X + 1; } Synkronisering ved hjælp af kommunikation: Kommunikation mellem tråde - typisk om hvornår der er åbnet op for adgang til en kritisk region. Hvis X er en global variabel, må run() ikke udføres af to tråde samtidig.

Gensidig udelukkelse: modifieren synchronized synchronized void run() { X = X + 1; } Svarer til at sætte en semafor: void run() { down(sem); X = X + 1; up(sem); }

Kommunikation: metoderne wait() og notify() synchronized void take_fork() { while (!available) {wait()}; available = false; } synchonized void put_fork() { available = true; notify(); } Afgørende at forstå: Hvem bliver "notify"-et ?