Proč šestnáctibitový, 68000 je plně třicetidvoubytová, eventuelní šířka externí sběrnice přeci není rozhodukící. A nemáte tušení jakým mechanismem byla na tomto procesoru řešena virtualizace paměti o níž se zmiňujete ?
Ano, procesor 68000 je samozřejmě třiceti dvoubitový, ale počítač jako celek je šestnáctibitový, tj. šířka datové sběrnice, pamětí, řadiče externích zařízení, grafický subsystém je pouze šestnáctibitový. Je ovšem pravda, že například z tohoto hlediska by bylo první IBM PC pouze osmibitové :-)
Vzhledem k tomu, že Motorola 68000 nepodporoval virtuální paměť (tj. reakci výpadky stránek), musela být virtuální paměť řešena buď programově nebo pomocí přídavného hardware. V levných unixových systémech se například Motorola 68000 používala ve dvojicích, kdy jeden procesor sloužil jako řadič paměti.
Jak tomu je v Lise, přesně nevím, ale předpokládám, že se jedná o čistě programovou virtuální paměť, kdy je využito faktu, že multitasking je kooperativní, takže je možné přesuny do operační paměti provádět při přepínání programů.
Jakýkoliv stroj s 68000 dokáže adresovat 4GB paměti. Fyzicky k němu ale nepřipojíte víc než 16MB. Hledisko bylo čistě ekonomické. Tehdy byl 1MB RAM jako dneska 1GB a hranice 16MB rozhodně nikoho netrápila. Procesor s "více nohama" by akorát prodražoval výrobu svojí i příslušného hardware.
Proc by sestnactibitovy procesor nemohl adresovat 4MB pameti, sirka adresove sbernice nemusi odpovidat sirce datove sbernice a ta zase nemusi odpovidat sirce operandu vstupujicich do ALU (jo, svet je komplikovany). Osmibitaky take (vetsinou :-) zvladaly vic nez 2^8=256 bytu pameti.
Podobne jako v PalmOS ktery si z MacOS tohle vzal. Alokace pameti nevraci pointer ale tzv. handle (neco jako pointer na pointer). Pri praci s pameti si musim jeste handle zamknout a dostanu teprve pointer ktery je platny. Az ho odemknu, zase se mi blok v pameti muze pohnout nebo zmizet. Pokud je pamet fragmentovana nebo pokud neni misto, OS bloky ktere jsou naalokovane ale nezamcene muze volne presouvat v pameti nebo na disk. Vysledek je vlastne takove softwarove MMU - normalni pointer je ekvivalent fyzicke adresy, virtualni adresa je handle.
Shrnuti - misto s pointery se pracuje s handly. A handle se musi zamykat abych dostal pointer. Desna pakarna.
Na druhou stranu se takto da pekne udelat defragmentace pameti, aniz by si toho aplikace nejak povsimnuly - handle se nijak nezmeni, ukazatel, na ktery struktura handle ukazuje se zmenit samozrejme muze.
Je jasne, ze 68000 ma s virtualni pameti problemy, zejmena chybi ochrana pameti, na kterou je vetsinou pres event handler navazana prave jeji virtualizace. Takze jak GEM, tak i Amiga OS bylo mozne krasne obchazet zasahem do jejich datovych struktur ci primo volanim internich funkci jadra :-)