V 1.0 OE-NIK HP 1 Haladó Programozás A párhuzamos végrehajtás alapjai Folyamatok Szálkezelés alapok.

Slides:



Advertisements
Hasonló előadás
4. alkalom – Hálózat Kezelés
Advertisements

Osztály leszármaztatás
Készítette: Kun Béla.  Operációs rendszernek nevezzük a számítástechnikában a számítógépeknek azt az alapprogramját, mely közvetlenül kezeli a hardvert,
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Operációs Rendszerek I.
Operációs rendszerek Bevezetés.
Operációs rendszerek Beállítások.
Hálózati architektúrák
Operációs Rendszerek II. 5. előadás március 05.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Haladó Programozás Parallel.For()
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Bevezetés a Java programozásba
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Ember László Damn Small Linux Microsoft VPC környezetben.
Microsoft Windows A Windows fejlődése, általános jellemzése – 2. dia
Az operációs rendszerek
Java programozási nyelv 3. rész – Osztályok I.
C# tagfüggvények.
C# tagfüggvények.
Krizsán Zoltán.  Ha az algoritmus sokáig dolgozik,  de el akarjuk kerülni a „fagyást”.  Kisebb a költsége, mint az új folyamatnak.  Programozás szempontjából.
V 1.0 OE-NIK HP 1 Haladó Programozás BackgroundWorker Szálkezelés + szinkronizáció.
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
1 Operációs rendszerek Az NT folyamatok kezelése.
1 Operációs rendszerek Az ütemezés megvalósítása.
1 Folyamatok modellezése az operációs rendszerekben Operációs rendszerek.
1 Operációs rendszerek Signal kezelés. 2 SIGNAL kezelés Egyszerű folyamatok közötti kommunikációs (IPC – Inter Process Communication) megoldás. A signal.
V 1.0 OE-NIK HP 1 Haladó Programozás Folyamatok Szálkezelés: Parallel.For.
V 1.0 ÓE-NIK, Programozás I. A Microsoft Visual Studio 2010 használata.
Az operációs rendszereK
A Unix operációs rendszer Előadást tarja: Lázár András.
ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető.
Operációs rendszer.
Az operációs rendszer Az operációs rendszer a számítógépet működtető szoftver, amely a számítógép indulásakor azonnal betöltődik a számítógép memóriájába:
Bevezetés a PRADO keretrendszerbe Kardos Gergely.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Az operációs rendszerek feladata, fajtái, felépítése
Bevezetés az operációs rendszerek világába TMG SZK.
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Java programozási nyelv Adatbekérés konzolról
A gyakorlatok munkakörnyezete
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Enterpise JavaBeans Simon Balázs
Szoftverek.
Óravázlat Készítette: Kucsera Mihály és Toldi Miklós
Haladó Programozás System.Threading.Tasks.Task OE-NIK HP.
Ismerkedjünk tovább a számítógéppel
V 1.0 OE-NIK HP 1 Haladó Programozás Folyamatok Szálkezelés alapok.
BIOLÓGUS INFORMATIKA 2008 – 2009 (1. évfolyam/1.félév) 3. Előadás.
Bevezetés az informatikába 5. előadás
2. Operációs rendszerek.
DLL használata és készítése Feladat
A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. Számítógép- hálózatok dr. Herdon Miklós dr. Kovács György Magó Zsolt.
V 1.0 OE-NIK HP 1 Haladó Programozás Szálkezelés + szinkronizáció.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Operációs rendszerek Az operációs rendszerek működésének alapfogalmai.
Párhuzamos programozás
Neumann János Informatikai Kar
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hálózati architektúrák
Web programozás és haladó fejlesztési technikák Folyamatok és szálak
Thread és Task.
Folyamatok.
Web programming and advanced development techniques
Előadás másolata:

V 1.0 OE-NIK HP 1 Haladó Programozás A párhuzamos végrehajtás alapjai Folyamatok Szálkezelés alapok

V 1.0 OE-NIK HP 2 Haladó Programozás A párhuzamos végrehajtás alapjai Folyamatok Szálkezelés alapok

V 1.0 A párhuzamos végrehajtás alapjai A Neumann-architektúrára épülő számítógépek a programokat sorosan hajtják végre Több program egyidejű végrehajtásához kell: –Több processzor, több mag –Hyperthreading / hasonló technológiák –Időosztás A végrehajtás alatt álló programok egymástól való elszigetelése is szükséges –Folyamatok (processzek): magas szintű elszigetelés Egy program egy futó példánya által használt erőforrások halmaza Külön memóriaterület Hiba esetén csak a hibázó folyamat sérül (se más processzek, se az OS) Nincs egyszerű processzközi kommunikáció –Szálak Folyamatokon belüli párhuzamosítás Részben megosztott memóriaterület 3 OE-NIK HP P 1 folyamat T 11 szál T 12 szál T 13 szál

V 1.0 Illusztráció: az időosztás elve P 1 folyamat Futó állapot Futó állapot Futásra kész vagy várakozó állapot Állapotmentés (PCB 2 ) Állapotbetöltés (PCB 1 ) Állapotmentés (PCB 1 ) Állapotbetöltés (PCB 2 ) Megszakítás vagy rendszerhívás Futó állapot Futásra kész vagy várakozó állapot Futásra kész vagy várakozó állapot P 2 folyamat Megszakítás vagy rendszerhívás Original image © David A. Solomon and Mark Russinovich 4 OE-NIK HP Megj: az ábra általános (DOS/Unix/Windows) és egyszerűsített, mai Windows-ok esetén a párhuzamosítás alapegysége a szál

V 1.0.NET folyamatok, szálak, AppDomain A.NET keretrendszerben a folyamatok megfelelnek az operációs rendszer folyamatainak –System.Diagnostics.Process, System.Diagnostics.ProcessStartInfo A.NET szálak (jelenleg) megfelelnek az operációs rendszer szálainak –De elméletileg egy valódi szálon a keretrendszer több szála is futhat(na) A.NET a folyamatokon belül egy további szintet, az ún. alkalmazástartományt („application domain”) is meghatároz –A felügyelt kódú programokat a keretrendszer futtatás közben is ellenőrzi, ezért ezek nem képesek egymást negatívan befolyásolni –Így viszont nem feltétlenül szükséges külön folyamatként futtatni őket –Sebesség és memóriaigény szempontjából nagy előny (folyamatok létrehozása, nyilvántartása és a közöttük történő váltás sok időt és memóriát igényel) Az alkalmazástartományokkal és programozásukkal a jelen tárgy keretében nem foglalkozunk részletesen. 5 OE-NIK HP

V 1.0 OE-NIK HP 6 Haladó Programozás A párhuzamos végrehajtás alapjai Folyamatok Szálkezelés alapok

V 1.0 Folyamatok kezelése (kivonatos referencia) System.Diagnostics.Process osztály Metódusok Start()Folyamat indítása CloseMainWindow()Folyamat főablakának bezárása (GUI alkalmazásoknál) Kill()Folyamat leállítása GetCurrentProcess()Aktuális folyamatot reprezentáló objektum lekérése GetProcesses()Összes folyamat adatainak lekérése a helyi számítógépről WaitForExit()Várakozás az adott folyamat befejeződésére Tulajdonságok StartInfoA folyamathoz tartozó ProcessStartInfo példány PriorityClassA folyamat prioritása (fontossági szintje) EnableRaisingEventsA folyamat kiválthat-e eseményeket HasExitedA folyamat kilépett-e ExitCode, ExitTimeKilépési kód, illetve a kilépés (vagy leállítás) időpontja StandardInput, StandardOutput Alapértelmezett be- és kimeneti csatorna (adatfolyam) Események ExitedA folyamat kilépett (vagy leállították) 7 OE-NIK HP

V 1.0 Folyamatok kezelése (kivonatos referencia) System.Diagnostics.ProcessStartInfo osztály Tulajdonságok FileName Fájlnév megadása az indítandó folyamathoz (program vagy programmal társított fájltípusba tartozó fájl neve) Arguments, WorkingDirectory Parancssori paraméterek és munkakönyvtár megadása az indítandó folyamathoz Domain, UserName, Password Folyamat indítása adott felhasználó nevében RedirectStandardInput, RedirectStandardOutput Alapértelmezett be- és kimeneti csatorna átirányítása ErrorDialogHibaüzenet jelenjen-e meg, ha a folyamat indítása sikertelen UseShellExecute Operációs rendszerhéj programindító funkciójának használata folyamat indításához VerbA társított fájl megnyitásakor végrehajtandó művelet WindowStyle Kezdeti ablakméret megadása (normál, minimalizált vagy maximalizált méret) 8 OE-NIK HP

V 1.0 Példa új folyamat indítására using System; using System.Diagnostics; class Program { static void Main() { Process newProcess = new Process(); newProcess.StartInfo = new ProcessStartInfo("hello.exe", "Pistike"); newProcess.StartInfo.ErrorDialog = true; newProcess.StartInfo.UseShellExecute = false; newProcess.StartInfo.RedirectStandardOutput = true; newProcess.Start(); newProcess.WaitForExit(); Console.WriteLine("Az elindított folyamat üzenetei:"); Console.Write(newProcess.StandardOutput.ReadToEnd()); Console.ReadLine(); } OE-NIK HP

V 1.0 Feladat Hozzon létre konzolos alkalmazást, amelynek segítségével előre beállítható darabszámú traceroute (tracert) folyamatot tudunk párhuzamosan futtatni, így az egyes hívások nem blokkolják a fő alkalmazást. 10 OE-NIK HP

V 1.0 OE-NIK HP 11 Haladó Programozás A párhuzamos végrehajtás alapjai Folyamatok Szálkezelés alapok

V 1.0 Egy szál / több szál? A többszálúság biztosítja a program/OS válaszkészségét, de... A szál DRÁGA (megj: OS-függő, Windowsra vonatkozik) Memóriafoglalás szálanként: –Stack, szálkontextus (stb.) Szálak használatából adódó processzoridő-veszteség: –Időosztás menedzselésével elvesztett idő Ideális: annyi szál/program, ahány mag –Szálváltáskor a futási környezet változásából adódó cache miss-ek Újabb szálváltáskor újabb cache miss-ek... –Szál létrehozásakor és megszüntetésekor a programban betöltött natív.dll-ekben Dll_Main(DLL_THREAD_ATTACH), Dll_Main(DLL_THREAD_DETACH) hívások történnek Megj: powerpnt.exe 147 dll!!!!... VS 2012: 183 dll... Szál overhead < process overhead OE-NIK HP 12

V 1.0 A többszálúság megvalósítási lehetőségei Aszinkron metódushívás (nem tananyag) –Delegáltak és az aszinkron mintát támogató metódusok aszinkron hívása Thread osztály –Szálak alacsony szintű kezelését teszi lehetővé –Egyszerű, de sok munkát és pontosságot igényel ThreadPool osztály (nem tananyag) –Állandóan rendelkezésre álló „szálkészlet” használata –Nem kell a szálakat egyenként létrehozni, megszüntetni –Kezelése egyszerű és hatékony, de a szálak egyéni identitását nem biztosítja BackgroundWorker osztály (nem tananyag) –A felhasználói felületi funkciók és a háttérben elvégzendő sokáig tartó műveletek végrehajtásának szétválasztására szolgál –Korlátozott funkcionalitása miatt kevés célra alkalmas TPL / Task osztály –Magas szintű szálkezelésre való egységes, rengeteg funkcionalitással bíró API TPL / Parallel osztály –Adatpárhuzamos végrehajtásra nyújt beépített megoldásokat 13 OE-NIK HP

V 1.0 Szálak kezelése (kivonatos referencia) System.Threading.Thread osztály Metódusok Start()Szál indítása Suspend(), Resume()Szál felfüggesztése, illetve folytatása Abort()Szál leállítása GetHashCode()Szál azonosítójának lekérése Sleep()Várakozás a megadott időintervallum elteltéig Join()Várakozás az adott szál befejeződésére Tulajdonságok CurrentCulture, CurrentUICulture A szálhoz tartozó aktuális kultúra, illetve a szálhoz tartozó felhasználói felület kiválasztott nyelve IsBackgroundAz adott szál háttérszál vagy előtérszál* IsThreadPoolThreadAz adott szál a ThreadPool egyik szála-e ManagedThreadIDA szál egyedi azonosítója NameA szál megnevezése PriorityA szál prioritása (fontossági szintje) ThreadStateA szál aktuális állapota(i) * A programok futása véget ér, ha az utolsó előtérszál is lefutott (az esetleg még futó háttérszálak ekkor automatikusan megszűnnek). 14 OE-NIK HP

V 1.0 System.Threading.Thread példa using System; using System.Threading; class Program { static void Main(string[] args) { Console.WriteLine("Szál közvetlen létrehozása"); Console.WriteLine("Főszál ({0})", Thread.CurrentThread.GetHashCode()); Thread newThread = new Thread(ThreadMethod); newThread.Name = "Új szál"; newThread.Start(); newThread.Join(); } static void ThreadMethod() { Console.WriteLine("{0} (sorszáma: {1})", Thread.CurrentThread.Name, Thread.CurrentThread.GetHashCode()); } OE-NIK HP

V 1.0 Feladat Hozzon létre konzolos alkalmazást, amelynek segítségével előre beállítható darabszámú weboldal teljesítményét tudjuk másodpercen át tesztelni külön szálakon futó System.Net.WebClient().DownloadString(url) metódushívások segítségével 16 OE-NIK HP

V 1.0 OE-NIK HP 17 Források Miklós Árpád prezentációja Jeffrey Richter: CLR via C#, 4th edition (2012, Microsoft Press)