Többszálú

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2016. március 16-án áttekintett verziótól ; az ellenőrzések 43 szerkesztést igényelnek .

A multithreading  ( eng.  Multithreading ) egy platform (például egy operációs rendszer , egy virtuális gép stb.) vagy egy alkalmazás olyan tulajdonsága, amely abból áll, hogy az operációs rendszerben generált folyamat több futó szálból állhat. párhuzamosan ", majd időben enni előírt rendelés nélkül . Egyes feladatoknál ez a szétválasztás a számítógépes erőforrások hatékonyabb felhasználását eredményezheti .

Az ilyen szálakat végrehajtási szálnak is nevezik (az angol  thread of execution szóból ); néha "szálnak" (az angol  szál szó szerinti fordítása ) vagy informálisan "szálnak" nevezik.

Leírás

A multithreading lényege a kvázi-multitasking egy végrehajtható folyamat szintjén, vagyis az összes szál a folyamat címterében fut le. Ezenkívül egy folyamat minden szála nem csak közös címteret használ, hanem közös fájlleírókat is . Egy futó folyamatnak legalább egy (fő) szála van.

A multithreading (mint programozási doktrína ) nem tévesztendő össze sem a multitaskinggal , sem a multiprocessing -el , annak ellenére, hogy a többfeladatos működést megvalósító operációs rendszerek hajlamosak a többszálas működést is megvalósítani.

Egy adott rendszer többszálú megvalósításának előnyei a többfeladatos rendszerhez képest a következők:

Egy adott rendszer többszálas megvalósításának előnyei az egyszálashoz képest a következők:

Abban az esetben, ha a végrehajtási szálak viszonylag összetett interakciót igényelnek egymással, többfeladatos problémák, például holtpontok léphetnek fel.

Hardver implementáció

A hagyományos processzorokon a szálkezelést az operációs rendszer kezeli. A szál addig fut, amíg hardveres megszakítás nem történik, rendszerhívás nem történik, vagy amíg az operációs rendszer által a számára kijelölt idő le nem telik. Ezt követően a processzor átvált az operációs rendszer kódjára, amely elmenti a szál állapotát (kontextusát), vagy átvált egy másik szál állapotára, aminek szintén van ideje a végrehajtásra. Ilyen többszálú átdolgozással kellően nagy számú processzorciklust fordítanak a kontextust váltó operációs rendszer kódjára. Ha a száltámogatás hardverben van megvalósítva, akkor maga a processzor képes lesz váltani a szálak között, és ideális esetben több szálat is végrehajtani egyidejűleg minden órajelben. Az operációs rendszer és a felhasználó számára egy ilyen fizikai processzor több logikai processzornak tekinthető.

A többszálú feldolgozásnak két formája valósítható meg a hardveres processzorokban:

Szál megvalósítási típusok

  1. Nincs időzítő megszakítás ugyanazon a folyamaton belül
  2. Ha blokkoló rendszerkérést használ egy folyamaton, annak minden szála blokkolva lesz.
  3. A megvalósítás összetettsége

Szál interakció

Többszálú környezetben gyakran vannak olyan feladatok, amelyek megkövetelik néhány szál felfüggesztését és újraindítását, mások munkájától függően. Ezek különösen a hozzáférési konfliktusok megelőzésével kapcsolatos feladatok, amikor ugyanazokat az adatokat vagy eszközöket párhuzamos futtatható szálakból használják. Az ilyen problémák megoldásához speciális objektumokat használnak a szál interakcióhoz, például kölcsönös kizárásokat (mutexet), szemaforokat, kritikus szakaszokat, eseményeket stb. Ezen objektumok közül sok kernelobjektum, és nemcsak ugyanazon folyamat szálai között használható, hanem különböző folyamatok szálai közötti interakcióra is.

A terminológia kritikája

Az angol thread kifejezés „szál”-nak való fordítása a programozással kapcsolatos kontextusban ellentmond a „szál” általános nyelvi kontextusban való fordításának, és ütközéseket okoz a Data stream kifejezéssel .

A „folyam” kifejezés azonban a hetvenes években a Mir kiadó által készített külföldi szakirodalom fordításaihoz kapcsolódik. Jelenleg "akadémiai körökben" (vagyis a tankönyvekben, oktatási segédletekben, egyetemi kurzusokban, szakdolgozatokban stb.) referenciának számít. A "szál", "szál" stb. kifejezések szakzsargonnak minősülnek .

Lásd még

Irodalom

Jegyzetek

  1. Jeffrey Richter . "Jeffrey Richter. Windows szakembereknek. Hatékony WIN32 alkalmazások készítése a 64 bites Windows sajátosságaihoz igazítva. 2001
  2. MSDN http://msdn.microsoft.com/en-us/library/ms682530%28VS.85%29.aspx Archiválva : 2011. december 23. a Wayback Machine -nél

Linkek