PROCESSPROGRAMMERING Föreläsning 1 (31.8.2010)‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.

Slides:



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

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Klasser och objekt.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 3 Johan Hjerling
Klassarv och inkapsling
Metoder i java Det finns två typer av metoder i java
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
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.
i olika programmeringsspråk
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Klasser och objekt Klasser, objekt och instansvariabler
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
int res2=Math.max(tal1,tal2);
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Polymorfism.
Programmeringsteknik för Media1 & K1
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Att designa parallella program - manuell vs. automatisk parallellisering - Java och ”multi-core”
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Trådsäkerhet - Memory consitency error - Guarded blocks - Lock Objects - Immutable Objects -
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Jonny Karlsson GRUNDKURS I PROGRAMMERING MED JAVA Föreläsning 9 ( ) INNEHÅLL: -Tabeller av klassobjekt -Användning av Java API specifikationen.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous Innehåll Del 1-trådar Del 2-URLer Del 1: Trådar Föreläsning 8.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( )‏ Innehåll:  Att designa parallella program - manuell vs. automatisk parallellisering.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
RMI Av: Josefina & Sarah DS04.
Presentationens avskrift:

PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering i Java: med trådar (threads) Lågnivåprogrammering av trådobjekt Introduktion till Java Applets

Introduktion till paralellprogrammering Traditionellt har man skrivit programkod för seriell processering (serial computing)‏ Planerade för att köras på en dator med en CPU Planerade för att köras på en dator med en CPU Ett problem spjälks upp i en diskret serie av instruktioner Ett problem spjälks upp i en diskret serie av instruktioner Instruktioner exekveras en efter en Instruktioner exekveras en efter en Endast en instruktion kan exekveras åt gången Endast en instruktion kan exekveras åt gången

Introduktion till paralellprogrammering I sin enklaste form är parallell processering (parallell computing) samtidig användning av multipel “hårdvara” för att lösa ett problem. Parallellprogrammering lämpar på datorer med multipla CPUn Parallellprogrammering lämpar på datorer med multipla CPUn Ett problem spjälks upp i diskreta delar som kan lösas samtidigt Ett problem spjälks upp i diskreta delar som kan lösas samtidigt Varje del spjälks upp vidare i en serie av instruktioner (som i seriell progr.)‏ Varje del spjälks upp vidare i en serie av instruktioner (som i seriell progr.)‏ Instruktioner från varje del exekveras samtidigt på olika CPUn Instruktioner från varje del exekveras samtidigt på olika CPUn

Introduktion till paralellprogrammering Paralellprogrammering lämpar sej väl inte endast på en dator med flere CPUn utan också över ett nätverk dit flere datorer är kopplade eller en kombination av båda

Varför paralellisering av program? Viktigaste orsakerna: Spara tid Spara tid Lösa större problem Lösa större problem Möjliggöra “samtidighet” i program Möjliggöra “samtidighet” i program Andra orsaker kan vara Utnyttja datorressurser i ett nätverk Utnyttja datorressurser i ett nätverk Kostnadsbesparing - använda multipla billiga datorresurser i stället för att satsa på en superdator Kostnadsbesparing - använda multipla billiga datorresurser i stället för att satsa på en superdator

Framtiden för parallellisering Trenden för framtiden tyder på Ännu snabbare nätverk Ännu snabbare nätverk Distribuerade system Distribuerade system Datorarkitekturer med multipla processorer (gäller även vanliga bordsdatorer)‏ Datorarkitekturer med multipla processorer (gäller även vanliga bordsdatorer)‏ ---> PARALLELLISERING ÄR FRAMTIDEN INOM DATATEKNIK!!!!

Olika typer av parallella program Parallellisering kan klassificeras i fyra olika typer (enligt Flynn's klassiska taxonomi): SISD (Single Instruction, Single Data)‏ SISD (Single Instruction, Single Data)‏ SIMD (Single Instruction, Multiple Data)‏ SIMD (Single Instruction, Multiple Data)‏ MISD (Multiple Instruction, Single Data)‏ MISD (Multiple Instruction, Single Data)‏ MIMD (Multiple Instruction, Multiple Data)‏ MIMD (Multiple Instruction, Multiple Data)‏ För mera info se

Paralellprogrammering i Java m.h.a. trådar Det enklaste sättet att åstadkomma parallell exekvering och “samtidighet” (concurrency) i ett Java-program är att använda trådar (threads)‏ Trådar möjliggör att multipla strömmar av ett programs flöde kan existera inom en process Alla trådar inom en och samma process delar resurser som minne, (file handlers) osv. men en tråd kan däremot ha egna lokala variabler, stackar osv. Flere trådar inom samma program kan exekveras samtidigt på multipla processorer (CPUn)‏

Fördelar med trådar Förbättrar prestandan hos enskilda program om trådar används på rätt sätt I multiprocessor datorer I multiprocessor datorer Även i datorer med en processor (p.g.a. alternering, se tavlan!)‏ Även i datorer med en processor (p.g.a. alternering, se tavlan!)‏ Förenklad hantering av asynkrona händelser Tänk dej t.ex. en Web server som skall klara av att sätta upp HTTP-förbindelser med flere Web klienter samtidigt! Tänk dej t.ex. en Web server som skall klara av att sätta upp HTTP-förbindelser med flere Web klienter samtidigt! Varje klientförbindelse kan startas upp i en egen tråd på Web servern Varje klientförbindelse kan startas upp i en egen tråd på Web servern “Mottagligare” användargränssnitt

Trådprogrammering i Java Trådar existerar i alla processer av Java program som exekveras. Alla processer har åtminstone en huvudtråd. Program med flera samtidigt exekverande trådar är viktig eganskap i Java platformen. Huvudtråden (main thread) kan vid behov starta upp flera paralella trådar.

Trådprogrammering i Java Varje tråd i Java är associerad med en instans av klassen Thread. Det finns i Java två strategier för att använda Thread objekt för att göra program med flera samtidigt exekverande trådar: Lågnivå programmering av trådobjekt Hantering av trådobjekt på hög nivå m.h.a ”executors” Den förstnämnda strategin är baserad på en lågnivå ”API” som har varit en del av Java sedan första början. Denna API lämpar sej bra för programmering av enkla ”multiprocessing” program. För större program med massor av samtidgt exekverande trådar lämpar sej ”executors”- modellen bättre. Denna metod har funnits fr.o.m. JDK Version 5.0. Vi börjar med llågnivå modellen eftersom den är lättare att förstå!

Att definiera och starta en tråd En applikation skapar en instans av klassen Thread och definierar den kod som skall köras i en egen tråd. Det finns två sätt att göra detta på. Metod1: public class TradTest implements Runnable { public void run() public void run(){ System.out.println("Hej! Jag är en trad som kors parallelt med huvudtraden!"); } public static void main(String args[]) { Thread th = new Thread(new TradTest()); th.start(); System.out.println("Hej! Jag är huvudtraden!"); } }

Att definiera och starta en tråd I koden på föregående sida implementerar huvudklassen ett objekt av gränssnittet Runnable. Gränssnittet Runnable definierar en metod run() dit det är meningen att man skall placera den kod som skall exekveras i en egen tråd. I huvudmetoden startar man upp en ny tråd genom att skapa ett nytt objekt av klassen Thread via vilket man anropar metoden start(). Runnable- objektet ges som parameter till konstruktorn för klassen Thread().

Att definiera och starta en tråd Metod2: public class TradTest extends Thread { public void run() public void run() { System.out.println("Detta ar en paralell trad!"); System.out.println("Detta ar en paralell trad!"); } public static void main(String args[]) public static void main(String args[]) { (new TradTest()).start(); (new TradTest()).start(); System.out.println("Detta är huvudtraden!"); System.out.println("Detta är huvudtraden!"); }}

Att definiera och starta en tråd I koden på föregående sida nedärvs klassen Thread i huvudklassen. Klassen Thread implementerar gränsnittet Runnable och behöver därför inte implementeras i det egna Java-programmet. Från huvudmetoden startar man upp en ny tråd genoma att skapa ett nytt Thread objekt via vilket man anropar metoden start().

Att definiera och starta en tråd VILKEN METOD ÄR BÄTTRE??? Metod 2 är enklare men mer begränsande eftersom en klass som hanterar flera samtidiga trådar måste vara en underklass av klassen Thread. I den här kursen kommer vi att koncentrera oss på metod1.

Klassen Thread Exempel på metoder som kan användas via klassen Thread är: start() – Startar en ny tråd stop()- Stänge en tråd sleep()- Pausar en tråd för en viss tid Detaljerad information om klassen Thread med alla dess egenskaper hittas i Java API dokumentationen: