Folyamat- és szálkezelés Microsoft Windows 2000/XP/2003/Vista

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Folyamat- és szálkezelés Microsoft Windows 2000/XP/2003/Vista"

Átírás

1 Folyamat- és szálkezelés Microsoft Windows 2000/XP/2003/Vista Definíciók és folyamatmodell Folyamatok és szálak kezelése Ütemezési kérdések Többprocesszoros és többmagos rendszerek

2 Folyamatmodell (1) Definíciók Folyamat ( process ) Az operációs rendszerek programokat hajtanak végre Kötegelt rendszerek: feladatok ( job ) Interaktív rendszerek: felhasználói programok ( task ) A folyamat egy adott program dinamikus, a virtuális memóriában elhelyezkedő, élő példánya) Fő adminisztrációs egység (állapotinformáció tár) Erőforrások aktuális állapota (memória, fájlok, objektumkezelők, hálózati kapcsolatok...) Processzoridő alapú elszámolást is lehetővé tesz Hagyományosan az ütemezés alapegysége A Windows nál a szál ( thread ) az ütemezés alapegysége 2

3 Folyamatmodell (2) Definíciók Szál ( thread ) A Windows nál az ütemezés alapegysége A processzorokon ténylegesen a szálak futnak, nem a folyamatok Folyamaton belüli állapotadminisztrációs egység Processzorok, ütemezés, I/O műveletek állapotai Nincs saját címtere Az egy folyamathoz tartozó szálak egymással osztoznak a folyamat címterén A többszálú működés problémákat vethet fel Összehangolási pontok (randevú, kilépés) Adatkezelés Szálspecifikus adatok kezelése Szál szempontjából globális adatok kezelése 3

4 Folyamatmodell (3) A Windows nál alkalmazott négyszintű modell 1. szint feladat ( job ) Folyamatkészlet Szabályozhatók a benne lévő folyamatok paraméterei CPU idő, munkakészlet, biztonsági beállítások stb. Kötegelt feldolgozáshoz ideális 2. szint folyamat ( process ) A szokásos értelemben vett (teljes kontextusú) folyamat Egy adott program dinamikus, a virtuális memóriában elhelyezkedő, élő példánya, lásd korábban 4

5 Folyamatmodell (4) A Windows nál alkalmazott négyszintű modell 3. szint szál ( thread ) Ütemezési alapegység Lehetséges állapotok: 0: Indítható ( initialized ) 1: Futásra kész ( ready ) 2: Futó ( running ) 3: Készenléti ( standby ) 4: Befejezett ( terminated ) 5: Várakozó ( waiting ) 6: Átmeneti ( transition ) 4. szint vékonyított szál ( fiber ) Initialized (0) Transition (6) Ready (1) Kézi ütemezés a létrehozó szál kontextusán belül Szálak állapotátmeneti diagramja Kernelverem kilapozva Preempció Standby (3) Preempció, kvantum vége Waiting (5) Original image David A. Solomon and Mark Russinovich Running (2) Önként lemondás Terminated (4) 5

6 Folyamatok és szálak kezelése (1) Folyamatok létrehozása és megszüntetése Folyamatok létrehozása 3 részben fut le 3 különböző kontextusban (létrehozó folyamat, Win32 alrendszer, létrejövő folyamat) CMD.EXE NTVDM.EXE program.exe MS DOS.bat,.cmd Win16 Milyen típusú a program? Win32 Win32 (64 bites Windows) program.exe (speciális WoW64 támogatással) OS/2 1.x POSIX MS DOS.exe,.com,.pif OS2.EXE POSIX.EXE NTVDM.EXE Original image David A. Solomon and Mark Russinovich 6

7 Folyamatok és szálak kezelése (2) Váltások a processzorok birtoklásában Kontextusváltás Mindig szálak között történik T 1 szál Megszakítás vagy rendszerhívás T 2 szál Futó Állapotmentés (TCB 1 ) Állapotbetöltés (TCB 2 ) Futásra kész vagy várakozó Futásra kész vagy várakozó Futó Megszakítás vagy rendszerhívás Állapotmentés (TCB 2 ) Állapotbetöltés (TCB 1 ) Futó Futásra kész vagy várakozó Original image David A. Solomon and Mark Russinovich 7

8 Ütemezés (1) A Windows rövid távú ütemezési politikája Eseményalapú ütemezés Nincs központi ütemező modul a kernelben Az ütemezés alapvetően szálszinten történik Minden folyamathoz tartozik legalább egy szál Preemptív, prioritásos, körbeforgó algoritmus Időszelet alapú kötelező preempció Mindig a legmagasabb prioritású futásképes szál fut Külön várakozó sor minden prioritási szinthez 8

9 Ütemezés (2) A Windows általános ütemezési politikája Preempció (futásmegszakítás) esetei: Lejár a szál időszelete Újraütemezéskor az addig futó szál időszelete 3 mal csökken Elindul egy nagyobb prioritású szál Az előző az időszelet megmaradt részét később visszakapja A szál eseményre kezd várni A szál önként feladja a futás jogát Szigorúértelemben véve nem minősül preempciónak Külső megszakítás következik be Megszűnik a szál 9

10 Ütemezés (3) Prioritások Prioritások kezelése Kétszintű rendszer (folyamatok és szálak; 0 31 ig) Below Normal Above Normal Normal 8 High Realtime 24 Idle

11 Ütemezés (3) Prioritások Prioritások kezelése Kétszintű rendszer (folyamatok és szálak; 0 31 ig) Folyamatok prioritási osztályai Realtime High Above Normal Normal Below Normal Idle Time Critical Highest Szálak prioritási szintjei Above Normal Normal Below Normal Lowest Idle Lapnullázó szál: 0 Üresjárati szál: 1 Windows Vista: multimédia ütemezőszolgáltatás (MMCSS) 11

12 Ütemezés (4) Időszeletek A körbeforgó ütemezés következményei A processzorintenzív alkalmazásoknak kedvez Az időszelet erősen befolyásolja az észlelt teljesítményt Az időszelet ( quantum ) hossza A Normál prioritási osztálynál módosítható Hossz, típus, előtérben lévő alkalmazás kiemelése Beállítások: 1 időszelet = 3*x rendszerórajel ütem Újraütemezésnél 3 mal csökken az időszelet hossza Windows Vista: a megszakításban töltött idő (igazságos módon) már nem csökkenti az időszelet hosszát 12

13 Ütemezés (5) Beépített kompenzációs mechanizmusok Prioritás növelése ( priority boosting ) I/O művelet befejezésekor Képernyőmeghajtó & lemezmeghajtók: 1 Soros port & hálózat: 2 Billentyűzet & egér: 6 Hangeszközök: 8 Várakozó állapotból kilépéskor Eseményre, szemaforra stb. várakozás: 1 Előtérben lévő folyamat befejezte a várakozást: 2 A szál által várt GUI (ablak) esemény beérkezésekor: 2 Régóta készenlétben álló szálaknál 2 időszeletnyi időre 15 re emeli a prioritást Időszelet módosítása ( quantum stretching ) A prioritásnövelés idejére megkétszereződik az időszelet 13

14 Több processzor kezelése (1) Ütemezés egynél több, illetve többmagos CPU esetén Négyféle kernelmegvalósítás: NTOSKRNL.EXE egy processzor ACPI Uniprocessor System rendszereken régebbi CPU knál (Pentium I/II/III, AMD K5/K6/Athlon) NTKRNLPA.EXE egy processzor, fizikai címkiterjesztés ACPI Uniprocessor System rendszereken modern CPU knál (Pentium IV/M, Core/Core 2, AMD Athlon XP/64/Opteron) NTKRNLMP.EXE több / többmagos processzor ACPI Multiprocessor System rendszereken régebbi CPU knál NTKRPAMP.EXE több / többmagos processzor, fizikai címkiterjesztés ACPI Multiprocessor System rendszereken modern CPU knál 14

15 Több processzor kezelése (2) Ütemezés egynél több CPU, illetve többmagos CPU esetén Eltérések az egyprocesszoros ütemezéshez képest A legmagasabb prioritású szálak egyike kerül futó állapotba valamelyik processzor(mag)on Terheléskiegyenlítés csak szálszinten Szimmetrikus elosztás (nincs főprocesszor és alárendelt processzorok ) Windows 2003 Server: minden processzorhoz (maghoz) külön ready állapotú várakozósorok 15

16 Több processzor kezelése (3) Ütemezés egynél több, illetve többmagos CPU esetén Processzor kiválasztása futtatandó szálhoz Processzoraffinitás: meghatározza, hogy mely processzorokon futhat egy egy folyamat (a hozzá tartozó szálak) Ideális processzor A szál indulásakor véletlenszerűen kijelölt processzor Következő processzorok Azon processzorok, amelyeken a szál korábban már futott Futtatandó szál kiválasztása processzorhoz Az ütemező igyekszik azonos processzoron tartani a szálakat 16

17 SzPE (C#) , II. félév BMF NIK Párhuzamos programozás:.net szálak használata Szálak kezelése Új szálak indítása, szálak felfüggesztése, állapotvezérlése és leállítása, szálak prioritási szintjei Előtér és háttérszálak, ThreadPool szálak Szinkronizáció A szinkronizáció alapfogalmai, versenyhelyzet és holtpont fogalma Kölcsönös kizárás biztosítása, a lock utasítás, szálak bevárása és randevúja miklos.arpad@nik.bmf.hu

18 Szálak A szálak elsődleges célja a folyamatokon belüli párhuzamosítás A folyamatok adminisztrációja és váltása igen erőforrásigényes művelet, viszont az általuk nyújtott elszigetelés szintje egy programon belül csaknem mindig szükségtelen. Ezt az ellentmondást oldják fel a szálak, amelyek elszigetelést nem nyújtanak, gyors párhuzamos végrehajtást azonban igen. P 1 folyamat P 3 folyamat P 2 folyamat T 11 szál T 13 szál T 22 szál T 31 szál T 12 szál T 21 szál T 23 szál T 24 szál A.NET keretrendszer támogatja a szálak kezelését is A keretrendszer kihasználja az operációs rendszer száltámogatását, de a.net szálak és az operációs rendszer szálai között nem feltétlenül létezik 1:1 megfeleltetés (egy valódi szálon a keretrendszer több szála is futhat). 18

19 A többszálúság megvalósítási lehetőségei System.Threading.Thread osztály Lehetővé teszi szálak egyenkénti létrehozását, azonosítását, állapotvezérlését és megszüntetését. Kezelése egyszerű, viszont sok programozói munkát és pontosságot igényel. System.Threading.ThreadPool osztály Gyakran ismétlődő, rövid ideig tartó, erősen párhuzamos műveletekhez rendelkezésre álló szálkészlet, melynek használatával megtakarítható a szálak egyenkénti létrehozásának és megszüntetésének időigényes munkája. Kezelése egyszerű és hatékony, de a szálak egyéni identitását nem biztosítja. System.ComponentModel.BackgroundWorker osztály (később) A felhasználói felület kezelésének és a háttérben elvégzendő, esetenként igen sokáig tartó műveletek végrehajtásának szétválasztására szolgál. Kezelése igen kényelmes (az állapotváltozásokról események útján értesíti a felhasználó osztályt), ám korlátozott funkcionalitása miatt kevés célra alkalmas. 19

20 Threading névtér A System.Threading névtér a következő szálfeladatokat oldja meg: Futás idejű kontroll szinkronizáció thread pooling System.Threading fontosabb típusai: Alaposztályok: Thread és ThreadPool Felsorolások: TreadState és ThreadPriority Osztály: Monitor Kivételek: ThreadAbortException és ThreadInterruptedException delegate ThreadStart, WaitCallback, TimerCallback, IOCompletionCallback, 20

21 Szálak kezelése (kivonatos referencia) System.Threading.Thread osztály Metódusok Start() Suspend(), Resume() Abort() GetHashCode() Sleep() Join() Tulajdonságok CurrentCulture, CurrentUICulture IsBackground IsThreadPoolThread ManagedThreadID Name Priority ThreadState Szál indítása Szál felfüggesztése, illetve folytatása Szál leállítása Szál azonosítójának lekérése Várakozás a megadott időintervallum elteltéig Várakozás az adott szál befejeződésére A szálhoz tartozó aktuális kultúra, illetve a szálhoz tartozó felhasználói felület kiválasztott nyelve Az adott szál háttérszál vagy előtérszál* Az adott szál a ThreadPool egyik szála e A szál egyedi azonosítója A szál megnevezése A szál prioritása (fontossági szintje) A 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). 21

22 Thread osztály public sealed class Thread { public Thread(ThreadStart start); public ThreadPriority Priority {get; set; public ThreadState ThreadState {get; public bool IsAlive {get; public bool IsBackground {get; set; public void Start(); public static void Sleep(int time); public void Suspend(); public void Resume(); public void Join(); public void Interrupt(); public void Abort(); public static void ResetAbort(); Konstruktor, paramétere: ThreadStart delegate Aktuális állapot Háttér Szál vezérlő metódusok public static Thread CurrentThread {get; Az aktuálisan futó szál 22

23 ThreadStart, ThreadPriority és ThreadState public delegate void ThreadStart(); public sealed class Thread { public Thread( ThreadStart start); public ThreadPriority Priority {get; set; public ThreadState ThreadState {get; public enum ThreadPriority { Highest, AboveNormal, Normal, BelowNormal, Lowest, public enum ThreadState { Unstarted, Running, Background, WaitSleepJoin, SuspendRequested, Suspended, AbortRequested, Stopped 23

24 Thread példa ThreadStart delegálthoz metódus using System.Threading; public class ThreadExample { public static void RunT0() { for ( int i=0; i<10000; i++) { Console.Write( "x ); Thread.Sleep(100); //Thread készítése delegate to method RunT0 and starting it public static void Main(string[] args) { // Main thread starts a new thread which runs RunT0 method Thread t0 = new Thread( new ThreadStart(RunT0)); t0.start(); 24

25 Példa új szál indítására 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 (sorszáma: {0)", Thread.CurrentThread.GetHashCode()); Thread newthread = new Thread(ThreadMethod); //.NET 1.1 esetén: Thread newthread = new Thread(new ThreadStart(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()); ThreadExamples\Program.cs március 10. miklos.arpad@nik.bmf.hu 25

26 Thread példa using System; using System.Threading; class Printer { char ch; int sleeptime; public Printer(char c, int t) {ch = c; sleeptime = t; public void Print() { for (int i = 0; i < 100; i++) { Console.Write(ch); Thread.Sleep(sleepTime); class Test { static void Main() { Printer a = new Printer('.', 10); Printer b = new Printer('*', 100); new Thread(a.Print).Start(); new Thread(b.Print).Start(); Két szál, melyek folyamatosan a képernyőre írnak példánymetódussal 26

27 Előtér és háttér szálak Az előtér és háttér szálak közötti különbségek Amíg előtér szál fut, addig a program nem terminál A háttér szál futása nem gátolja meg a program terminálását Az IsBackground tulajdonsággal állítható Thread bgthread = new Thread(new ThreadStart( )); bgthread.isbackground = true; 27

28 Thread állapotok példa Thread t = new Thread(P); Console.WriteLine("name={0, priority={1, state={2", t.name, t.priority, t.threadstate); t.name = "Worker"; t.priority = ThreadPriority.BelowNormal; t.start(); Thread.Sleep(1); Console.WriteLine("name={0, priority={1, state={2", t.name, t.priority, t.threadstate); t.suspend(); Thread.Sleep(1); Console.WriteLine("state={0", t.threadstate); t.resume(); Console.WriteLine("state={0", t.threadstate); t.abort(); Thread.Sleep(1); Console.WriteLine("state={0", t.threadstate); Output name=, priority=normal, state=unstarted name=worker, priority=belownormal, state=running state=suspended state=running state=stopped public enum ThreadState { Unstarted, Running, Background, WaitSleepJoin, SuspendRequested, Suspended, AbortRequested, Stopped 28

29 Thread állapotdiagram Suspended safepoint reached SuspendRequested t.suspend Unstarted t.start Running t.resume end of thread method t.abort Stopped AbortRequested Exception caught, finally processed Thread.Sleep other.join Wait(obj) time over other joined Pulse(obj) t.interrupt t.abort WaitSleepJoin 29

30 Megvárás példa (Join) using System; using System.Threading; class Test { static void P() { for (int i = 0; i < 20; i++) { Console.Write('-'); Thread.Sleep(100); static void Main() { Thread t = new Thread(P); Console.Write("start"); t.start(); t.join(); // waits for t Console.WriteLine("end"); Output: start end 30

31 Abort kezelése példa Az Abort speciális kivételt dob, amelyet kezelni lehet a metódusban using System; using System.Threading; class Test { static void P() { try { try {try { while (true) ; catch (ThreadAbortException) { Console.WriteLine("-- inner aborted"); catch (ThreadAbortException) { Console.WriteLine("-- outer aborted"); finally { Console.WriteLine("-- finally"); static void Main(string[] arg) { Thread t = new Thread(P); t.start(); Thread.Sleep(1); t.abort(); t.join(); Console.WriteLine("done"); Output -- inner aborted -- outer aborted -- finally done 31

32 ThreadPools ThreadPool szálak halmazát képes kezelni Regisztrált feladathalmaz hatékony kezelése Rövid idejű feladatok, inaktívak egy ideig Hátrány: Az alkalmazói programnak nincs kontrollja (nem lehet pl. prioritást szabályozni) 32

33 Szálak kezelése (kivonatos referencia) System.Threading.ThreadPool osztály Metódusok QueueUserWorkItem() GetAvailableThreads() GetMaxThreads(), GetMinThreads() SetMaxThreads(), SetMinThreads() RegisterWaitForSingleObject() Metódus végrehajtása egy ThreadPool szálon A rendelkezésre álló ThreadPool szálak számának lekérdezése Maximálisan rendelkezésre álló, illetve minimálisan életben tartott ThreadPool szálak számának lekérdezése Maximálisan rendelkezésre álló, illetve minimálisan életben tartott ThreadPool szálak számának beállítása Várakozás erőforrásra vagy időzítőre 33

34 ThreadPool osztály public sealed class ThreadPool { public static void GetAvailableThreads(out int w, out int aios); public static void GetMaxThreads(out int w, out int aios); A munka és IO szálak száma A munka és IO szálak maximális száma public static bool QueueUserWorkItem( WaitCallback task); public static bool QueueUserWorkItem( WaitCallback task, object state); A task regisztrálása WaitCallback delegateként public delegate void WaitCallback(object state ); WaitCallback delegate 34

35 ThreadPool példaváz Feladat definíció public static void WorkerTask(object state) { while ( ) { // do something short Thread.Sleep( ); // then sleep A munka és IO szálak száma int maxworkers, availworkers; int maxios, availios; ThreadPool.GetMaxThreads(out maxworkers, out maxios); ThreadPool.GetAvailableThreads(out availworkers, out availios); Új feladatot adunk a poolba object state = ; ThreadPool.QueueUserWorkItem(new WaitCallback(WorkerTask), state); 35

36 Feladat (3) Készítsünk konzolos alkalmazást, amely a ThreadPool osztály segítségével 4 külön szálon jeleníti meg az egyes szálak által folyamatosan növelt saját belső számláló értékét! A program valamilyen megoldással biztosítsa a szálak által kiírt adatok vizuális elkülönítését! Ötletek: A QueueUserWorkItem() metódus paramétere egy WaitCallback típusú képviselő, amely visszatérési érték nélküli, egyetlen ( object típusú) paraméterrel rendelkező metódusokat képes tárolni A ThreadPool szálai is azonosíthatók a ManagedThreadID tulajdonsággal (azonban előfordulhat például, hogy egy szál által megkezdett feladatot egy másik szál folytat és egy harmadik szál fejez be) A szálak közötti váltások megfigyeléséhez érdemes sok munkát adni az egyes szálaknak és néha várakoztatni őket (ennek legegyszerűbb módja a Thread osztály statikus Sleep() metódusa) 36

37 Megoldás (3) ThreadExamples\Program.cs március

38 Szinkronizáció A szinkronizáció olyan, párhuzamos szálak (vagy folyamatok) együttműködését megvalósító mechanizmus, amely minden körülmények között biztosítja a szálak (vagy folyamatok) által végzett műveletek szemantikai helyességét A párhuzamosan futó szálak kommunikációjához szinte biztosan szükség van közös erőforrások (memória, portok, I/O eszközök, fájlok) használatára. Ha ezek állapotát egy szál módosítja, de közben más szálak is hozzájuk férnek, akkor az utóbbi szálak könnyen hibás vagy félkész adatokhoz juthatnak. Az alapprobléma: bármely két utasítás végrehajtása között előfordulhat, hogy más szálak kapnak lehetőséget az előző szál által is kezelt közös adatok olvasására vagy módosítására Egyprocesszoros rendszereknél az operációs rendszer ütemezője (a szálak közötti váltás) ad erre lehetőséget, többprocesszoros rendszereknél pedig a valódi (fizikai) párhuzamosság miatt még gyakrabban merül fel a probléma. Ennek elkerülését szolgálják elsősorban a különböző szinkronizációs megoldások (másik, ezzel összefüggő céljuk az időzítések összehangolása). 38

39 Szinkronizáció kölcsönös kizárással Kritikus szakasz ( critical section ) A programokon belül megjelölt kritikus kódrészletek soros végrehajtását biztosítja több párhuzamos szál esetén is..net osztályok: System.Threading.Monitor (és a C# lock utasítása), System.Threading.Mutex, System.Threading.ReaderWriterLock Szemafor ( semaphore ) A kritikus szakasz általánosítása (többpéldányos erőforrások esetén egyszerre több szál belépését is lehetővé teszi)..net osztály: System.Threading.Semaphore (.NET 2.0) Atomi végrehajtás ( interlocked execution ) Egyes egyszerű műveletek oszthatatlan végrehajtását biztosítja (igen gyors)..net osztály: System.Threading.Interlocked Csővezeték ( pipe ) Olvasható és írható FIFO puffer, amely szükség szerint várakoztatja az igénylőket (az ún. termelő fogyasztó probléma megoldására készült). 39

40 Szinkronizáció bevárással (randevú) Esemény ( event ) Két kódrészlet soros végrehajtását biztosítja úgy, hogy a B kódrészletet végrehajtó szál megvárja, amíg az A kódrészletet végrehajtó szál végez feladatával, illetve lehetőséget ad alkalmankénti vagy rendszeres jelzésre is..net osztályok: System.Threading.Thread, System.Threading.AutoResetEvent, System.Threading.ManualResetEvent Időzítő ( timer ) Relatív vagy abszolút időhöz való igazodást tesz lehetővé..net osztályok: System.Windows.Forms.Timer, System.Timers.Timer, System.Threading.Timer Időzítők jellemzői Pontosság Futtatás saját szálon Csak egyszeri aktiválás Beállítható első aktiválás Vizuális komponens Platformfüggetlen Windows.Forms.Timer ~10 ms + Timers.Timer ~100 ns (!) + + Threading.Timer ~1 ms

41 Szinkronizációs elemek I. Egyszerű blokkoló metódusok * Konstrukció Sleep Join Cél Adott ideig blokkol Másik szál végét várja Lock koló konstrukciók, kritikus szakasz * Konstrukció lock Monitor (Enter(), Exit()) Mutex Semaphore Cél Csak egy szál férhet az erőforráshoz, vagy a kódrészhez Csak egy szál férhet az erőforráshoz, vagy a kódrészhez Csak egy szál férhet az erőforráshoz, vagy a kódrészhez. Meghatározott számú szál férhet az erőforráshoz, vagy a kódrészhez Cross process + + Sebesség + + * Ha a szálnak várakoznia kell ezen konstrukciók miatt, akkor un. blokkolt és állapota: WaitSleepJoin. Ilyenkor nem kap ütemezést! 41

42 Szinkronizációs elemek II. Szignál konstrukciók * Konstrukció EventWaitHandle Wait, Pulse ** Cél Engedélyezi, hogy a szál várjon, amíg egy másik száltól szignált nem kap Engedélyezi, hogy a szál várjon, amíg egy beállított blokkoló feltétel teljesül Cross process + Sebesség * Ha a szálnak várakoznia kell ezen konstrukciók miatt, akkor un. blokkolt és állapota: WaitSleepJoin. Ilyenkor nem kap ütemezést! ** A Pulse egyirányú kommunikáció: nincs visszajelzés. Azt sem tudhatjuk, hogy a Wait nél mennyivel később szabadul fel a blokkolás. Használjunk jelző flag et! Nem blokkoló szinkronizációs elemek Konstrukció Interlocked volatile Cél Nem blokkoló atomi végrehajtást biztosít Lokkon kívül, biztonságos, nem blokkoló hozzáférést biztosít bizonyos mezőkhöz Cross process Sebesség

43 Kölcsönös kizárás lock utasítás lock(variable) Statement Példa: class Account { long val = 0; public void Deposit(long x) { lock (this) { val += x; public void Withdraw(long x) { lock (this) { val -= x; // this class is a monitor // only 1 thread at a time may execute this statement A Lock bármilyen objektumra állítható, gyakran hibásan a this t használják private static object staticsynchroot = new object(); private object instancesynchroot = new object();... public static void StaticFunction() { lock (staticsynchroot ) {... critical region... public void InstanceFunction() { lock (instancesynchroot ) {... critical region... 43

44 Példa szinkronizációra (a lock utasítás) using System; using System.Threading; class Program { private static int counter = 0; private static object lockobject = new Object(); static void Main(string[] args) { Thread t1 = new Thread(ThreadMethod); t1.start(); Thread t2 = new Thread(ThreadMethod); t2.start(); private static void ThreadMethod() { lock (lockobject) { counter++; Thread.Sleep(500); Console.WriteLine("A számláló állása: " + counter); A lock utasítás nélkül a metódus sorosan (egy szálon futtatva) helyesen működik, párhuzamosan (több szálon) azonban nem Figyelem: SOHA ne írjunk le az alábbiakra hasonlító kódot: lock (this) vagy lock (typeof(program)) 44

45 A szinkronizáció két alapvető nehézsége Versenyhelyzet ( race condition ) Párhuzamos futtatás esetén a közösen használt erőforrásokhoz történő hozzáférés szabályozatlansága veszélyezteti a program helyes működését. Az előző példa a lock utasítás nélkül jól illusztrálja a versenyhelyzet fogalmát. Holtpont ( deadlock ) Akkor léphet fel holtpont, ha több szál több erőforráshoz kíván hozzáférni, miközben egyes erőforrásokat lefoglalva tartanak (tehát már beléptek egy erőforráshoz tartozó kritikus szakaszba, ott viszont várakozniuk kell, hogy hozzájuthassanak egy másik szükséges erőforráshoz). Példa: 1 lock (a) 2 { 3 // feldolgozás 4 lock (b) 5 { 6 // feldolgozás szál lock (b) { // feldolgozás lock (a) { // feldolgozás 2. szál 45

46 Monitor osztály A Monitor osztály alapszintű szinkronizációt biztosít public sealed class Monitor { public static void Enter(object obj); public static bool TryEnter(object obj); public static void Exit(object obj); Az obj részére lock kolást próbál biztosítani és blokkol Az obj részére lock kolást próbál biztosítani és visszatér Feloldja a lock kolást public static void Wait(object obj); public static bool Pulse(object obj); public static void PulseAll(object obj); Várakozás állapotba hozza a szálat és elengedi a lock ot Felébreszti a következő obj ra váró szálat Felébreszti az összes obj ra váró szálat lock a Monitor rövid formája: lock (obj) { Monitor.Enter(obj) try { finally { Monitor.Exit(obj) 46

47 Monitor használata Enter blokkol, ha a lock kolás nem biztosítható TryEnter blokkolás nélkül próbál lock kolni; hamissal tér vissza, ha nem elérhető a lock kolás Enter: blokkolással! public class MonitorExample { private Queue lpt; public void AddElemBlocking (object elem) { try { Monitor.Enter (lpt.syncroot); lpt.enqueue (elem); catch (Exception e) { finally { Monitor.Exit (lpt.syncroot); TryEnter: blokkolás nélkül public bool AddElemNonBlocking (object elem) { try { if (! Monitor.TryEnter (lpt.syncroot)) return false; lpt.enqueue (elem); catch (Exception e) { finally { Monitor.Exit (lpt.syncroot); return true; 47

48 Wait és Pulse A Wait és Pulse segítségével a szálak szinkronizálhatók A lock kolás elengedése és várakozás ébredésre public static void Wait(object obj); public static bool Wait(object obj, int millies); Az obj re váró következő, vagy összes szál felébresztése public static bool Pulse(object obj); public static void PulseAll(object obj); lock (obj) {... Monitor.Wait(obj);... lock (obj) {... Monitor.Pulse(obj);... 48

49 Wait és Pulse elvi példa Thread A Thread B lock(v) { lock(v) { Monitor.Wait(v); Monitor.Pulse(v); A eléri lock(v) tés lock kol, mert a kritikus régió szabad 6 2. A eléri Wait utasítást, aludni megy és felengedi a lock ot 3. B eléri lock(v) tés lock kol, mert a kritikus régió szabad 4. B eléri a Pulse tés felébreszti A t. (Lehetséges kontextusváltás A és B között, de nem szüségszerű) 5. A lock ot szeretne kapni, de nem tud, mert B még kritikus régióban van 6. A kritikus régió végén B felengedi a lock ot; A tovább futhat 49

50 Wait és Pulse Megjegyzés Wait(v) és Pulse(v) csak lock(v) vel (Monitorral) zárolt utasításban jelenhet meg. A Pulse(v) és a felébresztett szál folytatása között más szálak futhatnak, amelyek időközben megpróbálták megkapni a lock ot (tehát a Pulse által szignált feltétel nem biztosan igaz, amikor a felébresztett szál visszatér a Wait után!) Ezért a Wait metódust egy ciklusba kell helyezni, ami folyamatosan teszteli a feltételt: while (condition false) Monitor.Wait(v);... make condition true; Monitor.Pulse(v); PulseAll(v) felébreszt minden szálat, amely v re vár, de közülük csak egy folytatja futását. A többinek várnia kell, amíg a lock ot fel nem engedi az előző szál. Ekkor a következő szál a kritikus régióba léphet. 50

51 Wait és Pulse szinkronizált puffer példa public class Buffer { const int size = 16; char[ ] buf = new char[size]; int head = 0, tail = 0, n = 0; public void Put(char ch) { lock(this) { while (n == size) Monitor.Wait(this); buf[tail] = ch; tail = (tail + 1) % size; n++; Monitor.Pulse(this); Ha a termelő gyorsabb: Put Put Put Get Put Get... thread 1 Lock buffer to add a character While buffer is full, release lock and wait Wake up waiting threads public char Get() { lock(this) { while (n == 0) Monitor.Wait(this); char ch = buf[head]; head = (head + 1) % size; n--; Monitor.Pulse(this); return ch; thread 2 Lock buffer to retrieve character While buffer is empty, release lock and wait Wake up waiting threads Ha a fogyasztó a lassabb: 51 Put Get Put Get...

52 Szinkronizált puffer 3 Get szál eléri az üres puffert Belépnek a kritikus régióba és aludni mennek, mert üres a puffer Egy Put szál érkezik, Kritikus régióba lép; Elhelyezi adatát és jelez: PulseAll G1 G2 G3 P1 Első belépés Kritikus régió G1 G2 G3 Várakozás G1 G2 G3 Mindenl Get szál felébred; Az első a kritikus régióba lép, kiolvassa az adatot és kilép A többiek ismét várakozási állapotba kerülnek, mert üres a puffer G1 G2 G3 G2 G3 Ismételt belépés 52

53 Feladat (4) Készítsünk többszálú konzolos alkalmazást, amely egy időigényes számítási műveletet 2 szállal párhuzamosan végeztet el! A műveletet most egy közösen használt számláló folyamatos növelése jelentse, és egy szálnak kb. 2 3 másodpercig tartson a művelet elvégzése! Amennyiben szükséges, gondoskodjon a szálak szinkronizációjáról is! A program valamilyen megoldással biztosítsa a szálak által kiírt adatok vizuális elkülönítését! Ötletek: A Stopwatch osztály metódusai segítségével egyszerűen mérhető az eltelt (relatív) idő Először egy egyszerű megvalósítással döntsük el, szükség van e szinkronizációra, majd ha úgy ítéljük meg, hogy igen, akkor használjuk a lock utasítást vagy a Monitor osztály statikus Enter(), illetve és Exit() metódusát Szinkronizáció esetén a jobb teljesítmény érdekében igyekezzünk a lehető legrövidebbre venni a kritikus szakaszt 53

54 Feladat (5) Készítsünk konzolos alkalmazást, amelynek csak egy példánya futhat egyszerre. Használjunk Mutexet a megvalósításhoz! (Készítsünk el ugyanilyen funkciójú alkalmazást processzek lekérdezésével és vizsgálatával is!) Ötletek: A Mutex name paramétere egyedi legyen. Pl. bmfnik.hu MUTEXv01 A Mutex WaitOne és ReleaseMutex metódusait használjuk. Az első metódus várakozási paramétert is kaphat, amit felhasználva megjeleníthetünk pl. hibaüzenetet. Processzek esetében a GetCurrentProcess és a GetProcesses metódusok segíthetnek. 54

55 Feladat (6) Készítsünk konzolos alkalmazást, amely Semaphore segítségével egy garázs működését prezentálja. A garázs kapacitása 10, benne a főnököknek foglalt helyek száma 5. A kocsik (szálak) véletlen ideig állnak a garázsban és összesen 20 tulajdonos jogosult a használatra. Az érkezéskor és induláskor írjuk ki, hogy melyik autó óhajt beállni, illetve elmenni. Ötletek: Osztályszintű Semaphore WaitOne, illetve Release metódusát használjuk. A szálfüggvény paraméterként kapja meg, hogy mely autó szeretne beállni. A parkolást Sleep metódussal valósítsuk meg. 55

56 Feladatok (7) Készítsünk konzolos alkalmazást, amely az Interlocked osztály atomi metódusait teszteli! Ötletek: Egy utasítás atomi, ha egyetlen oszthatatlan instrukcióként fut. Az egyszerű 32 bites adatok olvasása (32 bites CPU n) atomi. Olvasást és írást kombináló utasítások nem atomiak (pl. az x++ nem atomi). Az Interlocked statikus metódusai nem blokkolnak és sosem kell az ütemező átütemezésére várniuk (szemben pl. a lock kal). Az Interlocked osztály atomi operációkat biztosít ref paraméterként átadott int, vagy long típusokra. Teszteljük az Increment, Decrement, Add, Read, Exchange és CompareExchange metódusok működését egy long típusú ref paraméter használatával. 56

57 Feladatok (8) Készítsünk konzolos alkalmazást, amelynek elindított mindkét szálja egymásnak ötször üzenetet küld. Az üzenet megérkezésekor az egyik szál azt írja ki a konzolra: ThreadPing, a másik ThreadPong! Ötletek: Használjuk a Monitor osztály Pulse és Wait metódusait osztályszintű lock objektummal (static object ball). 57

58 Feladatok (9) Készítsünk demonstrációs alkalmazást, amely az AutoResetEvent és a ManualResetEvent működése közti különbséget mutatja be! Az elindított szál küldjön szignált a főszálban adott ideig, többször várakozó ResetEventeknek. Írjuk ki, hogy jel hatására milyen állapotba kerültek. Ötletek: Használjuk az osztályok Set és WaitOne és Reset metódusait. A szálfüggvényben Sleeppel szabályozzunk. 58

59 Feladatok (11) Töltsünk fel stringlistát két szál segítségével elemmel és az eredményt jelenítsük meg képernyőn. Ötletek: Használjuk a Collections névtér List generikus típusát: List<string> list = new List<string>(), illetve az Add metódust. Két szál AutoResetEventekkel kommunikáljon egymással, amíg az egyik speciális üzenetet nem küld. Az üzenet osztályszintű string legyen. Ötletek: Hogyan védjük az üzenetet? 59

60 BackgoundWorker szálak (rövid referencia) System.ComponentModel.BackgroundWorker osztály Metódusok RunWorkerAsync() CancelAsync() ReportProgress Tulajdonságok IsBusy CancellationPending WorkerSupportsCancellation WorkerReportsProgress Események DoWork ProgressChanged RunWorkerCompleted Háttérszál indítása Háttérszál leállítása Háttérszál folyamatjelzése A háttérszál aktív e (éppen fut e) Leállítás folyamatban (leállási kérelem érkezett) A háttérszál kérés esetén képes idő előtti leállásra A háttérszál képes folyamatjelzésre Kezelője a háttérben futtatandó metódus* A háttérszál folyamatjelzését fogadó esemény A háttérszál futása befejeződött * Ez a metódus (a Windows UI megvalósítási modellje következtében) közvetlenül nem érintkezhet a felhasználói felület elemeivel. Ezek szükséges frissítését és állapotmódosításait a ProgressChanged és a RunWorkerCompleted eseménykezelőkben lehet elvégezni. 60

61 Feladat (12) Készítsünk Windows alkalmazást, amely időigényes műveletet futtat a háttérben, a felhasználói felülettől független szálon! A program legyen képes a művelet indítására és menet közbeni biztonságos megszakítására, a háttérben futó művelet állapotát pedig folyamatjelzővel jelezze! Ötletek: Célszerű a BackgroundWorker osztály segítségével megoldani a feladatot A háttérben futó szál a ReportProgress() metódussal jelezheti az előrehaladást (ezt az adatot a ProgressChanged esemény második paraméterében kapja meg a megfelelő eseménykezelő metódus) A művelet megszakítását csak akkor kíséreljük meg, ha valóban fut (ez az IsBusy tulajdonság vizsgálatával állapítható meg) A háttérben futó művelet végén a RunWorkerCompleted esemény kezelője a második paraméterben kap információt a műveletről (véget ért e vagy megszakítás miatt fejeződött be, mi a végeredmény, történt e hiba stb.) 61

62 Megoldás (4) BackgroundWorker március

63 Irodalomjegyzék (alapismeretek) C. Nagel, B. Evjen, J. Glynn, M. Skinner, K. Watson, A. Jones: Professional C# 2005 Kiadó: Wiley Publishing, Inc., 2006 ISBN: Web: Nyelv: angol Terjedelem: 1540 oldal Folyamatok kezelése: , 413. o. Szálkezelés: o. Microsoft Corp., Visual Studio Developer Center Szálkezelés a.net keretrendszerben: us/library/3e8s7xdd(vs.80).aspx 63

64 Irodalomjegyzék (magasszintű ismeretek) Albert I., Balássy Gy., Charaf H., Erdélyi T., Horváth Á., Levendovszky T., Péteri Sz., Rajacsics T.: A.NET Framework és programozása Kiadó: Szak Kiadó, 2004 ISBN: Web: Nyelv: magyar Terjedelem: 868 oldal Párhuzamos programozás: o. Folyamatok kezelése: o. Szálkezelés és szinkronizáció: o. J. Richter: CLR via C#, Second Edition Kiadó: Microsoft Press, 2006 ISBN: Web: Nyelv: angol Terjedelem: 736 oldal Szálkezelés és szinkronizáció: o. 64

65

Folyamat- és szálkezelés Microsoft

Folyamat- és szálkezelés Microsoft Folyamat- és szálkezelés Microsoft Windows 2000/XP/2003/Vista Definíciók és folyamatmodell Folyamatok és szálak kezelése Ütemezési kérdések Többprocesszoros és többmagos rendszerek miklos.arpad@nik.bmf.hu

Részletesebben

Folyamat- és szálkezelés Microsoft Windows 2000/XP/2003/Vista

Folyamat- és szálkezelés Microsoft Windows 2000/XP/2003/Vista Folyamat- és szálkezelés Microsoft Windows 2000/XP/2003/Vista Definíciók és folyamatmodell Folyamatok és szálak kezelése Ütemezési kérdések Többprocesszoros és többmagos rendszerek miklos.arpad@nik.bmf.hu

Részletesebben

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21 C# Szálkezelés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21 Tartalomjegyzék 1 Bevezetés 2 Szálkezelés 3 Konkurens Programozás Tóth Zsolt (Miskolci Egyetem)

Részletesebben

Párhuzamosság a modern operációs rendszerekben

Párhuzamosság a modern operációs rendszerekben Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar Párhuzamosság a modern operációs rendszerekben Bevezetés Folyamatok nyilvántartása Folyamatok életciklusa

Részletesebben

Párhuzamos programozás.net környezetben

Párhuzamos programozás.net környezetben Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar Párhuzamos programozás.net környezetben A párhuzamos programozás alapjai A végrehajtás szétválasztása:

Részletesebben

Miklós Árpád, BMF NIK, 2007

Miklós Árpád, BMF NIK, 2007 Haladó programozás (C#) 2007 2008, I. félév BMF NIK Párhuzamos programozás: folyamatok és szálak A párhuzamos programozás alapjai A végrehajtás szétválasztása: elszigetelés és párhuzamosítás Párhuzamosság

Részletesebben

Kölcsönös kizárás, atomicitás, szemafor.

Kölcsönös kizárás, atomicitás, szemafor. Kölcsönös kizárás, atomicitás, szemafor kertesz.gabor@nik.uni-obuda.hu Lock lock (object o) struktúra C#-ban Kölcsönös kizárás megvalósítása object o: szinkronizációs objektum Bármely közös változó lehet,

Részletesebben

Párhuzamos programozás: folyamatok

Párhuzamos programozás: folyamatok SzPE (C#) 2007 2008, II. félév BMF NIK Párhuzamos programozás: folyamatok A párhuzamos programozás alapjai A végrehajtás szétválasztása: elszigetelés és párhuzamosítás Párhuzamosság és ütemezés az operációs

Részletesebben

Párhuzamos programozás: folyamatok

Párhuzamos programozás: folyamatok SzPE (C#) 2007 2008, II. félév BMF NIK Párhuzamos programozás: folyamatok A párhuzamos programozás alapjai A végrehajtás szétválasztása: elszigetelés és párhuzamosítás Párhuzamosság és ütemezés az operációs

Részletesebben

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread Végrehajtási szálak Runnable, Thread Végrehajtási szálak Java-ban A Java program az operációs rendszer egy folyamatán (process) belül fut. A folyamat adat és kód szegmensekből áll, amelyek egy virtuális

Részletesebben

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication) 1 Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication) 1. A folyamat (processzus, process) fogalma 2. Folyamatok: műveletek, állapotok, hierarchia 3. Szálak (threads)

Részletesebben

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication) 1 Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication) 1. A folyamat (processzus, process) fogalma 2. Folyamatok: műveletek, állapotok, hierarchia 3. Szálak (threads)

Részletesebben

A párhuzamos végrehajtás alapjai

A párhuzamos végrehajtás alapjai Haladóprogramozás (C#) BMF NIK Párhuzamos programozás: folyamatok és ak A párhuzamos programozás alapjai A végrehajtás szétválasztása: elszigetelés és párhuzamosítás Párhuzamosság és ütemezés az operációs

Részletesebben

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok: Operációs rendszerek MS Windows NT (2000) folyamatok Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok: szálak ütemezése végrehajtásra

Részletesebben

Programozási nyelvek és módszerek Java Thread-ek

Programozási nyelvek és módszerek Java Thread-ek Programozási nyelvek és módszerek Java Thread-ek Laki Sándor lakis@inf.elte.hu 2006. május 3. 0-0 Szálak (Threads) Ahhoz, hogy egy mai rendszer m ködhessen több 10-100 folyamatnak kell futnia. A folyamatok

Részletesebben

Operációs rendszerek. Az NT folyamatok kezelése

Operációs rendszerek. Az NT folyamatok kezelése Operációs rendszerek Az NT folyamatok kezelése Folyamatok logikai felépítése A folyamat modell: egy adott program kódját végrehajtó szál(ak)ból és, a szál(ak) által lefoglalt erőforrásokból állnak. Folyamatok

Részletesebben

Concurrency in Swing

Concurrency in Swing Concurrency in Swing A szálkezelés a swing alkalmazásokban is fontos. Cél egy olyan felhasználói felület készítése, amely soha nem fagy, mindig válaszol a felhasználói interakciókra, bármit is csináljon

Részletesebben

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Szenzorhálózatok programfejlesztési kérdései. Orosz György Szenzorhálózatok programfejlesztési kérdései Orosz György 2011. 09. 30. Szoftverfejlesztési alternatívák Erőforráskorlátok! (CPU, MEM, Energia) PC-től eltérő felfogás: HW közeli programozás Eszközök közvetlen

Részletesebben

Windows ütemezési példa

Windows ütemezési példa Windows ütemezési példa A példában szereplő számolás erősen leegyszerűsített egy valós rendszerhez képest, csak az elveket próbálja bemutatni! Egyprocesszoros Windows XP-n dolgozunk, a rendszer úgy van

Részletesebben

Task-alapú párhuzamosítás C# környezetben

Task-alapú párhuzamosítás C# környezetben Task-alapú párhuzamosítás C# környezetben OE-NIK 1 Task Aszinkron elvégzett feladat A háttérben egy Thread vagy egy ThreadPool egy eleme van: magasabb absztrakciós szinten dolgozunk ThreadPool Gyakorlatilag

Részletesebben

Operációs rendszerek Folyamatok 1.1

Operációs rendszerek Folyamatok 1.1 Operációs rendszerek p. Operációs rendszerek Folyamatok 1.1 Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK A rendszermag Rendszermag

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html 1 Kivételkezelés I. szokatlan, váratlan

Részletesebben

Konkurens TCP Szerver

Konkurens TCP Szerver A gyakorlat célja: Konkurens TCP Szerver Megismerkedni a párhuzamos programozás és a konkurens TCP szerver készítésének az elméleti és gyakorlati alapjaival és egy egyidejűleg több klienst is kiszolgáló

Részletesebben

(kernel3d vizualizáció: kernel245_graph.mpg)

(kernel3d vizualizáció: kernel245_graph.mpg) (kernel3d vizualizáció: kernel245_graph.mpg) http://www.pabr.org/kernel3d/kernel3d.html http://blog.mit.bme.hu/meszaros/node/163 1 (ml4 unix mérés boot demo) 2 UNIX: folyamatok kezelése kiegészítő fóliák

Részletesebben

Programozási technológia 2.

Programozási technológia 2. Programozási technológia 2. Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Párhuzamosság A számítógépek egy időben több feladatot is el tudnak látni Gyakran még egyszerű alkalmazásoktól is elvárt, hogy

Részletesebben

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS A PROCESSZ A PROCESSZ Program: a végrehajtandó utasítások sorozata Processz: a végrehajtás alatt levő program ÁLLAPOTOK LÉTREHOZÁS ALATT Belépés Kilépés TERMINÁLT

Részletesebben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

Ütemezés (Scheduling),

Ütemezés (Scheduling), 1 Ütemezés (Scheduling), Alapfogalmak Ütemezési feltételek (kritériumok) Ütemezési algoritmusok Több-processzoros eset Algoritmus kiértékelése 2 Alapfogalmak A multiprogramozás célja: a CPU foglaltság

Részletesebben

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

Részletesebben

Matematikai és Informatikai Intézet. 4. Folyamatok

Matematikai és Informatikai Intézet. 4. Folyamatok 4. Folyamatok A folyamat (processzus) fogalma Folyamat ütemezés (scheduling) Folyamatokon végzett "mûveletek" Folyamatok együttmûködése, kooperációja Szálak (thread) Folyamatok közötti kommunikáció 49

Részletesebben

BME MOGI Gépészeti informatika 4.

BME MOGI Gépészeti informatika 4. BME MOGI Gépészeti informatika 4. 1. feladat önálló feladatmegoldás Generáljon két 1 és 10 közötti véletlen egész számot, majd kiírja ezekre a számokra a tízes szorzótáblákat! Ha az első generált szám

Részletesebben

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet    Copyright 2008 Johanyák Zsolt Csaba Ugráló gomb Készítsünk egy egyszerű játékprogramot, ami egy mozgó nyomógombot tartalmaz. A nyomógomb beállított ideig marad egy helyben, majd az ablakon számára elhatárolt terület (panel) egy véletlenszerűen

Részletesebben

Operációs rendszerek. Folyamatok ütemezése

Operációs rendszerek. Folyamatok ütemezése Operációs rendszerek Folyamatok ütemezése Alapok Az ütemezés, az események sorrendjének a meghatározása. Az ütemezés használata OPR-ekben: az azonos erőforrásra igényt tartó folyamatok közül történő választás,

Részletesebben

Ütemezés (Scheduling),

Ütemezés (Scheduling), 1 Ütemezés (Scheduling), Alapfogalmak Ütemezési feltételek (kritériumok) Ütemezési algoritmusok Több-processzoros eset Algoritmus kiértékelése 2 Alapfogalmak A multiprogramozás célja: a CPU foglaltság

Részletesebben

Operációs Rendszerek II.

Operációs Rendszerek II. Operációs Rendszerek II. Harmadik előadás Első verzió: 2004/2005. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter Visszatekintés: folyamatok Programok és erőforrások dinamikus összerendelése a program

Részletesebben

Operációs rendszerek II. Folyamatok ütemezése

Operációs rendszerek II. Folyamatok ütemezése Folyamatok ütemezése Folyamatok modellezése az operációs rendszerekben Folyamatok állapotai alap állapotok futásra kész fut és várakozik felfüggesztett állapotok, jelentőségük Állapotátmeneti diagram Állapotátmenetek

Részletesebben

Grafikus felhasználói felület 3.

Grafikus felhasználói felület 3. 1.oldal Grafikus felhasználói felület 3. Képek kezelése - PictureBox - létrehozás, rajzolás - mentés, betöltés Tegyünk fel egy PictureBoxot Ehhez hozzá tudunk rendelni egy img propertyn egy képet, de mi

Részletesebben

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Párhuzamos programok Legyen S parbegin S 1... S n parend; program. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Folyamat

Részletesebben

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna Processzusok 1 Uniprogramozás Program A futás várakozás futás várakozás Idő A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna 2 Multiprogramozás Program A futás vár futás

Részletesebben

C#, OOP. Osztályok tervezése C#-ban

C#, OOP. Osztályok tervezése C#-ban C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat

Részletesebben

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Feladatok (task) kezelése multiprogramozott operációs rendszerekben Operációs rendszerek (vimia219) Feladatok (task) kezelése multiprogramozott operációs rendszerekben dr. Kovácsházy Tamás 3. anyagrész 1. Ütemezéssel kapcsolatos példa 2. Összetett prioritásos és többprocesszoros

Részletesebben

Végrehajtási szálak - kiegészítések. Szinkronizálás, érvénytelenített metódusok helyettesítése

Végrehajtási szálak - kiegészítések. Szinkronizálás, érvénytelenített metódusok helyettesítése Végrehajtási szálak - kiegészítések Szinkronizálás, érvénytelenített metódusok helyettesítése Szinkronizálás Szinkronizálás szükségessége, példa: egy végrehajtási szál kiolvas egy adatstruktúrából egy

Részletesebben

Operációs rendszerek. 3. előadás Ütemezés

Operációs rendszerek. 3. előadás Ütemezés Operációs rendszerek 3. előadás Ütemezés 1 Szemaforok Speciális változók, melyeket csak a két, hozzájuk tartozó oszthatatlan művelettel lehet kezelni Down: while s < 1 do üres_utasítás; s := s - 1; Up:

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64

Részletesebben

9. MPI

9. MPI 9. MPI kertesz.gabor@nik.uni-obuda.hu MPI Message Passing Interface Elosztott memóriájú párhuzamos programozási API Gyk. folyamatok közötti kommunikáció de facto ipari standard Több száz előre definiált

Részletesebben

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Java Programozás 1. Gy: Java alapok. Ismétlés ++ Java Programozás 1. Gy: Java alapok Ismétlés ++ 24/1 B ITv: MAN 2018.02.18 Feladat Készítsünk egy komplett konzolos alkalmazást, mely generál egy számot 0 és 100 között (mindkét határt beleértve), feladatunk

Részletesebben

Párhuzamosság. Java a párhuzamosítást több féle képpen támogatja.

Párhuzamosság. Java a párhuzamosítást több féle képpen támogatja. Java Szálkezelés Párhuzamosság Számító gépek egy időben több feladatot is el tudnak látni. Gyakran még egyszerű alkalmazásoktól is elvárt, hogy párhuzamosan több dologgal is foglalkozzanak. Például egy

Részletesebben

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor. Eseménykezelés előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Függvénymutatókkal Származtatással Interfészekkel Egyéb

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 5. előadás Tömbök átméretezése public static void Resize( ref T[] array, int newsize ) Példa: int[] a=new int[20]; Array.Resize(ref a, 22); 2016. 10. 19.

Részletesebben

Szoftvertechnolo gia gyakorlat

Szoftvertechnolo gia gyakorlat Szoftvertechnolo gia gyakorlat Dr. Johanyák Zsolt Csaba http://johanyak.hu 1. Dependency Injection (függőség befecskendezés) tervezési minta A tervezési minta alapgondolata az, hogy egy konkrét feladatot

Részletesebben

Operációs Rendszerek II.

Operációs Rendszerek II. Operációs Rendszerek II. Második előadás Első verzió: 2004/2005. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter Visszatekintés Visszatekintés Operációs rendszer a számítógép hardver elemei és az

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben

SQLServer. SQLServer konfigurációk

SQLServer. SQLServer konfigurációk SQLServer 2. téma DBMS installáció SQLServer konfigurációk 1 SQLServer konfigurációk SQLServer konfigurációk Enterprise Edition Standart Edition Workgroup Edition Developer Edition Express Edition 2 Enterprise

Részletesebben

A C# PROGRAMOZÁSI NYELV

A C# PROGRAMOZÁSI NYELV A C# PROGRAMOZÁSI NYELV 2010.02.23. Bevezetés C# nyelv jellemzői 2 Kis és NAGY betű érzékeny Minden utasítást pontos vessző zár. Utasítás zárójel a:,. .NET Framework keretrendszerek 3 Microsoft.NET Framework

Részletesebben

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Az UPPAAL egyes modellezési lehetőségeinek összefoglalása Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Résztvevők együttműködése (1) Automaták interakciói üzenetküldéssel Szinkron

Részletesebben

Kalapácsvetés 2016 szöveges

Kalapácsvetés 2016 szöveges Kalapácsvetés 2016 Ebben a feladatban a 2016. évi nyári olimpiai játékokon az atlétika férfi kalapácsvetés döntőjének eredményeit kell feldolgoznia. A döntő 6 dobási sorozatból állt, de a 3. sorozat után

Részletesebben

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL ) Célok: a Java DB adatbázis-kezelő rendszer használatának ismertetése, adatbázisok használata Java alkalmazásokban - kétrétegű architektúra, egyszerű kliens-szerver architektúra használata hálózati alkalmazásokhoz.

Részletesebben

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés. 2.1. Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés. 2.1. Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése Operációs rendszerek 2. Folyamatok Simon Gyula 2. Folyamatok Bevezetés Folyamatkezelés multiprogramozott rendszerben Környezet váltás Folyamatleírók, I/O leírók Szálak Megszakítások Felhasznált irodalom:

Részletesebben

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

BME MOGI Gépészeti informatika 13.

BME MOGI Gépészeti informatika 13. BME MOGI Gépészeti informatika 13. 1. feladat Készítsen alkalmazást, mely elvégzi a következő feladatokat! a. Állítson elő adott intervallumba eső, adott számú véletlen számot, és írja ki a számokat egy

Részletesebben

Thermo1 Graph. Felhasználói segédlet

Thermo1 Graph. Felhasználói segédlet Thermo1 Graph Felhasználói segédlet A Thermo Graph program a GIPEN Thermo eszközök Windows operációs rendszeren működő grafikus monitorozó programja. A program a telepítést követően azonnal használható.

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

Elosztott rendszerek

Elosztott rendszerek Elosztott rendszerek NGM_IN005_1 Konkurrens folyamatok Folyamat koncepció Adatok (információ reprezetáció) M!veletek (input->output) Számítás (algoritmus) Program (formális nyelv) Folyamat (végrehajtás

Részletesebben

OOP és UML Áttekintés

OOP és UML Áttekintés OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java 2. gyakorlat Függvények Általános prototípus Módosítószavak Láthatóság: public, protected, private. Ha nem definiált, akkor úgynevezett package-private láthatóság. Lehet abstract

Részletesebben

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 12. gyakorlat 1 Távoli metódushívás Java-ban (RMI) Java-ban a távoli metódushívás ( Remote Method Invocation, RMI) egy

Részletesebben

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Autóipari beágyazott rendszerek. Komponens és rendszer integráció Autóipari beágyazott rendszerek és rendszer integráció 1 Magas szintű fejlesztési folyamat SW architektúra modellezés Modell (VFB) Magas szintű modellezés komponensek portok interfészek adattípusok meghatározása

Részletesebben

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor Java Programozás 4. Gy: Java GUI Tipper, MVC kalkulátor 15/1 B ITv: MAN 2018.03.10 1. Feladat: Tipper Készítsük el a tippelős programunk grafikus változatát. Az üzleti logika kódja megvan, a felület pedig

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok

Részletesebben

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai Kémiai elemek felfedezése A kémiai elemek kémiailag tovább már nem bontható, egyszerű anyagok. Jelenleg 118 különböző kémiai elemet ismerünk, közüliik a Földön 94 található meg a természetben, ezeket természetes

Részletesebben

Operációs rendszerek MINB240

Operációs rendszerek MINB240 Szemaforok Operációs rendszerek MINB24 3. előadás Ütemezés Speciális változók, melyeket csak a két, hozzájuk tartozó oszthatatlan művelettel lehet kezelni Down: while s < 1 do üres_utasítás; s := s - 1;

Részletesebben

Tartalom. Operációs rendszerek. 5.1. Bevezetés. 5.2. CPU ütemezés. Középtávú ütemezés. Hosszútávú ütemezés

Tartalom. Operációs rendszerek. 5.1. Bevezetés. 5.2. CPU ütemezés. Középtávú ütemezés. Hosszútávú ütemezés Tartalom Operációs rendszerek Bevezetés CPU ütemezés Ütemezési algoritmusok alapjai Ütemezési algoritmusok 5. Ütemezés Simon Gyula Felhasznált irodalom: Kóczy-Kondorosi (szerk.): Operációs rendszerek mérnöki

Részletesebben

Termelő-fogyaszt. fogyasztó modell

Termelő-fogyaszt. fogyasztó modell Termelő-fogyaszt fogyasztó modell A probléma absztrakt megfogalmazása Adott egy N 1 kapacitású közös tároló. Adott a folyamatok két csoportja, amelyek a tárolót használják. n 1 termelő folyamat, m 1 fogyasztó

Részletesebben

Operációs rendszerek MINB240

Operációs rendszerek MINB240 Processzusok, szálak Operációs rendszerek MINB240 2. előadás Szálak, IPC Egy processzus Saját címtartomány Egyetlen vezérlési szál Hasznos lehet több kvázi párhuzamos vezérlési szál használata egy címtartományban

Részletesebben

Balogh Ádám Lőrentey Károly

Balogh Ádám Lőrentey Károly Architektúrák és operációs rendszerek: Folyamatok, ütemezés Balogh Ádám Lőrentey Károly Eötvös Loránd Tudományegyetem Informatikai Kar Algoritmusok és Alkalmazásaik Tanszék Tartalomjegyzék 1. A folyamat

Részletesebben

Haladóprogramozás (C#) 2007 2008, I. félév BMF NIK

Haladóprogramozás (C#) 2007 2008, I. félév BMF NIK Haladóprogramozás (C#) 00 00, I. félév BMF NIK Nemzetközi és többnyelvű alkalmazások fejlesztése Nemzetközi alkalmazások készítésének szempontjai Globalizáció és lokalizáció Nyelvi és kulturális jellemzők

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Java Programozás 11. Ea: MVC modell

Java Programozás 11. Ea: MVC modell Java Programozás 11. Ea: MVC modell 20/1 B ITv: MAN 2018.03.02 MVC Model-View-Controller A modell-nézet-vezérlő a szoftvertervezésben használatos szerkezeti minta. Az MVC célja elválasztani az üzleti logikát

Részletesebben

Java gyakorlat feladatai e s megolda sai (2014.04.10)

Java gyakorlat feladatai e s megolda sai (2014.04.10) Java gyakorlat feladatai e s megolda sai (2014.04.10) 1. Feladat Számítsuk ki a Fibonacci sorozat első 20 tagját! / Fibonacci számsorozat tagjait kiszámoló, egyetlen osztályból álló program @author Bence

Részletesebben

Bevezetés a párhuzamos programozási koncepciókba

Bevezetés a párhuzamos programozási koncepciókba Bevezetés a párhuzamos programozási koncepciókba Kacsuk Péter és Dózsa Gábor MTA SZTAKI Párhuzamos és Elosztott Rendszerek Laboratórium E-mail: kacsuk@sztaki.hu Web: www.lpds.sztaki.hu Programozási modellek

Részletesebben

Az operációs rendszer szerkezete, szolgáltatásai

Az operációs rendszer szerkezete, szolgáltatásai Az operációs rendszer szerkezete, szolgáltatásai Felhasználói programok Rendszerhívások Válaszok Kernel Eszközkezelők Megszakításvezérlés Perifériák Az operációs rendszer szerkezete, szolgáltatásai Felhasználói

Részletesebben

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész Java Programozás 9. Gy: Java alapok Adatkezelő 5.rész 15/1 B ITv: MAN 2018.04.22 A Keresés funkció Programlogika: 1. A keresés az etm táblamodellben fog keresni, és a találat rekordokat átmásolja egy másik

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát

Részletesebben

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>(); BME MOGI Gépészeti informatika 17. A C# nyelv generikus típusait a System.Collections.Generics névtérben találhatjuk meg. Ez a névtér számos osztályt és interfészt tartalmaz, amelyek lehetővé teszik előre

Részletesebben

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Vizuális és eseményvezérelt programozás , II. félév BMF NIK Vizuális és eseményvezérelt programozás 2006 2007, II. félév BMF NIK Eseménykezelés A képviselő( delegate ) Képviselők C# nyelvi megvalósítása Metódushívás képviselőn keresztül Az esemény ( event ) Esemény

Részletesebben

Operációs rendszerek MINB240

Operációs rendszerek MINB240 Mutex Operációs rendszerek MINB24 3. előadás Ütemezés Bináris szemafor Szemaforváltozója csak két értéket vehet fel ( / 1; foglalt / szabad) Kölcsönös kizárásra 1 kezdőértékű mutex A kritikus szakaszba

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 0801 ÉRETTSÉGI VIZSGA 2009. május 22. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM

Részletesebben

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Operációs rendszerek. Folyamatok kezelése a UNIX-ban Operációs rendszerek Folyamatok kezelése a UNIX-ban Folyamatok a UNIX-ban A folyamat: multiprogramozott operációs rendszer alapfogalma - absztrakt fogalom. A gyakorlati kép: egy program végrehajtása és

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

LabView Academy. 4. óra párhuzamos programozás

LabView Academy. 4. óra párhuzamos programozás LabView Academy 4. óra párhuzamos programozás Ellenőrző kérdések Hogyan lehet letiltani az automatikus hibakezelés funkciót? a) Engedélyezzük az Execution highlighting ot b) A subvi error out cluster-jét

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2010/2011-2 félév, 11. gyakorlat (az előző 2 gyak közül az egyiken ZH volt, a másik szünet miatt elmaradt) 1 JAR fájl készítés A JAR (Java

Részletesebben

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Készítette: Gipsz Jakab Neptun-azonosító: A1B2C3 E-mail: gipszjakab@vilaghalo.hu Kurzuskód: IP-08PAED Gyakorlatvezető

Részletesebben

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"

Részletesebben

Előadás_#03. Előadás_03-1 -

Előadás_#03. Előadás_03-1 - Előadás_#03. 1. Ütemezés [OR_05_Ütemezés_ok.ppt az 1-30. diáig / Előadás_#03 (dinamikusan)] Tekintsük át, hogy eddig minek a kapcsán merült fel ütemezés. Tulajdonképpen minden olyan lépés, ami állapot

Részletesebben