Multiprogrammering[2] Datalogi 1F Forår 2003 Synkronisering og grænseflader Jørgen Sværke Hansen

Slides:



Advertisements
Lignende præsentationer
HUNDE SPEED km h 34,4 HUNDE SPEED km h 34,1 HUNDE SPEED km h 32,8 HUNDE SPEED km h 31,9 HUNDE SPEED km h 31,8 HUNDE SPEED km h 30,9.
Advertisements

Den danske befolknings syn på handicappedes rettigheder
VMS data Geografisk og tidsmæssig udvikling af indsatsen i tobisfiskeriet v/ dataspecialist Josefine Egekvist Sekretariat for myndighedsbetjening.
Atomer Et programmeret forløb. En måde at lære på.
Børns indflydelse på familiens købsbeslutninger
NemID og Fællesskema 2014 v/Signe Hansen Blegmand
TEST 2 modul 1 20 spørgsmål. Du skal klikke med musen på det rigtige svar, så kommer du automatisk til næste spørgsmål Klik for start.
Torbenfeldvej Vallensbæk strand Tlf.: – – dagligt brug af vores hjemmeside •AGEN LYS har en stor og omfattende.
Niveauer af abstrakte maskiner
Mette Andersen SDE Ansættelse af elev. Mette Andersen SDE
OS[2]: Processor, tråde og skedulering
Velkommen hos Juvel A/S
Dataopsamling og GPS-styring
Bolig selskabernes Landsforening– Almene lejeboliger - Maj/Juni Almene lejeboliger - Danmarkspanelet - Maj/Juni 2010.
07 – Kort om OO Introduktion.
Trivselsundersøgelse og ledelsesevaluering
Symbolsk maskinsprog.
Multiprogrammering[1]: Ydre enheder og multiprogrammer Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.

Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation, og dataproblemer 4. november 2005.
Representations for Path Finding in Planar Environments.
Datalogi 1F: Multiprogrammering[2]
Datalogi 1F: Multiprogrammering[4] 1 Planen for i dag Repetition af kerner med afbrydelser Kerner med tvungent processkift Præsentation af K1.
Kursus om borger.dk og brugen af digital signatur
Introduktion til Access (Access, del 1)
Pleje og Sundhed Gennemførte719 Inviterede895 Svarprocent80% FREDERICIA KOMMUNE MTU og Psykisk APV 2012 Rapportspecifikationer.
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
Operativsystemer [3]: Synkronisering og baglåse Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
1 Powerpointserie om In-line færdiggørelse ved Heatsettrykning Avisrotation Magasindybtryk Den Grafiske Højskole.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Trivselsundersøgelse og ledelsesevaluering Anæstesiologisk Afdeling Flere ledere
Datastrukturer og Collections Rasmus D. Lehrmann DM
ETU 2008 | Elevtilfredshedsundersøgelse Erhvervsskolen Nordsjælland HTX (Teknisk Gymnasium) - Hillerød Baseret på 313 besvarelser.
Program for fremlæggelse
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Anvendelser I Leg og spil.
Matematik B 1.
Datalogi 1F Forår 2003 Multiprogrammering[3] Eksempler på multiprogrammeringskerner Jørgen Sværke Hansen
Claus Brabrand, ITU, Denmark Mar 10, 2009EFFECTIVE JAVA Effective Java Presentation Workshop Claus Brabrand [ ] ( “FÅP”: First-year Project.
MSBuild & Team Build i C#/C++ solutions VSTS ERFA d. 25 November.
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
Januar 2009 MandagTirsdagOnsdagTorsdagFredagLørdagSøndag Uge 2. Anette Ø. Kl Tina H. Lone M. 6 Kl Britt H. 7 Kl Vinnie G. Gerda.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
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
Introduktion til Access (Access, del 1). RHS – Informationsteknologi – Fra design til udvikling Vi ved nu, hvordan vi finder et design for en database,
8.6 Transaktioner1 Transaktioner 8.6 Transactions in SQL.
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.
1 Kap. 4, Jordens Tyngdefelt = Torge, 2001, Kap. 3. Tyngdekraftens retning og størrelse g (m/s 2 ) Acceleration Tyngdepotentialet (W): evene til at udføre.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation og dataproblemer 2. november 2004.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Per Printz Madsen 1 Linux kernen Monolithic kernel Support for dynamiske moduler Få kerne tråde Preemptive.
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
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.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Datalogi 1F: Multiprogrammering[3] 1 Planen for idag Kerner uden afbrydelser (KB4 kap. 6): –akernen: kerne med decentralt processkift –bkernen: kerne med.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
DAIMIProgrammering af Store Systemer1 Concurrency i Java – Samarbejdende tråde.
Indledende Programmering Uge 6 - Efterår 2006
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Quiz Uge 2 – mandag.
Præsentationens transcript:

Multiprogrammering[2] Datalogi 1F Forår 2003 Synkronisering og grænseflader Jørgen Sværke Hansen

Datalogi 1F: Multiprogrammering[2] 2 Planen for idag Synkronisering: –Tidsafhængighed i multiprogrammer –Semaforer: Binære semaforer Tælle semaforer … Grænseflader: –Hvordan implementeres systemkald

Datalogi 1F: Multiprogrammering[2] 3 Tidsafhængighed i multiprogrammer proces læser { do { læslinie(indlinie); memcpy(udlinie, indlinie, 80); } while(TRUE); } proces skriver { do { udskriv(udlinie); } while(TRUE); } Inddata: rødbeder snabelsko Uddata: rødbeder snabelsko ……… Uddata: snabelsko ………… Uddata: rødbelsko snabelsko ………

Datalogi 1F: Multiprogrammering[2] 4 Producent-konsument: nu med tæller item nextProduced; while (1) { while (counter == BUFFER_SIZE) yield(); /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; counter++; } item nextConsumed; while (1) { while (counter == 0) yield(); /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; }

Datalogi 1F: Multiprogrammering[2] 5 Opdatering af delt lager Ændringerne af counter skal ske udeleligt (uden afbrydelser) Kaldes også atomisk counter opdatering optræder som én operation på højniveau sprogniveau MEN ikke nødvendigvis i den eksekverbare kode

Datalogi 1F: Multiprogrammering[2] 6 Tælleropdateringer på assemblerniveau “count++” kan være implementeret som: register1 = counter register1 = register1 + 1 counter = register1 “count--” kan være implementeret som: register2 = counter register2 = register2 – 1 counter = register2 Ved processkift kan de to operationer sammenflettes

Datalogi 1F: Multiprogrammering[2] 7 Sammenfletning af tælleropdateringer Antag at counter har værdien 5. En sammenfletning af assemblerinstruktionerne for producent og konsument kunne være: producent: register1 = counter (register1 = 5) producent: register1 = register1 + 1 (register1 = 6) konsument: register2 = counter (register2 = 5) konsument: register2 = register2 – 1 (register2 = 4) producent: counter = register1 (counter = 6) konsument: counter = register2 (counter = 4) Værdien af count kan være enten 4 eller 6, men den rigtige værdi er 5.

Datalogi 1F: Multiprogrammering[2] 8 Datakapløb Datakapløb opstår, når resultatet af et multiprogram afhænger af afviklingsrækkefølgen af processerne i multiprogrammet Opdateringer til delt lager skal foregå udeleligt: –Kritisk region sikrer det Men det kan også være nødvendigt at synkronisere udførselshastigheden af de forskellige processer: –eks:.: snabelsko, snabelsko, snabelsko

Datalogi 1F: Multiprogrammering[2] 9 Semaforer Processer kommunikerer ved at sende signaler til hinanden Dijkstra foreslog semaforer: –Variable der tæller antallet af gange et signal er sendt men ikke modtaget (den optræder som buffer) –Operationen signaler(semafor) der sender et signal til semafor –Operationen vent(semafor), der venter på et signal (hvis intet signal er bufret, sættes processen til at vente) Buffer- og ventemekanismerne gør synkroniseringen tidsuafhængig

Datalogi 1F: Multiprogrammering[2] 10 Semaforer: forhold Semaforer skal udføres udeleligt: –Atomiske maskinkodeoperationer: test and set –Implementeret i kerne: Beskyttet mod afbrydelser ( swpipl ) Aktiv venten kan undgås idet en proces kan suspenderes mens den venter FIFO ventemekanisme kan forhindre udsultning

Datalogi 1F: Multiprogrammering[2] 11 Forskellige slags semaforer I dag findes et utal af semafortyper: –Binære semaforer –Tællesemaforer (Dijkstra’s oprindelige ide) –Beskedsemaforer –Postkassesemaforer –Trafiklyssemaforer

Datalogi 1F: Multiprogrammering[2] 12 Binær semafor: tilstande Class BinærSem { enum Tilstand {åben, låst} tilstand; kø prockø; intventende; public: void BinærSem(Tilstand t=åben) { tilstand = t; ventende = 0; } void vent(); void signaler(); };

Datalogi 1F: Multiprogrammering[2] 13 Binære semafore: operationer void BinærSem::vent() { if(tilstand==åben) tilstand=låst; else { ventende++; ; } void BinærSem::signaler() { if(tilstand==låst) if(ventende > 0) { ; ventende--; } else tilstand=åben; }

Datalogi 1F: Multiprogrammering[2] 14 Binære semaforer:anvendelse Sikring af udelelig adgang til delt data: –Binær semafor hedder ofte MUTEX (mutual exclusion) –Som eksempel: læser og skriver processerne fra slide 1

Datalogi 1F: Multiprogrammering[2] 15 skriver skrevet læst læser Binær semafor: eksempel proces læser { do { læslinie(indlinie); vent(skrevet); memcpy(udlinie, indlinie, 80); signaler(læst); } proces skriver { do { vent(læst); udskriv(udlinie); signaler(skrevet); } while(TRUE); } læser klar læserskriver

Datalogi 1F: Multiprogrammering[2] 16 Tællesemafor: tilstand class TælleSem { inttæller; kø prockø; intventende; public: void TælleSem(int c) { tæller = c; ventende = 0; } void vent(); void signaler(); };

Datalogi 1F: Multiprogrammering[2] 17 Tællesemafor: operationer void TælleSem::vent() { if(tæller > 0) tæller--; else { ventende++; ; } void TælleSem::signaler() { if(ventende > 0) { ; ventende--; } else tæller++; }

Datalogi 1F: Multiprogrammering[2] 18 Tællesemafor: anvendelse Administration af en samling ens ressourcer: –Frekvensbånd ved trådløs transmission –Jobskedulering på klyngecomputer –Uddeling af buffere Begrænsning af antallet af aktive processer i en region: –Begrænsning af multiprogrammeringsgraden i en applikation

Datalogi 1F: Multiprogrammering[2] 19 Beskedsemafor: tilstand class BeskedSem { købufkø; køprockø; intventende; public: void BeskedSem() { ventende = 0; } buf *vent(); void signaler(buf *); };

Datalogi 1F: Multiprogrammering[2] 20 Beskedsemafor: operationer buf *BeskesSem::vent() { if(!bufkø.tom()) return bufkø.frigiv(); else { ventende++; ; } void BeskedSem::signaler(buf *buffer) { if(ventende > 0) { aflever(buf); ; ventende--; } else bufkø.tilkø(buf); }

Datalogi 1F: Multiprogrammering[2] 21 Beskedsemafor: anvendelse Udveksling af data mellem processer, f.eks. producent-konsument forhold: –To beskedsemaforer: FRIE: indeholder frie elementer FULDE: indeholder fulde elementer –Producent: Venter på frie elementer og signalerer med fulde elementer –Konsument: Venter på fulde og signalerer med frie

Datalogi 1F: Multiprogrammering[2] 22 Producent-konsument process læser { do { lbuf = FRIE.vent(); læslinie(*lbuf); FULDE.signaler(lbuf); } while(TRUE); } process skriver { do { sbuf = FULDE.vent(); udskriv(*sbuf); FRIE.signaler(sbuf); } while(TRUE); } FULDE FRIE læser skriver buf for(i=0; i < N; i++) { nbuf = alloker(sizeof(buf)); FRIE.signaler(nbuf); } buf

Datalogi 1F: Multiprogrammering[2] 23 Postkassesemafor: tilstand class PostkasseSem { køprockø; intventende; public: void PostkasseSem() { ventende = 0; } void vent(); void signaler(); };

Datalogi 1F: Multiprogrammering[2] 24 Postkassesemafor: operationer void PostkasseSem::vent() { ventende++; ; } void PostkasseSem::signaler() { while (ventende > 0) { ; ventende--; }

Datalogi 1F: Multiprogrammering[2] 25 Postkassesemafor: anvendelse En proces kan give en gruppe processer besked om at en betingelse er opfyldt: –Der er kommet en afbrydelse fra uret –Delt data er blevet opdateret: Check om tidsstempel er det samme som sidste gang Hvis ja, vent på opdatering –Aftensmaden er klar Uafhængig af antallet af ventende processer

Datalogi 1F: Multiprogrammering[2] 26 Trafiklyssemafor: tilstand class TrafiklysSem { enum Farve {rød, grøn} farve; køprockø; intventende; public: void TrafiklysSem (Farve startfarve=grøn) { farve = startfarve; ventende = 0; } void vent(); void start(); void stop(); };

27 Trafiklyssemafor:operationer void TrafiklysSem::vent() { if(farve==rød) { ventende++; ; } void TrafiklysSem::start() { farve=grøn; while(ventende > 0) { ; ventende--; } void TrafiklysSem::stop() { farve= rød; }

Datalogi 1F: Multiprogrammering[2] 28 Trafiklyssemafor: anvendelse Signal om at en proces/ressource er i en bestemt tilstand: –Lavprioritetsprocesser har adgang til netværk udenfor spidsbelastningstidspunkter Timerstyret proces starter og stopper Lavprioritetsprocesser venter

Datalogi 1F: Multiprogrammering[2] 29 Valg af semafortype Vi har set at de forskellige semafortyper egner sig til forskellige opgaver Skal en kerne understøtte alle semafortyper? Ikke nødvendigvis: –Simpel kerne = færre fejl –En given semafor kan bruges til at konstruere andre semaforer med (dvs. en semafortype er nok)

Datalogi 1F: Multiprogrammering[2] 30 Tællesemafor ud fra binær semafor Ide: –Vi skal bruge en kø af ventende processer: Dette er allerede understøttet af binære semaforer –Hvordan ved vi hvor mange signaler, der ikke er modtaget? Vi skal bruge en tæller –Tælleren skal opdateres udeleligt: vi har brug for en mutex semafor Hvordan ser vent og signaler så ud?

Datalogi 1F: Multiprogrammering[2] 31 Tællesemafor: operationer void TælleSem::vent() { LOCK.vent(); MUTEX.vent(); tæller--; if(tæller <> 0) LOCK.signaler(); MUTEX.signaler(); } void TælleSem::signaler() { MUTEX.vent(); if(tæller == 0) LOCK.signaler(); tæller++; MUTEX.signaler(); }

Datalogi 1F: Multiprogrammering[2] 32 Grænseflader til kernen Kernekald Parameteroverførsel Repræsentation af ressourcer

Datalogi 1F: Multiprogrammering[2] 33 Kernekald Et brugerprogram ønsker at kalde kernefunktionen signal(semafor) Hvilken adresse specificeres i den eksekverbare kode i brugerprogrammet?

Datalogi 1F: Multiprogrammering[2] 34 Statisk lænkning Kerne og brugerprogrammer oversættes hver for sig, men lænkes sammen inden brug: –Kerne og brugerprogrammer startes som et samlet hele –Kan f.eks. bruges i indlejrede systemer: Mobiltelefoner Vaskemaskiner Netværksroutere –Kernekald er blot alm. procedurekald == lave omkostninger

Datalogi 1F: Multiprogrammering[2] 35 Dynamisk lænkning Oversættelse af kernen resulterer i en symboltabel, der senere kan anvendes ved oversættelse/lænkning af brugerprogrammer: –Brugerprogrammer skal genlænkes ved ændringer i kernen Dynamic Link Libraries (DLL’er): –Kald sker via en stubprocedure, der finder den rigtige adresse på køretidspunktet –Stubprocedurer kan evt. overskrives

Datalogi 1F: Multiprogrammering[2] 36 Faste, absolutte adresser Hvert kernekald har en fast defineret adresse, der er specificeret i f.eks. en headerfil: –Besværligt at arbejde med for kerneprogrammører

Datalogi 1F: Multiprogrammering[2] 37 Indirekte kernekald De absolutte adresser gemmes i en tabel, og kernekaldene foretages ved først at slå op i tabellen for at finde adressen på et kernekald: –Tabellens adresse er fast

Datalogi 1F: Multiprogrammering[2] 38 Maskinelstøttede systemkald I det foregående er det antaget lager er delt mellem kerne og brugerprogrammer Dette er sjældent tilfældet: –Kernen beskyttes via privat adresserum Systemkald via speciel maskininstruktion, der samtidig skifter privilegieniveau: –PAL kaldet call_pal PAL_callsys på alphaerne Fungerer typisk som indirekte kernekald, altså via en hoptabel

Datalogi 1F: Multiprogrammering[2] 39 Alpha eksempel Speficikation af handler: lda a0, syscallHandler lda a1, 5 call_pal PAL_wrent Foretag et systemkald: lda a0, CALLSYS_WRITE call_pal PAL_callsys Specifikation af hoptabel: enum SysCallId { CALLSYS_WRITE, CALLSYS_READ}; Void (*jumpTable[]) () = { write, read }; Handler: Void syscallHandler (SysCallId id) { (*jumpTable[id])()}

Datalogi 1F: Multiprogrammering[2] 40 Parameteroverførsel Parametre overføres via: –registre (at foretrække): Alphaerne bruger a0 – a5 –eksplicit i programkoden: parametrene placeres i den eksekverbare kode efter kernekaldet Returadressen skal ændres til at være første instruktion efter parametrene Systemkald indkapsles i køretidsbiblioteker, der bl.a. håndterer typecheck: void writechar(char ch) { callsys (SYS_WRITE, ch); }

Datalogi 1F: Multiprogrammering[2] 41 Parameteroverførsel på Alpha’erne line:.asciiz ”Skriv mig ud!”.... lda a0, CALLSYS_WRITE lda a1, line call_pal callsys....

Datalogi 1F: Multiprogrammering[2] 42 Køretidsbiblioteker Systemkald indkapsles i køretidsbib- lioteker, der bl.a. håndterer typecheck: callsys:call_pal PAL_callsys ret (ra) unsigned long callsys (SysCallId...); void writechar(char ch) { callsys (SYS_WRITE, ch); }

Datalogi 1F: Multiprogrammering[2] 43 Kerneressourcer vs. brugerressourcer Ved kernekald kan brugerprogrammer overgive brugerressourcer til kernen: –Reference til buffer, der skal udskrives (en adresse i brugerprogrammets hukommelse og en længde) Men kernekald opererer også på systemressourcer, fx: åbne filer, semaforer Disse systemressourcer skal beskyttes af kernen, og kan derfor ikke placeres i brugerprogrammernes hukommelse Hvordan repræsenteres disse i brugerprogrammet?

Datalogi 1F: Multiprogrammering[2] 44 Håndtag til systemressourcer Når et brugerprogram reserverer/opretter/får adgang til en systemressource, modtager den en nøgle (eng.: handle) Ved efterfølgende brug af ressourcen præsenteres kernen for nøglen som identifikation Afbildningen af nøgler til ressourcer sker per proces, dvs. man kan ikke gætte en anden proces’ nøgler Nøgleafbildningen er typisk kædet sammen med proces kontrolblokken Nøglen er typisk et heltal

Datalogi 1F: Multiprogrammering[2] 45 Opsummering Synkronisering af multiprogrammer: –Udelelige operationer –Forskel på højniveau operationer og lavniveau –Semaforer Generelt synkroniseringsmekanisme Ingen aktiv venten Kernegrænseflade: –Hvordan implementeres systemkald

Datalogi 1F: Multiprogrammering[2] 46 Næste uge På onsdag stilles G1: –Lidt assemblerprogrammering –Modifikation af eksisterende kerne samt aflusning på kernemaskinerne –Instruktorer udleverer T-kort i næste uge Opgaverne i uge 8: –Træningsopgaver i Alpha assembler og C++ –Java => C++ tutorial på kursushjemmesiden: Især om pointere og hukommelse Øvelser –Anden øvelsesgang i uge 8 og første øvelsesgang i uge 9 er erstattet af instruktorvagter

Datalogi 1F: Multiprogrammering[2] 47 Kilder Disse slides er baseret på indholdet af Datalogi 1F kursusbøgerne samt ”Operating System Concepts” 6. udgave