Sobes.tech
Senior

Aký je rozdiel medzi procesmi a vláknami v Linuxe? Ako ich Linux vidí zvnútra?

sobes.tech AI

Odpoveď od AI

V Linuxe sú procesy a vlákna (threads) implementované prostredníctvom jednotného mechanizmu — task_struct. Hlavný rozdiel medzi procesom a vláknom je miera zdieľania zdrojov:

  • Proces: samostatný adresný priestor, vlastné zdroje (súbory, pamäť atď.).
  • Vláknо: zdieľa s ostatnými vláknami toho istého procesu adresný priestor a zdroje, odlišuje sa len identifikátorom vlákna (TID).

V Linuxe sú vlákna jednoducho procesy, ktoré zdieľajú určité zdroje. Toho sa dosahuje systémovým volaním clone(), kde je možné určiť, ktoré zdroje budú spoločné.

V jadre Linux je každé vlákno reprezentované štruktúrou task_struct. Proces je skupina takýchto úloh, zoskupených do skupiny procesov (thread group), kde prvé vlákno je hlavný proces.

Preto Linux nerobí zásadný rozdiel medzi procesom a vláknom, sú to jednoducho úlohy s rôznymi súbormi zdieľaných zdrojov.