faraon píše:
...Mimochodem, nebyl by už čas tohle odstřihnout od Vegaslotu do vlastního vlákna PandaDOS? On teda ten Unix původně také vznikl jako počítačová hra...
Pokračování základních úvah o operačním systému pro vývojáře - tj. systém, kde uživatel může spouštět nebezpečné věci (jako DOS program s plným přístupem) a kde může o všem rozhodovat, aniž mu do toho systém stále kecá.
Název, možná RingDOS = zaměření na DOS programy s možností používat ring levely procesoru. Nebo možná zůstanu u svého oblíbeného názvu Litos = Little Operating System. (mé předešlé pokusy:
http://litos.wz.cz/index_cz.htm a předtím
http://litux.wz.cz/).
Jestli se ukáže nadějné s tím začít, tak pak bych vytvořil samostatné fórum, ať se toto fórum nezanáší rozsáhlejším projektem.
Jaké režimy mohou být potřeba:
1) Malý systém DOS (na úrovni mezi DOS 2 a 3 - aby nezabíral moc paměti), systém i programy jedou v 640 KB paměti, zbytek paměti může být plně pod kontrolou DOS programu. Nebezpečný režim, kdy program může udělat cokoliv, včetně vymazání disku, ale může jet např. MOD speaker přehrávač využívající předefinovaný INT 08.
2) V DOS paměti 640 KB jede několik programů v reálném módu, systém mezi nimi přepíná pomocí INT 8. Tedy jednoduchý časový multitask, kdy programy také mohou převzít plné řízení. Tento mód mi připadá nezajímavý - "lepší" programy by měly málo paměti a slabé programy mohou jet stejně i ve virtuálním módu.
3) DOS program jede v reálném módu, systém sídlí v horní 32-bitové paměti. Program může převzít plné řízení. Systémové funkce se volají přepínáním do protect módu a zpět. Výhoda, že systém může být rozsáhlý a přitom v DOS paměti zabírá jen minimum (jen přepínací funkce, které skáčou do horní paměti). Tento režim jen šetří DOS paměť, ale jinak není až tak moc zajímavý. Multitask DOS programů možný jen ve společné DOS paměti, nic moc výhodného. Volání systémových funkcí je dost pomalé. Je nebezpečí, že program přepíše systém v horní paměti (trochu se dá ošetřit klamavým údajem o velikosti RAM).
4) Virtuální protect mód 32-bitů. Spouštěné DOS programy mají svůj virtuální prostor 640 KB, navzájem na sebe nevidí. Je možný multitask více DOS programů + 32-bitové programy. Nevýhoda - DOS program jede v protect módu a nemůže převzít plné řízení, tedy je to spíš pro běžné DOS aplikace. Program je časově přerušován multitaskem - projeví se např. vrčivým zvukem při přehrávání zvuku přes speaker. V tomto režimu nelze spouštět náročné DOS programy, vyžadující plný přístup.
5) 64-bitový protect mód, lze spouštět pouze 32 a 64-bitové aplikace, nelze spouštět DOS programy ve virtuálním módu (CPU to nepodporuje). DOS programy by případně šlo spouštět pomocí VT-x virtualizace.
update: 6) 32/64-bitový protect mód, kdy má program plné řízení počítače. Může běžet multitask, ale nemusí, o tom může rozhodnout program. V podstatě je to varianta běžného režimu v protect módu, kdy program dostane plná práva systému (podobně jako driver).
Vypustil bych módy 2 a 3 jako nevhodné a nepraktické. Mód 6 je alternativou protect módu s plnými právy. Zbylé 3 módy nelze kombinovat dohromady, což znamená řešení - mít 3 samostatné kernely, mezi kterými lze přepínat (pomocí rychlého rebootování). Tohle připomíná start Win95/98: nejdříve se startuje klasický DOS s 640 KB RAM. Z něj lze spouštět náročnější DOS programy, bez podpory multitasku. Tento základní DOS pak může zavést a spustit 32-bitový extender, ve kterém už může jet několik DOS programů současně, v přepínaných konzolích (jako u Linuxu) a také 32-bitové programy, včetně možnosti okenního manažeru. Ale už tam nemůže jet plný DOS program, dokud se extender neukončí a nevrátí se zpět real DOS. Případně se může spustit 64-bit extender, pro nejnáročnější programy (jede rychleji a není omezený RAM).
Použití - nejspíš tedy by se systém po startu choval jako klasický DOS, ze kterého lze spouštět programy. Přes nějaký příkaz by se dal spustit 32-bitový (nebo 64-bitový) mód, ve kterém se lze přepínat mezi konzolami a v nich spouštět DOS nebo 32-bit programy, případně jedna z konzol by byla okenní manažer, kde by se daly spouštět okenní programy. Na rozdíl od Windows by se dal extender ukončit a jít zpět do plného DOS režimu. V Autoexec by se dalo nastavit, aby se startoval rovnou např. okenní mód.
U dřívějších pokusů o systém jsem uvažoval vypustit možnost swapování paměti na disk, protože to je jedna z nejkomplikovanějších věcí v systému a u novějších PC s dostatkem RAM ani není potřeba (naopak to zpomaluje činnost). Ale teď u tohoto systému, když má jet i na slabším hardware, zvažuji zda to bude nutné. Je to přece jen dost nepříjemná věc to podporovat, systém to dost komplikuje (musí se řešit priority odkládání atd.), ale tady asi nebude moc RAM.
Teoreticky by aplikační rozhraní mohlo být kompatibilní s Linuxem, ale v Linuxu je tak šílený nepořádek (např. katastrofální použití adresářů), že tomu bych se raději obloukem vyhnul. Nějaká možnost kompatibility by mohla být potřeba na to, aby se tam daly dodávat drivery zařízení z Linuxu, příp. z Windows.
No jo ale má tohle vlastně význam, když je to jen klasický přepínač mezi DOS a plným systémem?
Možnost výhody bych snad viděl jen v tom, že by se dal udělat systém přehlednější a lidštější než je Linux a přitom méně arogantní než jsou Windows. V obou systémech jsou kvanta nešvarů které by chtělo odstranit, v podstatě v současnosti nevím o systému který bych označil za "dobrý".