Az unix programozás alapjai a szálakkal a posix pthreads használatával

másolat

1 A Unix OS alapjai Programozás szálakkal a POSIX Pthreads használatával Unix operációs rendszer alapjai Slide 1 of 34

2 Ma: többszálas programozás Mi a szál? Bevezetés a párhuzamos programozásba A POSIX száljegyzék áttekintése Menetkezelés Kritikus szakaszok és szinkronizációs objektumok Mutexes feltételes változók Unix operációs rendszer alapjai Slide 2 of 34

ha ($ ez-> show_pages_images $ page_num doc ['images_node_id']) // $ lenyisszant = Library :: get_smart_snippet ($ text, DocShare_Docs :: CHARS_LIMIT_PAGE_IMAGE_TITLE); $ snips = Könyvtár :: get_text_chunks ($ szöveg, 4); ?>

Az unix programozás alapjai a szálakkal a posix pthreads használatával

Az unix programozás alapjai a szálakkal a posix pthreads használatával

5 A folyamat és a szálak összehasonlítása Unix operációs rendszer alapjai Slide 5 of 34

6 Egyetlen séma kontrasztja Stack pointer CPU regiszterek Ütemező paraméterek (prioritás, házirend) Jelmaszk Speciális menetadatok Unix operációs rendszer alapjai Slide 6 from 34

7 Teljes szálak léteznek a folyamatot, és a folyamatokat források saját szála az ellenőrzés, feltéve, hogy a generáló folyamat, valamint a támogatás az OS saját konkrét források felhasználásához szükséges Task Scheduler megosztott feldolgozni források végén a folyamat valamennyi szálat megszüntetheti „legkoveny eljárás” okozó menet és összefüggésben kapcsoló szálak között ugyanazon folyamat újraindítás nélkül oldal táblázatok és így tovább. Fundamentals Unix operációs rendszer 7. dia 34

10 A villa és a pthread_create összehasonlítása

11 Gyakori problémák párhuzamos programozás Modell kiválasztása párhuzamos programozás párhuzamosításához feladatok Kiegyensúlyozó a terhelést a CPU kölcsönhatás részfeladatok Egymásrautaltság szinkronizálása adatokhoz való hozzáférés és a megjelenése „verseny feltételeit” (verseny körülmények között), hogy optimalizálja a memória használat I Cég / O program bonyolultsága, és így tovább. Alapjai Unix operációs rendszerek 11. dia 34

Az unix programozás alapjai a szálakkal a posix pthreads használatával

12 Párhuzamos menetfuttatás Unix alapjai Slide 12 of 34

13 Mely programok alkalmasak a többszálas nyomtatáshoz? Munka vagy adatfeldolgozó lehet végezni független feladatok egyidejű blokkolási valószínűség a hosszú I / O egy bizonyos helyen a program segítségével több ciklusban van szükség válaszként aszinkron események Egyes részfeladatok fokozott prioritás-alapú operációs rendszerek alapvetően Slide 13 34

14 A multithreading Manager / Worker Conveyor egyes egyenlő jogainak egyes modellei Unix operációs rendszer alapjai Slide 14 of 34

Az unix programozás alapjai a szálakkal a posix pthreads használatával

15 Megosztott memória modell Unix operációs rendszer alapjai Slide 15 of 34

Az unix programozás alapjai a szálakkal a posix pthreads használatával

16 Thread Safe Threads Unix operációs rendszer alapjai Slide 16 of 34

17 Pthreads API nem ingyen! Az IEEE által elosztott, de számos Linux disztribúcióban szerepel. A menetek kezelésére szolgáló eljárások csoportjai: generálás, kapcsolás, csatlakozás, attribútumok stb. Mutexes: a kölcsönös kizáró objektumok kezelése menetes szinkronizáláshoz; feltételes változók: a szálak kölcsönhatásának tárgyai kölcsönösen elfogadott feltételek és jelek szerint. A Unix operációs rendszer alapjai 17/34

Az unix programozás alapjai a szálakkal a posix pthreads használatával

18 Pthreads API cím megállapodás Unix operációs rendszer alapjai Slide 18 of 34

Az unix programozás alapjai a szálakkal a posix pthreads használatával

19 Szálak kezelése Unix operációs rendszer alapjai Slide 19 of 34

20. Befejezése a cérna, amikor a visszatérő az eljárást, amikor a pthread_exit az eljárás hívásakor pthread_cancel másik szál a végén az egész folyamat Megjegyzések: ha a fő oka pthread_exit a zavershetsya csak a fő szál, különben az egész folyamat pthread_exit nem zárja alapjai OS nyitott fájlt Unix Slide 20 34

21 A szálak csatlakoztatása pthread_join blokkolja ezt a szálat, amíg a megadott szál meg nem szűnik. ellenőrizheti a kapcsolódó szál állapotának állapotát egyetlen szálon érhetõ el, vannak más szinkronizálási módszerek is: mutexek és feltételes változók A szál nem köthetõ (különálló) Unix operációs rendszer alapjai Slide 21 of 34

22 szál Management (opcionális). Szálazonosítóból és attribútumok „rejtett” (átlátszatlan) objektumokat, így a szál azonosítója. pthread_self () összehasonlítani két ID: pthread_equal (thread1, thread2) egyedi inicializálási folyamatot: pthread_once (once_control, init_routine) a mozgás a szál a ütemező sorban: pthread_yield () alapjai Unix Slide 22 34

23 Mutex szinkronizációs objektumok (kölcsönös kizárás) A mutex a megosztott erőforrásokhoz való hozzáférés zárolásaként működik. Ha megpróbálja megakadályozni a hozzáférést több szálból egyszerre, garantált, hogy csak egy szál fér hozzá. Az állapotváltozó az értéktől függően szabályozza az adatokhoz való hozzáférést. Elkerüli az állapotfelmérési ciklusok programozását. Mindig egy mutexrel együtt használják. A Unix operációs rendszer alapjai 23/34

24 példa a verseny körülményeiről

25. Munka a mutex létrehozása és inicializálása mutexek több szál próbál zahvanit (lock) a mutexet csak egy szál mutex mesterek, mások blokkolja várva kiadás, a tulajdonos a mutexet teljesít „kritikus szakasz” tulajdonosa mutexek mutexek kibocsátások másik szál megragadja a mutex stb Végül a mutex megsemmisül a Unix operációs rendszer fundamentumaiból

26 Munka feltételes változók nyilatkozatot és inicializálása globális változó (pl. Count) létrehozása állapot változó Generation két szál szál 1 szál 2 folyamatban, amíg a feltétel teljesül Begyűjti mutexek Hívás pthread_cond_wait c önműködő mutexek egy jel 2 felébred, és lezárja a mutex kifejezetten elengedi a mutex tovább Csatlakozz / Continue Futó Begyűjti Megváltoztatja a globális mutex változót vár 1 Prveryaet értéke a globális változó, és eleget tesznek a 1 jelet küld elsajátította bozhdaet mutexeket folytatása alapjai Unix operációs rendszerek Slide 26 34

27 Az ütemező és a szálak problémái A szálak ütemező algoritmusa speciális lehet, de gyakran a szokásos. A Pthreads API olyan funkciókat tartalmaz, amelyek meghatározzák a normál algoritmust módosító ütemezői és menetes prioritásait. A köteg és a szál egyedi adatai törlődnek a szál végén, de egy másik szál átvihető. Speciális problémák vannak a szál prioritás kezelésében. A különböző folyamatok meneteinek kölcsönhatása. Conditional változók megosztása különböző folyamatokkal Unix operációs rendszer alapjai Slide 27 of 34

Kapcsolódó cikkek