Jonny Karlsson 2.4.2007 PROCESSPROGRAMMERING Föreläsning 8 (2.4.2007) Innehåll: -Exekveringstrådar.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 1 ( ) Innehåll: -Introduktion av kursen -Program och processer -Fildeskriptorer -Filhantering.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Programstruktur: C för enchipsdatorer
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar -Signaler -Signalhantering.
Funktioner och programorganisation
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Föreläsning 1.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik K och Media
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kap 3 & 4: Processer & trådar.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 7: Deadlocks.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstruktor Ser till att objektets data är korrekt initierade MinKlass::MinKlass(); MinKlass::MinKlass(int.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 7 ( ) Innehåll: -Datakanaler och datakanalpar -Kommunikation på samma dator med datakanaler.
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: -Programmerade rörledningar -Namngivna rörledningar.
William Sandqvist C:s minnesmodell.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: - Förening av dataströmmar - Signaler - Signalhantering.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: -Producent – konsument problemet -Förmedling av fildeskriptorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: -IPC: Semaforer -Exekveringstrådar (threads) -Introduktion till Java.
1 Windows programmering Programmering med Threads Borland C++ Builder 4 Modsoft Ab Kent Westerholm.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 12 ( ) Innehåll: -Datakanaler och datakanalpar -Kommunikation på samma dator med datakanaler.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 6: Process- synkronisering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 11 ( ) Innehåll: - Förmedling av fildeskriptorer.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Processtruktur -Processklyvning och kodbyte -Avslutning av processer.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Processtruktur -Processklyvning och kodbyte -Avslutning av processer.
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 5 ( ) Innehåll: IPC: meddelandeköer IPC: delat minne.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
Föreläsning 4 Klasser Och Objekt.
INTRODUKTION TILL PROGRAMMERING
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
F6 - Pekare 1 Programmeringsteknik, 4p vt-00 Pekare & adresser Alla variabler är knutna till en viss adress i minnet int i; adressen till denna fås med.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 7 ( ) Innehåll: -IPC: Meddelandeköer.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 9 ( ) Innehåll: - IPC: Semaforer.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: - Förening av dataströmmar -Blockerande I/O multiplexering -Icke blockerande.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
Programmeringsteknik för K och Media
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Fildeskriptorer -Filhantering -Felhantering.
Föreläsning2 Operativsystem.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( )‏ Innehåll:  Att designa parallella program - manuell vs. automatisk parallellisering.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
Anders Sjögren Funktioner något in och något annat ut.
Python.
Presentationens avskrift:

Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar

Jonny Karlsson Exekveringstrådar Exekveringstrådar (POSIX-THREADS) är en lättviktsvariant av processer. Är egentilgen inga processer utan varje tråd hör till en process Alla trådar exekveras parallellt. Skillnad mellan trådar och processer: En process består av en programdel, en datadel och en mängd tillgängliga resurser (öppna deskriptorer, reserverat minne o.s.v.). En tråd består av en ”uppgift” (är oftast en funktion som utför trådens arbete) och delar på samma data och resurser som andra trådar. P.g.a. att trådarna delar på gemensamma resurser och att de inte kör ett helt program är de resurssnåla, både CPU-mässigt och minnesmässigt. Tiden att skapa en ny tråd är obetydlig, medan en processklyvning kan ta en viss tid. (Processklyvning kopierar ju all data och programkod till den nya processen)

Jonny Karlsson Att skapa en ny tråd #include #include pthread_create(&a_thread, a_thread_attribute, (void *) &thread_function, (void *) pthread_create(&a_thread, a_thread_attribute, (void *) &thread_function, (void *) &some_argument) &some_argument) a_threadEn pekare av typen pthread_t som pekar på en variabel där trådens ID sparas a_thread_attributeExtra argument, oftast används NULL thread_functionEn pekare på den funktion som skall utföra trådens arbete some_argumentEn eventuell parameter till trådens funktion

Jonny Karlsson Att fördröja en tråd Funktionen sleep() kan ej användas eftersom denna funktion fördröjer en hel process genom att försätta processen i pause() läge. Eftersom alla trådar är en del av samma process betyder det att samtliga trådar komer att fördöjas. Det rätta sättet att fördröja endast en tråd är följande: struct timespec delay; delay.tv_sec = 2; delay.tv_nsec = 0; nanosleep(&delay, NULL);

Jonny Karlsson Att avsluta en tråd Om man vill avsluta en tråds arbete före huvudtråden bör tråden anropa funktionen pthread_exit(): #include #include void pthread_exit(void *retval); retvalTrådens returvärde

Jonny Karlsson Mutex-semaforer Typiskt för processer med flera trådar är att de jobbar indivduellt med lokalt skapade variabler och förenar resultatet via globala variabler Det är därför viktigt att de gemensamma resurserna skyddas med semaforer. De gemensamma resurserna kan t.ex. skyddas med POSIX-trådar som definierar färdigt programmerade binära semaforer, s.k. mutex-semaforer. Det finns fyra olika funktioner för hantering av mutex-semaforer: pthread_mutex_init()Initialisera mutex pthread_mutex_lock()Lås mutex pthread_mutex_unock()Lås upp mutex pthread_mutex_destroy()Radera mutex En ny mutex deklareras med: pthread_mutex_t mutex; Se man-fil för närmare info.

Jonny Karlsson Heltalssemaforer Följande färdigt definierade funktioner kan användas för att hantera heltalssemaforer: sempaphore_init()Initialisering semaphore_up()Ökar semaforvärdet semaphore_down();Minskar semaforvärdet semaphore_destroy();Raderar semafor semaphore_decrement();Räknar ner (blockerar ej) Alla funktioner tar en parameter vilken är en pekare på ett semaphore objekt

Jonny Karlsson En tråd väntar på en annan En tråd kan vänta på en annan tråd med funktionen pthread_join(): pthread_t some_thread; void *exit_status; pthread_join(some_thread, &exit_status); Funktionen är ungefär samma som funktionen wait() vid inväntning av avslutning av barnprocesser. Funktionen pthread_join() har en viss instabiliet: Ifall tråden som man väntar på redan avslutats kan funktionen skapa ett felmeddelande i stället för att enbart direkt returnera.

Jonny Karlsson Övriga användbara trådhanteringsfunktioner pthread_yield()Informerar processhanteraren att tråden är villig att uppoffra en del av sin exekveringstid. Funktionen tar inga parametrar och kan bidra till att övringa trådar får mera exekveringstid. pthread_self()Returnerar innevarande tråds ID nummer. pthread_detatch()Informerar Kerneln om att trådens exit-status inte komer att behövas av någon efterföljande pthread_join() funktion. Detta ökar trådarnas prestanda.