Modeller av prosessering Implementasjon av tjenere

Like dokumenter
Objekt-tjenere og deres implementasjon

Objekt-tjenere og deres implementasjon

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd

Synkronisering I. Kapittel 6. Tråd A. ferdig. t.varsle() u.vente() Tråd B. ferdig. tid

Tråder Repetisjon. 9. og 13. mai Tråder

Tråder Repetisjon. 9. og 13. mai Tråder

INF1010 Tråder II 6. april 2016

Operativsystemer, prosesser og tråder

Synkronisering II. Kapittel 7. Betingelse oppfylt (0) liste. tråd-deskriptor. venteliste. tråd-deskriptor. tråd-deskriptor.

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet

IN1010 våren Repetisjon av tråder. 15. mai 2018

Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

Forelesning III Kap 8 & 7; Dagsplan. Gjenbruk. Condition synchronization. Gjennomgående eksempler. Kode: Design: Verktøy

UNIVERSITETET I OSLO

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Avdeling for ingeniørutdanning Institutt for teknologi

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

Definisjon av prosess

INF Notater. Veronika Heimsbakk 10. juni 2012

Distribuerte objekter og objekt-basert mellomvare

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

Eksempler på ikke-blokkerende systemkall:

Distribuerte objekter og objekt-basert mellomvare

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

Distribuerte objekter og objekt-basert mellomvare

INF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

RM-ODP og Multimedia middleware (M3W):

INF1010 Repetisjonskurs i tråder

Objekt-interaksjon. INF 5040 høst 2006

Prosesser og Tråder. Ketil Danielsen January 16, en tråd arbeider sekvensielt gjennom program

Tilstandsmaskiner med UML og Java

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

Kort notat om parallellstyring IN147

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig.

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

Sortering med tråder - Quicksort

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Definisjon av prosess

INF2440 Uke 6, v2017. Arne Maus PSE, Inst. for informatikk

GUI («Graphical User Interface») del 2

UNIVERSITETET I OSLO

OOT Seminar H-97 CORBA. Praktisk del

INF2440 Uke 6, v2015 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem. Arne Maus PSE, Inst.

Inf1010 oppgavesamling

Objekt-interaksjon. Plan. INF 5040 høst 2005

Tråder del 2 Våren Stein Gjessing Institutt for informatikk Universitetet i Oslo

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

Hentet fra Suns Totorial:

DCOM. 21. oktober Mai et al. Hva er egentlig en komponent?

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

Plan for dagen. Kræsj-kurs i sanntidsprogrammering. Måter å tenke på. Programmering intro. Tråder & synkronisering

Start opp. Prosess 3 Meldingsutveksling Operativsystemet (styrer alt og sørger for kommunikasjon mellom prosesser)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

CORBA Objektmodell (Java RMI)

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Introduksjon til Distribuerte System (DS)

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

INF2440 Uke 4, våren2014 Avsluttende om matrisemultiplikasjon og The Java Memory Model + bedre forklaring Radix. Arne Maus OMS, Inst.

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

UNIVERSITETET I OSLO

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Presentasjon av: Erling Ringen Elvsrud Nils Fredrik Gjerull Håkon Torjus Bommen

TOD063 Datastrukturer og algoritmer

Faglig kontakt under eksamen: Orestis Gkorgkas

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java

Implementering av caching ved hjelp av Spring. Christian Vestøl

UNIVERSITETET I OSLO

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Å lese tall fra en fil, klassen Scanner

UNIVERSITETET I OSLO

Kapittel 7: Mer om arv

Kapittel 8: Programutvikling

CORBA Component Model (CCM)

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

INF3030, Uke 3, våren 2019 Regler for parallelle programmer, mer om cache og Matrise-multiplikasjon. Arne Maus / Eric Jul PSE, Inst.

INF Seminaroppgaver til uke 3

Socket og ServerSocket

Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

1b) RaceCondision: En bug som kommer til overflaten ved uheldig timing/scheduling. Det klassiske eksemplet er vel med suspend og resume:

Gruppe 11. Frank Petter Larsen Vegard Dehlen

UNIVERSITETET I OSLO

INF2440 Eksamen 2016 løsningsforslag. Arne Maus, PSE ifi, UiO

Del 3: Evaluere uttrykk

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

INF2440 Uke 4, v2017 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Løsningsforslag Test 2

Transkript:

Modeller av prosessering Implementasjon av tjenere Foreleser: Kjell Åge Bringsrud 1 Oversikt Motivasjon for flertrådede prosesser og deres anvendelse i distribuerte system Modeller av prosessering i CORBA samtidighetsmodeller nyttig for tjenerimplementasjoner flere samtidige klienter Fokus på kap. 6.4 i Coulouris et al 2 IN-ODP HØST 2001 1

Prosesser og tråder Motivasjon tradisjonelt prosessbegrep fra Unix anno 1980 1-1 relasjon mellom prosess og prosesseringsaktivitet behov for intern samtidighet i prosesser Løsning: generalisere prosess-begrepet til å kunne assosieres med flere prosesseringsaktiviteter Prosess tråder OS-ets abstraksjon av en prosesseringsaktivitet kjøretidsomgivelse ett adresserom trådsynkronisering (f.eks. semaforer) og komm.ressurser (ports) 3 Tråder To modeller Hver prosess har ett adresserom og en eneste kontrolltråd (og program-teller) Hver prosess har flere kontrolltråder som deler ett adresserom og eksekverer i (kvasi)parallell Datamaskin Datamaskin prosess tråd programteller 4 IN-ODP HØST 2001 2

Motivasjon tråder kjøretidsomgivelser (adresserom) er dyre å opprette tråder er mye billigere å opprette og terminere tråder kalles også lettvekstsprosesser tråder kan dele kjøretidsomgivelser (f.eks. globale variable, åpne filer, timere, signal,. ) prosesser definerer beskyttelsesdomener en tråd i en prosess kan (normalt) ikke aksessere data og ressurser i en annen prosess 5 Flertrådet tjener Anrop Inn-Ut 8 ms forsinkelse 2 ms m/cache i snitt dispatch ingen disk caching ingen disk caching disk caching disk caching 2 ms prosessering 2.5 ms m/cache i snitt # prosessorer #tråder Maks. anrop/sekund 1 1 100 1 2 125 1 2 400 2 2 500 6 IN-ODP HØST 2001 3

Flertrådet klient opprett tråd RPC hovedtråd utfør RPC 7 Tråder vs flere prosesser Tråddata Programteller Stack Prioritet og tilstand Registersett Barnetråder (threadids) Trådtilstand: RUNNING, READY, BLOCKED, TERMINATED Prosessdata Adresserom (adr. tabeller) Globale variable Ports/komm.grensesnitt Timere Signaler Semaforer Tråder (threadids) Opprette en tråd er billigere enn å opprette en prosess: O(10) ggr raskere? Trådbytte innen en prosess er billigere enn mellom prosesser: O(100) ggr raskere? Tråder innen en prosess kan dele data og ressurser mer effektivt enn mellom prosesser Tråder innen en prosess er ikke beskyttet mot hverandre 8 IN-ODP HØST 2001 4

Trådpakker Trådpakke: et sett med primitiver (f.eks. bibl. kall) cthread_fork(func,arg) --> threadid cthread_exit(result) cthread_join(threadid) cthread_yield() Tråder kan opprettes og termineres under kjøretid Trådterminering kan være frivillig eller påtvunget fra utenfor tråden 9 Tråder deler felles lager Trådpakker II aksess til delte data --> kritisk region semaforer, monitorer o.l. Trådpakker tilbyr ofte en mutex binær semafor: to tilstander locked og unlocked operasjoner: LOCK, UNLOCK og noen ganger TRY Trådpakker kan og tilby betingelsesvariable kø forbundet med hver variabel condition_wait(conditionid, mutexid) condition_signal(conditionid) 10 IN-ODP HØST 2001 5

Trådpakker III Eksempel synkronsiering Cond_var ikke_full Produsent buffer Cond_var ikke_tom Konsument Produsent lock(buffer) if full then c_wait(ikke_full, buffer); buffer.put(c) c_signal(ikke_tom) unlock(buffer) put,get,tom,full Alternativt: benytt monitorer Konsument lock(buffer) if tom then c_wait(ikke_tom, buffer); C:=buffer.get c_signal(ikke_full) unlock(buffer) 11 Preemptive Tråd schedulering en tråd kan suspenderes for å slippe til en annen tråd selv om den er RUNNABLE Ikke-preemptive en tråd ekskverer inntil den gjør et (system)kall som gjør at den suspenderes passer ikke for sanntids- og multimedia-applikasjoner Prioritet sanntids- og multimedia-appliksjoner krever at tråder kan gis prioritet eksempel: en høyprioritetstråd kan assosiseres til hendelser som krever hurtig reaksjon 12 IN-ODP HØST 2001 6

Tråder i Java Thread run() MyThread run() Runnable run() MyRun run() target Thread class MyThread extends Thread { public void run () { // Thread a = new MyThread(); public interface Runnable { public abstract void run() class MyRun implements Runnable { public void run () { // Thread b = new Thread(new MyRun); 13 Thread metoder static void sleep tråden pauser i oppgitt antall millisek. static void yield gir opp prioritet (settes bakerst i klar køen ) static Thread currentthread tråden som eksekverer nå ( denne koden ) void run( ) koden som eksekveres når tråden startes void start ( ) oppretter ny tråd og legger den i klar-køen boolean isalive( ) false hvis tråden har terminert void join( ) den kallende tråd blokkeres inntil den kallte tråd terminerer. Finnes og variant der man angir timeout (dvs. maks. ventetid på at tråden skal terminere) 14 IN-ODP HØST 2001 7

Tråders livsløp i Java THREAD = CREATED, CREATED = (start RUNNING stop TERMINATED), RUNNING = ({suspend,sleep NON_RUNNABLE yield RUNNABLE {stop,end TERMINATED run RUNNING), RUNNABLE = (suspend NON_RUNNABLE dispatch RUNNING stop TERMINATED), NON-RUNNABLE = (resume RUNNABLE stop TERMINATED), TERMINATED = STOP. 15 Synkronisering i Java Introduserer kritiske regioner ved et monitor-begrep. Token assosiert ved hvert objekt som bare én tråd kan eie av gangen vente-kø av blokkerte tråder assosiert med hvert token tråder som venter på tokenet Monitor-objekt har synkroniserte metoder. Innkapsler felles data. public class buffer { public synchronized Data get { //.. Gjør noe som leser dataene.. public synchronized put (Data d) { //.. Gjør noe som endrer dataene.. synchronized metoder: -prøver(automatisk)å tilegne seg objektets token - blokkerer inntil tokenet er mottatt -girdetfrasegnår metoden er ferdig 16 IN-ODP HØST 2001 8

Synkronisering i Java Blokker av kode som kritisk region. Object other = // et eller annet objekt... { synchronized(other){ length = length + other.size * 14; width = other.var1 + other.var2; synchronized blokk: - konkurrerer med alle andre blokker som synkroniserer på samme objekt, og med alle metoder som er synchronized i klassen til objektet 17 Betinget synkronisering i Java Koordinere adgang til felles ressurser (buffer o.l.) Tre metoder som tilbys av class Object: public final void wait()throws InterruptedException; venter på å bli vekket av en annen tråd. Den ventende tråd frigjør token assosiert med monitoren. Når tråden vekkes må den vente til den har alle sine token igjen. Andre tråder kan imellomtiden ha hatt disse (og oppdatert de delte data). public final void notify(); vekker opp en enkel tråd som venter i objektets kø. public final void notifyall(); vekker opp alle tråder som venter i objektets kø. 18 IN-ODP HØST 2001 9

Betinget synkronisering i Java Implementeres som guarded action i monitor-metode: public synchronized void action() throws InterruptedException { while (!cond) wait(); // modifiser monitor data; notify(); 19 Monitor eksempel Koordinere adgang til parkeringsplass avgang -tråd monitor Park.plass wait() notify() ankomst -tråd 20 IN-ODP HØST 2001 10

Ankomst-tråden Monitor eksempel class Ankomst implements Runnable { ParkeringsMonitor parkplass; Ankomst(ParkeringsMonitor p) {parkplass = p; public void run() { try { while (true) {.. //vent på en ankomst.. parkplass.ankomst(); catch (InterruptedException e) { 21 Avgang-tråden Monitor eksempel class Avgang implements Runnable { ParkeringsMonitor parkplass; Avgang(ParkeringsMonitor p) {parkplass = p; public void run() { try { while (true) {.. //vent på at noen vil forlate.. parkplass.avgang(); catch (InterruptedException e) { 22 IN-ODP HØST 2001 11

Monitor eksempel Parkeringsmonitor class ParkeringsMonitor { protected int plasser; protected int kapasitet; ParkeringsMonitor(int kap) {plasser = kapasitet = kap; synchronized void ankomst() throws InterruptedException { while (plasser == 0) wait(); --plasser; notify(); synchronized void avgang() throws InterruptedException { while (plasser == kapasitet) wait(); ++plasser; notify(); 23 Monitor eksempel Kode for initialisering ParkeringsMonitor p = new ParkeringsMonitor(n); Thread ank = new Thread(new Ankomst(p)); Thread avg = new Thread(new Avgang(p)); ank.start; avg.start; 24 IN-ODP HØST 2001 12

Modeller av prosessering i CORBA CORBA definerer samtidighetsmodeller for tjenere enkeltrådet, flertrådet Er definert ved såkalte activation/deactivation policies for Basic Object Adaptor (BOA) BOA: En CORBA definert Object Adaptor som er ment å skulle passe for de fleste klienter og objekt-implementasjoner Aktiviseringspolitikk regler som en implementasjon følger når det er flere aktive objekt og implementasjoner Alle BOA implementasjoner må understøtte fire ulike aktiviseringspolitikker 25 BOA objektaktivisering Felles tjener flere aktive objekt deler samme tjener (enkeltrådet) Tjenerprosess Object adapter A s IDL B s IDL A B Vent felles 26 IN-ODP HØST 2001 13

BOA objektaktivisering II Udelelig tjener kun ett objekt av gangen kan være aktivt i samme tjener Tjenerprosess Object adapter Object adapter A s IDL B s IDL A Tjenerprosess B udelelig 27 BOA objektaktivisering III Tjener per metodekall hvert anrop av en metode er implementert ved oppstart av en separat tjener (prosess eller tråd), og som terminerer når metoden er fullført. Flertrådet tjenerprosess Object adapter A s IDL B s IDL A B Behov for synkronisering Tjener-per-metode 28 IN-ODP HØST 2001 14

BOA objektaktivisering III Tjener per metodekall (forts) Tjenerprosesser Object adapter A s IDL A B B s IDL B Behov for synkronisering Tjener-per-metode 29 BOA objektaktivisering IV Persistent server tjeneren aktiviseres ved mekanismer utenfor BOA BOA handterer alle anrop som for felles tjener Tjenerprosess Applikasjon Object adapter A s IDL Scheduler A B s IDL B Persistent tjener Applikasjonsspesifikt 30 IN-ODP HØST 2001 15

CORBA 2.0 portabilitet Tjener-implementasjoner ikke portabel mellom ulike ORB implementasjoner grensesnitt til BOA underspesifisert av OMG aktivisering/deaktivisering registrering av objekter i ORBen navngiving base_ klasser 31 CORBA 3.0 Portable Object Adapter (POA) Muliggjør portable tjenerimplementasjoner støtte for persistente objekter objektreferanser overlever flere tjener-inkarnasjoner støtte for transient aktivisering av objekter servant managers instansierer objekter (servants) root POA, pluss spesialiseringer av denne policies styrer adferden til en POA kan lage egne policies for egne POA spesialiseringer av root POA kan ha flere POA per applikasjon ulike objekt kan være gjenstand for ulike policies 32 IN-ODP HØST 2001 16

POA arkitektur Klient ORB POA Tjener Servant manager Objekt refereanse ID ID ID Objekt Objekt Objekt Objekt implementasjoner (servants) 33 ORBacus samtidighetsmodell blokkerende tjener en klientsesjon av gangen, enkeltrådet reaktiv tjener flere klientsesjoner av gangen, enkeltrådet tråd-per-klient tjener en aktiv tråd per klient, flertrådet tjener en klient kan ikke ha flere samtidige anrop i samme tjener tråd-per-anrop tjener en ny tråd opprettes for hvert anrop tråd-pool tjener statisk forråd av tråder som allokeres til innkommende anrop gir maks. grad av samtidighet i tjeneren 34 IN-ODP HØST 2001 17