// Semaphore.java package semaphore; public class Semaphore { int resources = 1; // Constructors Semaphore() {} Semaphore(int i) { resources = i; } synchronized.

Slides:



Advertisements
Lignende præsentationer
C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her:
Advertisements

Februar 2005Sprog-nyheder i C# og VB1 Captator Tlf: Henrik Lykke Nielsen Softwarearkitekt, Microsoft Regional Director for Denmark.
RT Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
1 Parsing. 2 Mål: Et program til indlæsning og beregning af aritmetiske udtryk Eksempel: Beregn (3*5 + 4/2) - 1 Løs et lettere problem først: Læs en streng.
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.
GETTIN DOWN 2 BUSINESS >> INDSÆT SLOGAN HER > INDSÆT SLOGAN HER
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.
14 - JavaBeans. 2 NOEA2009Java-kursus – JavaBeans Content What is a Java Bean? BDK What makes Bean possible? Support for Java Bean References.
Hvordan man skriver koden.
Tråde og synkronisering. Tråde To typer tråde Dedikerede tråde -programmør opretter og tilknytter metode -”kører tråd-metoden (job) én gang” Tråd pulje.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
Datastruktur & Algoritmik1 Sidste gang For j:=2 to len(A) do key:=A[j] (* indsæt key *) i:=j-1 while i>0 and A[i]>key do A[i+1]:=A[i] i-- A[i+1]:=key For.
Abstrakte klasser og interfaces i Java
Object-Orienteret Programmering og Design Kilde: Joe Hummel.
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
Kort om MIDlet. MIDlet - resourcer Kernen er en begrænset java-maskine: Connected Limited Device Configuration Device afhængig: CLDC 1.0 eller CLDC 1.1.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
FEN NOEA/IT Programmeringsteknologi 1 Arv og polymorfi Substitutionsprincippet Abstrakte klasser Design Patterns (Composite)
Iteration og parametrisering
MEC, DAIMIIntroJava AAU1 Crayon-objekter nu med loops og metoder.
18. Strategisk analyse af interne forhold
Items 4, 14, 24, 34, 44, 54 Orange gruppe Liv, Jonas, Thorkil, Søren S og Martin D.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Forelæsning 3.2 Billedredigering (bl.a. brug af for-løkker)
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
FEN IntroJava AAU1 Grafik – Crayon-objekter.
Forelæsning 2.2 Tilstand og opførsel (repetition)
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
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;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
Per P. MadsenStyresystemer og tjenester1 Threads.
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.
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.
Spec. af LottotalsGenerator interface LottoTal{ // S: mgd. af udtrukne tal // min, max: int - angiver intervallet (incl.) void set(int min, int max); //PRE.
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.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 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.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7A.1 Rekursion.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
Grafik Modeller, objekter og opførsel. dIntProg, F08Grafik.2 Nye begreber Repetition (iteration) –gentagelse af opførsel Parametrisering –generalisering.
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.
Et Audio/ Video Framework Et framework for en audio/video applikation baseret på lokale og kilder tilgængelige på 1394 via AV/C protokollen.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
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.
Parallel programming Rasmus D. Lehrmann DM
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;
Klasser og objekter (Afsnit i manualen).
Dog Sort Dogs For meget ansvar Låst til én måde at sortere på
Præsentationens transcript:

// Semaphore.java package semaphore; public class Semaphore { int resources = 1; // Constructors Semaphore() {} Semaphore(int i) { resources = i; } synchronized void down() {while.. wait();..} synchronized void up() {.. notify();} } Skitse af semafor-klasse

synchronized void down() { while (resources <= 0) { try {wait();} catch.. } resources = resources - 1; } synchronized void up() { resources = resources + 1; notify(); } down() og up()

Semafor brugt til at beskytte kritisk sektion i database-record Agent Semaphore Agent Record sem.down(); rec.X = rec.X +1; sem.up(); X er globalt data

Et objekts lås og mængder af ventende tråde public class Semaphore { synchronized void down() { while.. wait();.. } synchronized void up() {.. notify(); } lås s-mængde w-mængde sem (Semaphore-objekt) Låst hvis et objekt er i gang med at udføre en metode, som er synchronized De tråde, som er blokeret fordi de venter på at udføre en metode, som er synchronized De tråde, som er blokeret fordi de har udført wait() i Semaphore-objektet (og som ikke er blevet resume-de endnu)

Hvem sættes i kø hvor ? "Hvem ?" og "hvor ?" spørgsmål til synkronisering. Hvem suspenderes ? Det gør tråde, og specifikt den tråd som vil udføre en synchronized metode i et låst objekt, eller som udfører et kald af wait(). Hvor anbringes de suspenderede tråde ? De tilknyttes det objekt, der indeholder metoden med synchonized / wait(). Rækkevidden af notify() og notifyAll() er de suspenderede tråde, som er knyttet til det objekt, der indeholder metoden med notify()/notifyAll()

public class Record { integer X; synchronized void incr() { while.. wait();.. X = X + 1; notify(); } lås s-mængde w-mængde rec (Record-objekt) Alternativ til brug af semafor

Semafor-operationer: down og up skal være atomiske // Forenklet implementation i C af semaforer // Semaforen er repræsenteret ved et heltal. down(int *sem) { if (*sem=0) {SLEEP UNTIL WAKEUP}; *sem = *sem - 1; } up(int *sem){ *sem = *sem + 1; {WAKEUP ONE SLEEPING PROCESS}; } ? sleep *Sem-- *sem++ wakeup

Metoder/faciliteter til interproces-kommunikation Fra OS-kurset: Filer Semaforer Besked-køer Pipes Andre: Signaler Delt hukommelse

Besked-køer ….. msgsnd(..);.. msgrcv(..);.. Afsender skal angive - adresse = ? - længde af besked - prioritet - flag som styrer opførsel i specialtilfælde

Sockets vs. besked-køer Ligheder: formål: interproces-kommunikation implementation: kerne-understøttet (hvis andre sprog, f.eks. Java, bruger faciliteterne, er det via C) global navngivning af kommunikations-mediet strømme hvis indhold forbruges ved læsning Forskelle: sockets kan også forbinde processer på forskellige maskiner sockets kan forbinde maskiner med forskellige operativsystemer en besked-kø kan have flere sendere og/eller modtagere beskeder er afgrænsede beskeder har prioritet

Boss/workers brug af besked-køer … Boss Worker

Boss/workers brug af (TCP-baserede) sockets accept(..): Bruges til automatisk at generere ny socket-forbindelse for hver ny request fra klient. Oprettelse af forbindelse mellem worker/klient lettes Prioritet/type behøves ikke til at identificere afsender eller modtager Da sockets ikke grupperer det overførte data i beskeder, skal modtageren parse input-strømmen blot for at finde ud af hvorfra og hvortil en "besked" går.

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

Server Thread RunnableSolver Solver-objekt parameteroverføres til Thread-objekt ProblemSet Farleys multitrådede server - de vigtigste klasser Client Socket- forbindelse class RunnableSolver { void solve() {..} public void run() { solve(); }.. }

Kombination af RMI og multitrådning: Design Server: 1 tråd modtager nye forespørgsler 1 tråd per klient behandler klientens forespørgsel (nu via fjernt solver-objekt) varetager socket-kommunikation med klient Solver på fjern maskine: 1 solver-objekt for hvert klient-tråd (helst) Solver tråd Server

Thread Solver ProxySolver Server som kan tilgå 1 fjernt solver-objekt ProblemSet 0..n

class RunnableProxyServer Version 1: ét fjernt solver-objekt class RunnableProxySolver implements Runnable, Solver { RMIProblemSet currProblem; OutputStream clientOut; InputStream clientIn; RunnableProxySolver(..) {..}; RMISolver s; void solve() { currProblem =..; s = (RMISolver) Naming.lookup(..); s.solve(currProblem,..);.. } public void run() { solve(); }.. } Alle bruger det samme solver-objekt Alle har sit eget problem-objekt Til/fra klient

class RMISolverImpl class RMISolverImpl implements RMISolver { RMIProblemSet currProblem; void setProblem(RMIProblemSet s) { currProblem = s; } boolean solve() { currProblem.setSolution(Math.sqrt(currProblem.getValue())); } boolean solve(RMIProblemSet s,..) {.. }.. } // forenklet i forhold til Farleys program synchronized ? Bruger solve/2 den globale setProblem ?

Samtidig brug af et fjernt objekt Flere tråde kan samtidig få udført metode-kald i et objekt uanset om det er fjernt eller på samme maskine hvis metoden bruger delte, globale variable, skal den synkroniseres hvis metoden ikke bruger delte, globale variable, svarer metoden til et funktionskald og bruger ikke objektets tilstand

Party Filosof Gaffel take_forks(..) Filosof = separat tråd Samtidig brug af metode i objekt i samme proces

Faser i elektronisk handels- transaktion Jf. SET Spec., Book 1, afsnit Kortindehaver "browser" Kortindehaver beslutter sig for køb. 4. Kortindehaver vælger betaling (kreditkort via SET). 5. Kortindehaver sender ordre til e-købmand (afsnit 4.4). 6. E-købmand tjekker hos kortindehavers bank (4.5). 7. E-købmand sender ordrebekræftelse til kortindehaver (4.4). 8. Levering/ydelse af vare/tjenesteydelse. 9. Pengeoverførsel til e-købmand. (4.6) Krav til websider Krav til SET- implementation

Krav til SET-godkendt e-handels-server Langvarige transaktioner som involverer 3 parter: kortindehaver købmanden selv SET gateway Beregningstunge opgaver: offentlig nøgle kryptering/dekryptering af korte strenge symmetrisk nøgle kryptering af lange strenge Datatunge opgaver - database med: varekatalog kundeoplysninger (omend ikke kreditkortsnumre..) Forhåbentlig mange transaktioner !