@107
> Symbianissa on tietääkseni todellinen unixeistakin tuttu pre-emptiivinen moniajo, Windowsiin se tuli Windows95:n myötä ja Macintosheihin vasta macosX:n myötä. Käsittääkseni Iphonessa ei tällaista ole, eikä nykyisessä Windowsphonessa.
iOS:ssa on teknisesti täsmälleen samanlainen pre-emptiivinen, eli keskeyttävä, moniajo, kuin OSX:ssakin. Säiettä ajetaan hetki, kunnes se keskeytetään kernelin toimesta, siirretään odottamaan ja seuraava säie otetaan ajoon. Tätä sitten toistetaan kaikille säikeille niin monella corella kuin prosessorista löytyy.
Erona on se, kolmansien osapuolten sovelluksia ajetaan rajoitetummin. Niiden mennessä taustalle, ne jäävät muistiin, mutta pysäytetään lähes välittömästi. Jos sovellukseen palataan, sen ajoa jatketaan. Käyttöjärjestelmällä on oikeus poistaa pysäytetty sovellus muistista milloin tahansa, kertomatta siitä kyseiselle sovelluksille millään lailla. Kun palataan sovellukseen joka oli poistettu muistista edellisen käyttökerran jälkeen, se käynnistetään uudestaan ja jatkuu missä oltiinkin menossa. Toki käynnistymiseen menee hieman enemmän aikaa ja vaatii kehittäjän työtä.
Edellä kuvattuun peruskaavaan on olemassa tiettyjä poikkeuksia, lisäksi puhelimen mukana tulevat sovellukset voivat toimia eri tavoin.
Käyttäjän näkökulmasta sovelluksia ei koskaan suljeta, niiden välillä vain siirrytään. Sovelluksissa ei siis ole mitään quit-vaihtoehtoa. Käyttöjärjestelmä poistaa sovelluksia tarpeen mukaan muistista, täysin näkymättömästi. Käyttäjä ei edes voi tietää onko sovellus johon hän on siirtymässä muistissa vai ei.
Käsittääkseni täsmälleen sama pätee Windows Phone 7:aan. Pienenä kuriositeettina: samanlaisia juttuja on tullut ja tulossa myös OSX:aan. Prosesseja voidaan tappaa muistipaineessa taustalta ja niihin palatessa se käynnistetään uudestaan ja käyttöliittymän tila palautetaan. Sitä ei tietenkään tehdä kaikille, ainoastaan sovelluksille jotka ovat tietoisia tästä ja ovat valinneet osallistuvansa siihen.
|