( bzt | 2024. 08. 21., sze – 18:06 )

"többszálúság nélkül nincs multitasking se" ezt javítsd légyszíves

Nem javítom, mert ennek a mondatnak semmi köze azokhoz, amiket írsz.

Ez az állítás igaz, függetlenül attól, hogy egy vagy több szállal rendelkezik-e egy processz, függetlenül attól, hogy kooperatív vagy preemptív, és attól is függetlenül, hogy időosztásos vagy valósidejű-e az ütemező.

mindezt olyan architektúrákon ahol akkoriban nem volt multithread

Tévedés, az interrupt, akárcsak a signal kezelés a multithreading egy formája. Ebből az állításodból csak annyi igaz, hogy a 80-as években még nem "multithreading"-nek hívták ezt, hanem "TSR"-eknek.

Ráadásul mivel minden processz tartalmaz legalább egy szálat, ezért több szál kezelése nélkül nem lehet több processzt sem kezelni, továbbá az, amit te multithreading alatt értesz (Win32 Thread vagy pthread), az nem is architektúrafüggő, hanem pusztán szoftveres implementáció. Ami azt illeti, sem a Windows, sem a Linux sem használta x86-on a hardveres taszkkapcsolást, kizárólag szoftveres implementációt használt minden mainstream OS, még akkor is, ha egyébként az architektúra támogatta volna. Ennek oka az, hogy x86-on a hardveres taszkkapcsolás lassú, és mivel a GDT mérete limitált, csak kevés szálat lenne képes kezeli.

Érdekesség, hogy multitasking megvalósítható olyan architektúrán is, ami egyáltalán nem támogat semmiféle megosztást (azaz nincs virtuális memória, sem taszkleíró, sem fegyülelő mód, sem védelem, se semmi), lásd Minix2 fordítható 8086-ra, vagy a Contiki, ami C=64-en, ATMEL-en és STM-en is preemptív multitaszkinggal fut, hardveres támogatás nélkül, csupán szoftveresen implementálva. Ez azért lehetséges, mert az interrupt eleve a multithreading egyik formája, és ha van multithreading, akkor már a multitaszk is implementálható hardveres támogatás nélkül.