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.