( dlaszlo | 2024. 08. 24., szo – 21:30 )

Ezt most tényleg csak azért boncolgatom (nem kötözködésnek szánom), hogy milyen nehéz jól leírni egy ilyet:

egyes processek közös címtartományban vannak, és osztoznak egyes erőforrásokon (file handle, shared memory, etc), ezek a threadek.

Ez a mondat amit írtál, szó szerint azt jelenti, hogy

  • "egyes processek közös címtartományban vannak",  - Ez szerintem hamis: A processek mindig külön címtartományban vannak.
  • "és osztoznak egyes erőforrásokon (file handle, shared memory, etc)," - Igaz: Ez lehet igaz, az operációs rendszer segítségével elérhetnek közös erőforrásokat
  • "ezek a threadek." - Hamis: A processek biztosan nem thread-ek.

Megpróbálom én is, hogy hogyan gondolok erre, bár ez is félreérthető, pongyola lehet. Majd kijavítotok, ha hülyeséget írok szerintetek.

Szerintem:

  • Egy futó program az egy vagy több processből áll, amikor az operációs rendszer elindít egy programot, akkor létrehoz egy vagy több processt. - A processek között az operációs rendszer biztosítja, hogy szeparálva legyenek egymástól. (De léteznek módszerek pl a processzek közötti komunikácóra (inter process communication), ezek lehetnek például queue-k, amit Te is említettél.  Az egyes processek hierarchikus szerkezetben vannak, ahol az indító process a parent processz, a létrehozott processz pedig a child processz.)
  • Egy process egy vagy több "vezérlési szekvenciából" áll, azaz egy vagy több thread-ből áll. Az operációs rendszer biztosítja, hogy az egy processen belül futó thread-ek megosztják a processz címtartományát, a külön processben futó thread-ek viszont elkülönült címtartományban futnak.
  • A thread egy vezérlési szekvencia, amik egy adott végrehajtási irányt követnek.

De ez már arról szól, hogy hogyan működik egy operációs rendszer, ezek az operációs rendszer lehetőségei, a thread ez egy ettől függetlenül létező logikai fogalom, amit az operációs rendszernek is használnia kell a program futtatásának érdekében. De szerintem nem értelmezhető az, hogy bizonyos esetekben a számítógépen nem vezérlési szekvencia (azaz thread) fut.