szerintem meg ne keverjük a dolgokat...
multithreading azt jelenti, hogy EGY PROCESSZEN belül az oprendszer megengedi, hogy több szálon futtassunk dolgokat... Ezek a threadek márpedig MEGOSZTJÁK az address space-t. Ezt írja a két link, amit bepészteltél.
az, hogy ez hogy van megimplementálva, kernelben-e vagy userspace-ben, hogy egy IO-ra vagy condition variable-re váró threadet signalokkal ébreszt-e fel a kernel vagy füstjelekkel, a schedulingre timer interrupt-ot vagy varázslatot használ-e, az már implementáció kérdése és a futó programot nem érdekli és ne is érdekelje.
Persze, semmi köze a programhoz, :) (de van) Főleg, hogy a programban valósították meg, és pl 20 ms-onként lefut egy megszakítás, pl a képernyőhöz időzítve, ami a program része, és program érdekében végez dolgokat. :) (egy példa volt)
a te user módú "programodban" sosem fog lefutni egy megszakítás... az mindig kernelben fut le, kernel módban és kernel stackkel... s annak akkor is le kell futnia, amikor az a cpu pont egy kernel threaden dolgozik. És ez a megszakítás nem a te programod érdekében végez dolgokat, hanem a rendszer érdekében, elsősorban. persze, a kernel ad mechanizmusokat, hogy a te programod is valamelyest szinkronizálhasson egy ilyen eventtel...
És miből gondolod, hogy egy interrupt hatására induló, futó (program-)szál nem tudja megosztani mindazt, amit írtál: "share process instructions, and share data transparently with the other threads"? - elég korlátozottak lennének a lehetőségek.
ezt nem értem. mi az, hogy "interrupt hatására induló, futó szál"? te el is olvastad, amit kérdeztél? ez az angol mondat egész pontosan azt mondja, hogy a threadek megosztják az address space-t: a kódot és az adatokat... WITHIN THE PROCESS (amit levágtál a mondat végéről).
De a te programod SOSEM fogja elérni a kernel adatait (ahol a megszakítás fut) és az interrupt handlerből sem nagyon lehet matatni az éppen futó user módú taszk memóriájában (mert lehet, hogy az a page pont ki van swappelve... linuxon van copy_from_user(), de azt nem lehet ISR-ből használni, hanem ehhez kell kérni egy tasklet, workqueue, bottom-half, stb. és majd abban).
A thread lényegében annyi, amit írtam, azt hidd el, hogy nem szabja meg senki a mikéntjét. Ezért írtam, hogy logikai dolog. Persze én elhiszem, hogy ha valaki "thread"-et említ, akkor leginkább az OS thread-re gondolnak először (ma).
nem értem, mit akarsz ezzel mondani.
Én nem filozofálgatásnak gondolom, hanem alapfogalomnak (ahogy az oracle, és a priceton is, de csak a két első weblapot belinkeltem ami megjelent a "definition of thread" keresésre, és leírták azt).
én is ezt mondom... szerintem meg ti filozófálgattok az interruptokról és a signalokról, amikor multithreadingről beszélünk... bzt szerint az a "multithreadingnek" egy formája... lol (én erre kértem forrást)
szóval, thread=szál, interrupt=system related mechanism, sometimes used for sheduling threads, signaling = limited form of inter process communication