( bzt | 2024. 08. 24., szo – 22:42 )

Valóban nagyon nem egyszerű, meg merem kockáztatni, hogy az IT egyik legszövevényesebb és legkomplexebb része az alacsony szintű és kernel programozás.
A processek mindig külön címtartományban vannak
Nem feltétlen. Olyan architektúrán is fut több processzes (és több szálas) OS, aminek nincs virtuális memóriakezelése (azaz az egész gép egyetlen címtér), például 8086-ra fordított Minix, vagy az eredeti M68K-n futó AmigaOS, vagy a Commodore64-en futó Contiki. Érdekesség, a Microsoftnak van egy olyan kutatási céllal írt OS-e, ahol minden processz egyetlen közös címtérben fut, itt a szálakat SIP-nek (Software Isolated Process) hívják.
amikor az operációs rendszer elindít egy programot, akkor létrehoz egy vagy több processt
Pontosan egyet. Több processz valóban tartozhat hozzá, de ahhoz a programnak fork() rendszerhívást kell explicit használnia.
Egy process egy vagy több "vezérlési szekvenciából" áll, azaz egy vagy több thread-ből áll.
Így van.
Az operációs rendszer biztosítja, hogy az egy processen belül futó thread-ek megosztják a processz címtartományát
Kicsit sántít. Ez nem feltétel, ám való igaz, hogy a mai modern (címtérszeparációt támogató) gépeken és a legújabb (szálakat ütemezni képes) kernel-nél így van. A kernelnek nem szükséges tudnia a processzen belüli thread-ekről, azokat a libc is kapcsolgathatja saját hatáskörben (de ez csak régen volt így, manapság már nem, ma már tényleg úgy megy, ahogy írod).
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
Igen, ez már a kernel implementáció belügye, a szál valóban egy ettől független fogalom.