kvp#4
"Komolyan ugy gondolod, hogy egy mai OS-en egyetlen alkalmazas eseten egyszerre csak egy thread fut?"
Sajnos jellemzoen igy irjak meg oket, meg mindig. Egyebkent az android-ban a gui szalbol csak 1 van, bar a 2.x ota legalabb minden alkalmazasnak van sajatja, tehat csak magukat tudjak kiakasztani. Mondjuk egy voip alkalmazasnal vagy media lejatszonal normalis, ha a gui szal melle van egy real time szal is ami a media tartalmakat kezeli. Aztan minden szolgaltatasnak es komponensnek van sajatja, de azok mas programok, sajat linux process-el.
"Persze, mivel egyebkent rendszeresen osszezavarjak egymast a threadek."
Nem zavarjak, csak hajlamosak elvenni egymas elol a gepidot. Ha viszont tobb mag van, akkor egy darab rosszul tervezett 100%-on futo szal sem kepes 1 magnal tobbet megenni. Mar csak az a kerdes, hogy hany ilyen rosszul tervezett programot rak fel a felhasznalo, mert ha tobbet mint a magok szama-1, akkor szaggatni fog az egesz. A linux sajnos nem hard real time rendszer, a preemptiv multitask pedig nem kepes megfeleloen kezelni a hibas programokat ha azok rendelkeznek cpu joggal. (tehat nem direkt alacsony prioritasra lettek allitva)
Egyebkent jol megirt os-ek eseten kooperativ multitask-al is jol mukodik minden, ilyen volt a regi macos is (a macos 9-ig). Ott a win 1.0-ahoz is lemasolt modon minden egy szalon futott es a programok onket adtak at egymasnak a vezerlest, tobbnyire a gui uzenetfogado fuggveny ciklusbol torteno meghivasaval. Ezt javitotta a win32 api minden alkalmazashoz 1-1 ilyen ciklusra, aztan kesobb minden szalhoz 1-1 ciklusra. Az andoid alapbol 1 gui szalat indit, 1 ilyen message ciklussal, tehat a win32 stilusu uzenetkezelest hasznalja. Ha ez a szal tul hosszu ideig nem hivja meg az uzenet fogado fuggvenyt vagy tul sok uzenet gyulik fel, akkor irja ki a rendszer, hogy az alkalmazas nem valaszol. Viszont ha meg-meghivja, csak kozben tul sokat szamol, akkor csak siman szaggatni fog a rendszer, de a felhasznalo nem latja az okot.
ps: Erdemes megnezni neha mi megy az android felulete alatt a linux retegben, mind process, mind szal, mint kommunikacios szinten. Ahhoz kepest az x11 egy letisztult rendszer. Viszont pont ez adja azt a flexibilitast es skalazhatosagot ami miatt az android barmin elmegy, kenyerpiritotol cluster-ig.