Thread (multithreading): Rozdiel medzi revíziami

z Wikipédie, slobodnej encyklopédie
Smazaný obsah Přidaný obsah
MisoH (diskusia | príspevky)
porovnanie vlákien a procesov
MisoH (diskusia | príspevky)
d wikilinky
Riadok 1: Riadok 1:
'''Thready''' (z angl. vlákno; súvislosť) alebo hovorovo '''vlákna''' v [[informatika|informatike]] sú nezávisle bežiace úlohy, na ktoré je pri tzv. [[multithreading]]u rozdelený jeden [[program]].
'''Thready''' (z angl. vlákno; súvislosť) alebo hovorovo '''vlákna''' v [[informatika|informatike]] sú nezávisle bežiace úlohy, na ktoré je pri tzv. [[multithreading]]u rozdelený jeden [[program]].


Použitie threadov je spôsob, ako rozdeliť program na dve alebo viac rovnocenne vykonávaných úloh. Viaceré vlákna môžu byť vykonávané naraz – nazýva sa to [[multithreading]] (porovnaj s [[multiprogramovanie]]). Multithreading sa obyčajne zabezpečuje buď [[zdieľanie času|rozdeľovaním času]] (kde jeden procesor prepína medzi vykonávaním rôznych vlákien) alebo [[paralelné spracovanie dát]] - [[multiprocessing]] (kde sú vlákna vykonávané na viacerých procesoroch ([[symmetric multiprocessing|SMP]]) či jadrách procesora ([[chip multiprocessing|CMP]])). Vlákno sa podobá [[proces]]u, odlišný je spôsob zdieľania prostriedkov a súvisiaci kontext.
Použitie threadov je spôsob, ako rozdeliť program na dve alebo viac rovnocenne vykonávaných úloh. Viaceré vlákna môžu byť vykonávané naraz – nazýva sa to [[multithreading]] (porovnaj s [[multiprogramovanie]]). Multithreading sa obyčajne zabezpečuje buď [[zdieľanie času|rozdeľovaním času]] (kde jeden procesor prepína medzi vykonávaním rôznych vlákien) alebo [[paralelné spracovanie dát]] - [[multiprocessing]] (kde sú vlákna vykonávané na viacerých procesoroch ([[symmetric multiprocessing|SMP]]) či jadrách procesora ([[chip multiprocessing|CMP]])). Vlákno sa podobá [[proces (informatika)|procesu]], odlišný je spôsob zdieľania prostriedkov a súvisiaci kontext.


Veľa moderných operačných systémov priamo podporuje obidva spôsoby – rozdeľovanie času aj multiprocessing s plánovaním procesov ([[scheduling]]). Jadro operačného systému dovoľuje programátorom manipulovať s vláknami cez [[vyvolanie systému|vyvolania systému]]. Niektoré implementácie sa nazývaju vlákna jadra ([[kernel thread]]s) alebo odľahčené procesy. Program može mať vlákna implementované aj bez podpory operačného systému pomocou časovačov, signálov, alebo inak. Je však potrebné prerušiť vlastné vykonávanie a odtiaľ urobiť vlastné rozdeľovanie času. Tieto vlákna sa niekedy nazývaju používateľské.
Veľa moderných operačných systémov priamo podporuje obidva spôsoby – rozdeľovanie času aj multiprocessing s plánovaním procesov ([[scheduling]]). Jadro operačného systému dovoľuje programátorom manipulovať s vláknami cez [[vyvolanie systému|vyvolania systému]]. Niektoré implementácie sa nazývaju vlákna jadra ([[kernel thread]]s) alebo odľahčené procesy. Program može mať vlákna implementované aj bez podpory operačného systému pomocou časovačov, signálov, alebo inak. Je však potrebné prerušiť vlastné vykonávanie a odtiaľ urobiť vlastné rozdeľovanie času. Tieto vlákna sa niekedy nazývaju používateľské.

Verzia z 19:44, 8. september 2008

Thready (z angl. vlákno; súvislosť) alebo hovorovo vlákna v informatike sú nezávisle bežiace úlohy, na ktoré je pri tzv. multithreadingu rozdelený jeden program.

Použitie threadov je spôsob, ako rozdeliť program na dve alebo viac rovnocenne vykonávaných úloh. Viaceré vlákna môžu byť vykonávané naraz – nazýva sa to multithreading (porovnaj s multiprogramovanie). Multithreading sa obyčajne zabezpečuje buď rozdeľovaním času (kde jeden procesor prepína medzi vykonávaním rôznych vlákien) alebo paralelné spracovanie dát - multiprocessing (kde sú vlákna vykonávané na viacerých procesoroch (SMP) či jadrách procesora (CMP)). Vlákno sa podobá procesu, odlišný je spôsob zdieľania prostriedkov a súvisiaci kontext.

Veľa moderných operačných systémov priamo podporuje obidva spôsoby – rozdeľovanie času aj multiprocessing s plánovaním procesov (scheduling). Jadro operačného systému dovoľuje programátorom manipulovať s vláknami cez vyvolania systému. Niektoré implementácie sa nazývaju vlákna jadra (kernel threads) alebo odľahčené procesy. Program može mať vlákna implementované aj bez podpory operačného systému pomocou časovačov, signálov, alebo inak. Je však potrebné prerušiť vlastné vykonávanie a odtiaľ urobiť vlastné rozdeľovanie času. Tieto vlákna sa niekedy nazývaju používateľské.

Porovnanie vlákien a procesov

Procesy v tradičných multitask operačných systémoch sa od vlákien odlišujú najmä tým, že procesy:

  • sú spravidla nezávislé,
  • obsahujú značnú informáciu o svojom stave,
  • majú oddelený adresný priestor a
  • interagujú len prostredníctvom mechanizmov na medziprocesorovú komunikáciu, ktoré poskytuje operačný systém.

Na druhej strane viacero vlákien priamo zdieľa stavové informácie procesu, ako aj pamäť a ďalšie zdroje. Zmena kontextu medzi vláknami jedného procesu je spravidla rýchlejšia ako zmena kontextu medzi procesmi. Systémy ako Windows NT alebo OS/2 majú "lacné" vlákna a "drahé" procesy; v ostatných operačných systémoch nie je medzi vláknami a procesmi taký veľký rozdiel.