Skoda ze jste nezminit nejlepsi husarsky kousek v dejinach OS pesonalnich pocitacu.
Kdyz Apple prechazel z platformy CPU Motorola 68040 na CPU PowerPC musel prepsat cely OS.
Coz se samozrejme nedalo stihnout ... Takze prvni Apple PowerMac prichazely k zakaznikum s malinkou casti OS napsanou pro PowerPC a s emulatorem CPU 68040 a teprve jak prichazeli patche tak se casti OS napsane pro motorolu nahrazovali temi nativnimi pro PowerPC.
Proste vam bylo jedno jestli aplikace je napsana pro 68040 nebo PowerPC, bezela.
Ztrata vykonu pri emulaci zakazniky netrapila, protoze emulovany program byl stale rychlejsi nez na puvodnim stroji ;-)
Ono s tim Palmem je to taky takovy podobny PC versus Mac. Paralel by se dalo najit spousty. Par z nich:
nejvetsi trh-USA
zmineny prechod platformy Dragonball -> ARM
nikdy nemel poradnej multitasking a nikomu to nevadilo;) - jak je to multitaskingem v OS 5.0 mi nikdo poradne nerekl a nevysvetlil jak to ten realplayer dela;)
uzivatele se platformy drzi kvuli softwaru a snadnemu pouzivani
os je designovan pro snadne ovladani palmu, nikoli pro ozdobu
Palm vyvijel Palm OS Cobalt, ktery mnel mit preemptivni multitasking, hi-res rozhrani atd. Proste prevratne zmeny. Pred nakou dobou oznamil ze hodle postavit svy palmy na linuxu. Je jasne ze, z toho vznikne podobny hybrid jako Mac OS.
Takze ze by se historie opakovala?
Nicmene v jedny paralele se to rozchazi a tou je cena. Mac byl vzdy ,,ten drahej"
multitasking na PalmOS je robeny podobne ako pod MSDosom, cize obdoba TSR (s nejakou malou podporou OS). Ono, PalmOS je v skutocnosti multitaskovy, len prepinanie taskov je vyvolane uzivatelom :-).
Genialne je nepouzitie koncepcie "spustania programu", program jednoducho je ulozeny v operacnej pamati a nie je rozdiel medzi spustenim a prepnutim (az na tie externe pamatove karty).
Ale na druhej strane, programuje sa pod tym znacne komplikovane.
Je to OT, ale kdyz uz jsme u paralel s Palmem: Stare 68k procesory v Palmech byly zjednodusene 68k procesory z prvnich Macu. Palm OS navic adoptoval filosofii prostredku (resources) pro strukturovane ulozeni dat a typu a tvurcu (types and creator) pro typy souboru a asociaci s aplikacemi, API Palm OS jako se napadne podoba staremu macovskemu API atd. A mohl bych pokracovat. Hlavne doufam, ze se Palmu povede ten prerod, co ted planuji, stejne jako se to povedlo Apple. Jinak totiz zahynou jedine pouzitelne handheldy., resp. jedine handheldy, ktere se ovladaji natolik dobre, ze vyhovuji i zhyckanym Macarum;).
No jestli pod PalmOS programujete, tak je docela zvlastni ze o nem mate tak nespravne predstavy nebo to velmi nesikovne popisujete.
Nevim o nicem co by v PalmOS pripominalo TSR programy v dosu a melo resit multitasking. Na preruseni se nikdo nenavesuje. Rezidentni jsou sice svym zpusobem vsechny programy protoze jsou v RAM nebo ROM a jsou schopny bezet 'in place' ale s TSR to fakt nema spolecneho nic. V jednu chvili je 'spusten' pouze jeden program ve smyslu ze se mu v pameti inicializuje datovy segment s globalnimi promennymi a patri mu UI thread.
Mozna maji s TSR neco spolecneho tzv. 'hacky' ktere patchuji API systemu aby ponekud upravily funkcnost, ale ani tam nejde o multitasking a neni to bezny zpusob programovani pod PalmOS.
Koncepce 'spusteni programu' samozrejme pouzita je. Klikne se v launcheru na ikonu a program je spusten a bezi hlavni funkce PilotMain() se smyckou zprav. Zadne 'prepnuti' neexistuje. Ze je zvykem ze si aplikace pred ukoncenim sama zapamatuje svuj stav a po startu se ho snazi obnovit a vypadat stejne je vec jina a nemusi to tak byt pokud se programatorovi nechce.
Jinak jeste poznamka k nemultitaskingu OS. Jadro PalmOS (mikrokernel od firmy Kadak) je uz od uplneho zacatku preemptivne multitaskove. Vyuziva ho vsak pouze system nebo systemove aplikace v ROM pro programatory z licencnich duvodu nikdy nebylo zverejneno API ale funguje. Program Hotsync si treba v palmu spousti novy thread ktery komunikuje s PC. I debugger nebo TCP/IP stack maji svoje thready. Je na internetu i programek s ukazkou jak muze program spustit sam sebe jeste jednou na pozadi (zdrojak mam doma a asi bych nasel i bookmark na nej). Samozrejme je to nepodporovane ale bezi to treba na OS 3.5 stejne jako 5.0. Omezeni je ze funkce UI (prace s okny, smycka zprav) jdou volat jenom z jednoho hlavniho UI threadu v systemu jinak hrozi deadlocky a pady systemu. Celkovy pocet threadu je velmi omezeny (u OS<5 myslim v radu jednotek).
V OS 5.0 uz neni Kadak kernel ale znovu napsany preemptivni kernel v ARM kodu, ktery opet interne podporuje vice vlaken (o procesech nema u PalmOS cenu mluvit protoze je jeden adresovy prostor a programy se do pameti odnikud nenacitaji). Real player nedela nic zvlastniho. Pro prehravani zvuku je v jadru OS5 thread ktery k tomu jde konecne oficialne pouzit. Co je na nem zvlastniho je akorat to ze je to ARM nativni aplikace s ARM nativnima sdilenyma knihovnama, kterou pro OS5 oficialne take vytvorit nejde.
Proste u Palm/PalmSource drzi hodne informaci o OS pod poklickou jenom pro sebe a pro par vyvolenych a taji je i pred beznymi vyvojari tretich stran. Uplny opak open source. Ani Microsoft myslim tak nehazi klacky pod nohy vlastnim vyvojarum jako Palm. Tezko rict jestli to je umysl nebo neschopnost. Asi kombinace obojiho :)
Jeste by jsem se zeptal na ten multitasking v palmu, napr aplikace Chatopus si klidne bezi na pozadi, udrzuje spojeni pres TCP/IP a ceka na prichozi zpravu, pak si ji klidne oznami a je jedno ze mam zrovna spusteny jiny program v kterem pracuji, nebo ze jsemalm "vypnul - uspal" zapne vybraci a zacne blikat led.
Jestli tohle neni multitasking tak uz co ? a pokud tohle nestaci tak jaky uz by kdo chtel ???
No jestli je to multitasking, tak to co jsi popsal je urcite multitasking kooperativni, protoze tak uplne jedno co mas za spusteny program to neni. Tyhle veci se dejou jenom kdyz ten hlavni program bezi ve smycce zprav. Kdyby neco delal nebo vytuhl tak nic blikat nebude, prichozi zprava se neukaze a dokonce se palm ani nemusi dat vypnout vypinacim tlacitkem.
Co ma PalmOS misto praveho multitaskingu jsou tzv 'notifikace' cili i nebezici program (chatopus,datebook,..) se muze systemu prihlasit ze chce byt upozornen pokud se stane urcita akce (prijdou data do urciteho TCP socketu, aktualni cas je x, ..) a pokud se system dostane k procesoru skrz hlavni smycku zprav hlavniho programu, posle notifikace registrovanym programum. Ten hlavni program zustane porad v pameti a ty co byly registrovane ke konkretni udalosti jsou zavolane se specialnim kodem ze jde o notifikaci a at si rychle udelaji co chteji. Pak se to zpet vrati do smycky zprav hlavniho programu a tomu jenom muze byt divne ze funkce SysHandleEvent nebo EvtWaitForEvent nebo jak se jmenuje trvala nejak dyl nez normalne :)
pojdem kusok OT:
zda sa ze palmom kusok rozumies :) nevedel by si ma (a urcite aj inych zaujemcov) nasmerovat na nejake zaujimave weby s problematikou vyvoja app pre palm ? dakujem.
gcc toolchain pro palmos je tady http://prc-tools.sourceforge.net/
a je zahrnuty i v relativne novem vyvojovem prostredi zdarma zalozenem na eclipse http://www.palmos.com/dev/tools/dev_suite.html K stazeni je myslim nutna registrace. Obsahuje ale vsechno nutne (compiler, SDK - dokumentace, zdrojaky vestavenych aplikaci, emulatory pro OS <=4.x, simulatory pro OS>=5.x). Pro OS<=4 byly i zdrojaky velke casti OS (bez kadak kernelu) ale to uz bohuzel stahnout nejde. Pry je to 'docasne' zruseno.
Pokud myslis, ze cena MACa je vyšší, tak si prosim připočti k ceně PC cenu OS (WIN ci kvalitni UNIX s podporou), cenu dalsiho softwareu jako OFFICE a pod. Dale by sis mel uvedomit, ze rychlost procesoru PowerPC neodpovida vykonově stejné rychlosti Intel platformy, PowerPC jsou při stejné rychlosti řádově dvakrát výkonnější, ostatně AMD to má stejné, ale pro "marketing" uvádí také rychlost procesorů jako rychlost odpovídající částěčně Inteláckým procesorům. 2800+, 3000+ apod. Intel používá k výpočtům v jádře kolem 15 kroků/na jeden výpočet, IBM PowerPC stačí pouze 8 kroků. Celkově by se dalo polemizovat i o dalších hlodech. Ostatně podobnou srovnávací analýzu nedávno provedli mezi Dellem a Applem a odpovídající modely Appleu (nejen mezi stolními počítači ale také notebooky) byly vždy levnější.