1. előadás
Kozsik Tamás Oktató
Kezdés: 10:
Követelmények
- 20 pont Gyak röpzh (2 pont x 10 hét)
- 15 pont Beadandó (10-11. hét körül kerül ki)
- Év végén zárthelyi:
- 50 pont Gyak ZH
- 15 pont Elm ZH
Miért is akarunk ilyesmiről tanulni?
Párhuzamosság => a program egyszerre több dolgot is csinálhat
Hardveres:
- Többmagos processzor
- Több processzor
Szoftveres:
- Egy processzor több programot futtathat (process)
- Egy program több szálat futtathat (thread)
Cél:
- hatékonység növelése
- több felhasználó kiszolgálása
- program logikai tagolása
- pl. egy szál a UI-ért, egy a hálozati kommunikációhoz
Kommunikációs modellek
- megosztott (shared) memória
- Több processzor, ugyan az a memóriaterület
- elosztott (distributed) memória
- Több processor, saját memóriával
- kommunikációs csatornák, üzenetküldés
Mit tudunk csinálni, ha kevesebb processzorunk van, mint folyamatunk?
A processzorokat kapcsolgatjuk a folyamatok között, mindegyik csak kis ideig futna fut
Párhuzamosság egy folyamaton belül
- Végrehajtási szálak
- Pehelysúlyú (lightweight, kevés költségű)
- közös memória (megosztott jelleg)
Szálak nehézségei
- nemdeterminisztikusság
- nehéz átlátni a halandó embernek
- kezelendő
- ütemzés
- interferencia
- szinkronizáció
- kommunikáció
- nehéz reprodukció
Szálak a Java™️-ban
beépített támogatás: java.lang
- Nyelvi fogalom:
- Támogató osztály:
java.lang.Thread
- a főprogram egy végrehajtási szál
- további szálak hozhatók létre:
Threadosztály példányosítása start()metódussal elindítható a szál- A szál programja a
run()metódusában van
public class Hello {
public static void main(String args[]){
(new MyThread()).start();
}
}
public class MyThread extends Thread {
@Override
public void run(){
while (true){
System.out.println("Hi!");
}
}
}
Ütemzési stratégiák
- Run to completion: egy szál addig fut, amíg csak lehet (hatékonyabb)
- Preemptive: időosztásos ütemzés (igazságosabb)