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'])
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
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
15 Megosztott memória modell Unix operációs rendszer alapjai Slide 15 of 34
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
18 Pthreads API cím megállapodás Unix operációs rendszer alapjai Slide 18 of 34
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