Tanuljatok már meg OLVASNI. Komolyan, botrányos, amit a HUP közössége magyar nyelvű szövegértés címszó alatt előad.
      
  Ez itt nem teljesen pontos.Vö: "Előrebocsátom, hogy az alábbi definíciók NEM teljesek, szándékosan hiányosak és leegyszerűsítettek, csupán azokat az aspetusokat emeltem ki belőlük, melyek a többszálúság kapcsán relevánsak."
Amit irsz, hogy _csak_ az IP/PC regisztert mented memoriabaNEM EZ VAN ODAÍRVA. Nincs "csak", nem írtam ilyent sehol. Ne képzelj már oda olyan dolgokat, amik nincsenek is ott. Nincs ott semmilyen "csak", mert soha nem is írtam oda.
Amit irsz, hogy _csak_ az IP/PC regisztert mented memoriaba, az a klasszikus megszakitas-hivasHIBÁS. Ad egy, nem is ezt írtam, ad kettő a megszakítás hívás során SEM CSAK az utasításszámláló mentődik, de AZ IS. Már ha x86-on beszélünk, akkor mentődnek még a szegmensszelektorok és veremmutató is, ha az ARM-ről, akkor meg egyik se, mert ott egy külön dedikált regiszterbe kerül a mentett utasításszámláló nem is memóriába, de ennyire aztán végképp nem akartam belemenni a részletekbe, mert még a leegyszerűsített leírás is meghaladja az értelmi képességeit egyeseknek.
Multithreading eseten is mentened kell a processzor belso allapotat, es az adott thread folytatashoz azt vissza kell allitanod 1:1-ben.HIBÁS ez is. Az már a multitasking lenne, amiről itt beszélsz, kevered a dolgokat. Multitaskingnál elvárás ugyanis, hogy az állapot bármikor megszakítható és 1:1-ben helyreállítható legyen, és annál le is van ez írva: "Ilyenkor jellemzően az összes többi regiszter is mentődik az utasításszámlálóval együtt". Multithreadingnél ilyen nincs, ott csak annyi az elvárás, hogy a clobbered registers-ek vissza legyenek állítva, semmi több. Szó sincs a teljes belső processzorállapot mentéséről, még véletlenül se.
De ebben az allapotban (avagy context-ben) benne van nemcsak a IP/PC meg az osszes "egyszeru" regiszter, hanem meg a flag-ek is meg a SIMD, FPU, stb, regiszterek is.Ez is HIBÁS. Ha éppenséggel tudni akarod, akkor a kernel egy kivételkezelőt helyez minden coprocesszor műveletre, ami bebillent egy flaget a taszk állapotleíróban. Taszkkapcsoláskor csakis abban az esetben mentődnek és állítódnak vissza a nem GPR-ek (mint a SIMD és FPU állapotok), ha ez a flag be volt billentve, egyébként le sem szarja őket. De ismételten, ennyire nem akartam belemenni a részletekbe, mert egyeseknek már ez az egyszerűsített leírás is bőven meghaladja az értelmi képességeit.
Ha megnezed a `man 2 clone` leirast, akkor abbol azt lehet latni......akkor pontosan azt látni, mint amit írtam, megint csak kénytelen vagyok ismételni magam, mert nem tudtok olvasni: "A mai kernelekben már kicsit összetettebb dolog amióta léteznek a SYS_set_tid_address, SYS_sched_setscheduler stb. rendszerhívások..."
eseten nagyon figyelned kell hogy a kozos cimterben levo valtozok kozul mi az ami volatile es mi az ami nem.Ez sem pontos. Erre van a thread_local kulcsszó, aminek hatására egy dedikált regiszter relatív címzési módot fordít a fordító, az ilyen tárolási osztályú változókat pedig egy külön szegmensbe gyűjti a linker (Linux-on és Windows-on is egyaránt). - Éppenséggel ha tudni akarod, akkor ezt a SysV ABI definiálja, a dedikált regiszter relatív címzéshez tartozó relokációs rekordoknak meg TLS van a nevükben, lásd például Motorola, Sparc, AArch64 vagy épp x86_64 esetén. - A PE/COFF formátum esetén a működési elv TELJESEN AZONOS, azaz szeparánt szegmens, dedikált regiszter relatív címzés, stb. csak apró implementációs eltérések vannak a SysV-hez képest, ennek a definíciója pedig itt olvasható. Maga a volatile kulcsszó csak annyit tesz, hogy a fordító nem optimalizálhatja ki a változó kiértékelést, azaz magyarul muszáj mindig memóriacímzésű utasításra (LOAD/STORE/MOV) fordítania a rá történő hivatkozásokat, nem tárolhatja azt pékdául átmenetileg egy regiszterben vagy ilyesmi.
ugyanabban a cimterben szakad meg ezert vagy azert (preemption vagy interruption)Hogy mekkora baromságot írtál itt össze, azt hadd ne kelljen részleteznem. Minden pontjában hibás, teljes egészében. A megszakítás független a címtértől, a preemtive és az interrupt pedig nem két külön dolog, hanem az interrupt lehet preemptive vagy sem... De ismételten, ennyire szándékosan nem akartam belemenni a részletekbe, mert egyeseknek már ez az egyszerűsített leírás is bőven meghaladja a szövegértési és értelmi képességeit.