Folyamatok és szálak, valamint mnogopotchnye multitasking rendszer, a különbség a technológiai folyamatból, előnyök és

Folyamatok és szálak

P folyamatok - végrehajtható példányát a kérelmet. Például, amikor megnyitja a Word alkalmazást, akkor indítsa el a folyamatot végrehajtó MS Word programot. Flow - egyetlen végrehajtható feladat a folyamatban. Az eljárás magában foglalhatja több végrehajtható szálak. Miután az alkalmazás megkezdése jelzi a fő stream, amely ezután eredményezhet más szálak.

Minden folyamat saját memóriájába. Patakok azonos futtató folyamat keretében osztott memóriát egymással. A belsejében az operációs rendszer saját azonosítója van. Folyam létezik egy folyamat, és egy-egy azonosítóval az üzemi alkalmazás. Minden szál saját verem (ő nem osztja azt a többi patakok és más patakok nem mászni), és a saját sor nyilvántartások (stream nem változtatja meg a regiszter értékét egy másik szál működés közben). patakok gyakran nevezik „könnyű” folyamatok, mert szükség kevesebb erőforrást futtatni, mint egy új folyamat. Attól függően, hogy a végrehajtás egy tipikus asztali számítógép is használható hatékonyabban egységek több tízezer folyik.

  • folyamat azonosítója
  • környék
  • munkakönyvtárt
  • nyilvántartások
  • kazal
  • halom
  • fájlleíróból
  • Megosztott könyvtárak (DLL, így)
  • Processzorok közötti kommunikációs eszközök (csövek, üzenetsor a szemafor, vagy generalizált memória)
  • Konkrét operációs rendszer erőforrások
  • Stack Pointer (mutató a tetején a verem tulajdonképpen „saját” verem, mint a folyamat, nincs áramlás)
  • nyilvántartások
  • Tulajdonságok (szükséges ütemezés, például prioritás vagy politika)
  • Specifikus adatfolyam
  • Konkrét operációs rendszer erőforrások

Multitasking és Concurrency

M nogozadachnye rendszer futtatható több feladatot egyszerre. Multitasking nem feltétlenül jelenti az igazi párhuzamos végrehajtás: van elég hosszú idő, ilyen rendszerek jelentek meg, és amikor a processzorok egymagos. Az összes feladat ütemezi a időtartamot, amelyen belül ezt a munkát. Ezt követően, a feladat az készenléti állapotot. Az összes feladat olyan elsőbbségi, illetve annál magasabb a prioritás, annál több időt a feladat futhat.

Multitasking rendszer egy egyszálú processzor illúzióját keltik egyidejű végrehajtása több folyamat. Tegyük fel, hogy három folyamatokat. Ha mindegyikük munkaidő t1, t2 és t3, a teljes idő lesz egyenlő t1 + t2 + t3.

Következetes végrehajtása a három folyamat egy egyszálú processzor

Ha most fogjuk osztani az egyes feladatokat a N részre, a teljes átfutási idő DT1 * N + dt2 * N + DT3 * N + DTS * N * N, ahol dts - mennyi időt vesz igénybe, hogy visszaállítsa a feladattal összefüggésben (feladatütemezőtől ).

Minden egyes ilyen eljárás a egyetlen szálra processzor van osztva időközönként

Egyrészt, a következetes végrehajtása a három feladat overhead nélkül közötti váltást kell sokkal gyorsabb. A gyakorlatban azonban ez gyakran másképp. Ha a folyamat nem sok IO művelet vagy dolgozó külső forrásokat, akkor az idő nagy részében ez tétlen, várakozás adatokat. Ez leállás vesz másik feladat. Így a teljes idő kisebb lesz.

Amikor a folyamat a legtöbb időt vár prostaivat erőforrások párhuzamos végrehajtását több feladatot lehet gyorsabb, mint a soros

Ha tehát van egy „chislodrobitelnaya” probléma, hogy nincs előnye lesz. De azt se felejtsük el, hogy bizonyos esetekben, akár egy egymagos processzor, mint a mesterséges párhuzamosítás jelentősen gyorsíthatja a végrehajtást.

pontosabban a többmagos rendszerek: ha a feladat van osztva több patakok, amelyek mindegyike képes futtatni valóban párhuzamos. Azaz, ha a probléma megoldására 4 szál, egy helyett, akkor potenciálisan fog működni 4-szer gyorsabban. Egyértelmű, hogy valahol van egy fogás ...

Először is, a gyorsulás nőtt a processzorok számát és magok növeli lineárisan és van valamilyen felső határa a feladatot (lásd. Amdahl törvénye). És másodszor, a probléma sokkal bonyolultabb, ha vannak közös források.

erőforrások megosztása

W tyúk több szálon ezt a munkát minden, a memóriát nem megosztó, akkor jelentősen felgyorsítja a munkát. További költségek csak akkor lenne szükség a források elosztását a gazdasági folyamatok és továbbítja azokat a szükséges adatokat. Ha több szálat kell kommunikálni egymással, hogy az adatok továbbítására, feldolgozására egyetlen tárgy, amely együttesen éri el ugyanazt az erőforrást (tipikusan egy osztott memória), akkor ott vannak az úgynevezett verseny feltételeit - versenyhelyzet - ha a munka eredménye függ a megrendelés erőforrásokhoz való hozzáférés .

Például mi kell hozzá két tömböt a és b az azonos hosszúságú, és helyezze az eredményt a tömb c. Minden érték c [i] függ [i] és b [i], és független a többitől. Oszthatjuk a tömb több részre, és az egyes folyamok fog részt csak hozzáadásával ezek a helyek, anélkül, hogy befolyásolná a többi stream. Mindannyian lesz közös változók a, b és c, de mindig alkalmazni függetlenül csak a külön memória területeken.

POSIX szálak

És vályú történelem történt, hogy minden gyártó a vas végre saját fejlesztésű változata folyik. A megvalósításban nagyon különböznek egymástól, ami nagy problémát jelent a programozók, és lehetetlenné teszi, hogy írjon hordozható szoftver.

Jelenleg a legtöbb gyártó együtt saját interfész streaming ajánlatot pthreads. Pthreads általában egy sor típusok és funkciók C nyelven leírt pthread.h fájlt, és végre .h. lib. dll, stb fájlok mellékelt könyvtárban. Néha pthread egy része egy másik könyvtár (például, libc).

ru-Cyrl 18- bemutató Sypachev S. S. 1989/04/14 [email protected] Stepan Sypachev diákok

Még mindig nem világos? - írási kérdésre a dobozban