Hlavní navigace

Historie vývoje grafického uživatelského rozhraní (3)

23. 9. 2010
Doba čtení: 14 minut

Sdílet

Ve třetí části již samostatného seriálu o historii vývoje grafického uživatelského rozhraní se zaměříme na vývoj GUI v polovině osmdesátých let minulého století. Jednalo se o poměrně přelomovou dobu, během níž vznikly jak nové typy osobních počítačů, tak i mnoho systémů s grafickým uživatelským rozhraním, z nichž některé se vyvíjí dodnes.

Obsah

1. Osobní počítače a pracovní stanice založené na mikroprocesorech Motorola 68000

2. 1985 + 68000 = GUI

3. Základní vlastnosti mikroprocesoru Motorola 68000

4. Pracovní stanice Sun-1

5. Pomocný modul pro řízení přístupu do paměti

6. Grafický subsystém počítače Sun-1

7. Hardwarová podpora pro provádění rastrových operací

8. Obsah následující části seriálu

9. Odkazy na Internetu

1. Osobní počítače a pracovní stanice založené na mikroprocesorech Motorola 68000

V předchozí části nově založeného seriálu o historii vývoje grafického uživatelského rozhraní jsme se zabývali především osobními počítači Apple Lisa a Macintosh. Vývoj těchto strojů začal již na konci sedmdesátých let minulého století, ovšem komerčně dostupné začaly být tyto počítače až od roku 1983 (Apple Lisa), popř. od roku 1984 (Macintosh 128k). Oba zmíněné typy počítačů měly, jak se později ukázalo, velký vliv na další vývoj GUI. V případě počítače Apple Lisa jeho konstruktéři poměrně rychle zjistili, že trh je do značné míry citlivý na celkovou cenu počítače a současně musí grafické uživatelské rozhraní dostatečně rychle reagovat na akce prováděné uživatelem. Osobní počítač Macintosh naproti tomu nabídl uživatelům dostatečný „komfort“, i když, což je možná poněkud paradoxní, kapacita jeho operační paměti byla oproti počítači Apple Lisa pouze osminová (právě cena operační paměti se velkou měrou podílela na celkové ceně Apple Lisy).

pc74

Obrázek 1: Obálka časopisu Byte, ve kterém je obsáhlá recenze na dva vzájemně nekompatibilní počítače firmy Apple – Apple Lisa a Apple IIe. Zatímco Apple IIe se stal velmi populárním modelem (a jedním z nejpopulárnějších osmibitových počítačů vůbec), Apple Lisa na trhu zcela propadla i přesto, že nabízela revoluční operační systém.

V polovině osmdesátých let minulého století se však vývojem počítačů, které by měly dostatečný výpočetní výkon pro provozování plnohodnotného grafického uživatelského rozhraní, začalo zabývat větší množství firem, nejenom Apple. Dokonce můžeme vysledovat několik vývojových směrů. V první linii byly firmy, které již vyráběly osmibitové domácí počítače a s klesající cenou pamětí a rostoucím výkonem procesorů (Moorův zákon) se rozhodly, že se začnou zabývat i konstrukcí osobních počítačů. Z těch nejznámějších firem se samozřejmě jedná o Atari Corporation s počítačovou řadou Atari ST (1985) a Commodore International s počítači Amiga (taktéž 1985). Samozřejmě, že kromě těchto počítačů, které byly zacíleny především na domácí uživatele (i když se Atari ST používalo v hudebních studiích a Amigy například pro titulkování filmů) existovaly ještě další směry vývoje. Jeden z nejdůležitějších „alternativních“ směrů byl vývoj (grafických) pracovních stanic a o několik let později vznik X terminálů.

pc74

Obrázek 2: Zakulacené rohy oken zdaleka nejsou výdobytkem moderních operačních systémů – používala je i Apple Lisa a dokonce se objevily i ve vývojové verzi operačního systému počítače Alto firmy Xerox.

2. 1985 + 68000 = GUI

Z historického hlediska je zajímavé, že většina osobních počítačů, o nichž jsme se zmínili v předchozí kapitole, byla založena na mikroprocesoru Motorola 68000 nebo na některé variantě tohoto procesoru (osobními počítači IBM PC se nebudeme v tomto článku zabývat, protože na nich plnohodnotné grafické uživatelské rozhraní, například GEM, bylo implementováno až o několik let později). Mikroprocesor Motorola 68000 byl mj. použit i v prvních typech grafických pracovních stanic, například v systémech Sun-1 či IRIS 1000 firmy SGI. Firmy konstruující osobní počítače a pracovní stanice se pro použití tohoto typu mikroprocesoru samozřejmě rozhodly na základě jeho vlastností, především poměru cena/výkon, přičemž výpočetní výkon ovlivňuje nejenom hodinová frekvence, ale též vlastnosti instrukční sady (ortogonalita), počet a bitová šířka pracovních registrů, organizace operační paměti (přístup po segmentech vs. plochý paměťový model) aj.

Obrázek 3: Šestnáctibitový mikroprocesor Intel 8086.

Již samotný vývoj mikroprocesoru Motorola 68000 je zajímavý a poněkud odlišný od vývoje, který zvolila konkurenční firma Intel. Intel se totiž snažil vyrábět do značné míry kontinuální řadu mikroprocesorů, počítaje osmibitovým procesorem Intel 8008, přes mnohem známější procesory Intel 8080 a Intel 8085 až po šestnáctibitový procesor Intel 8086, popř. jeho velmi úspěšnou variantu Intel 8088 se zmenšenou šířkou externí sběrnice, který byl použit v prvních osobních počítačích IBM PC. Jak architektura, tak i instrukční sada mikroprocesorové řady x86 je vlastně dodnes ovlivněna snahou o dosažení zpětné kompatibility se stařičkými osmibitovými mikroprocesory Intel. Procesory 8086 a 8088, které z větší části navrhoval Stephen Morse, navíc obsahují (i díky snahám o kontinualitu vývoje) šestnáctibitovou interní sběrnici a tudíž i šestnáctibitové adresové i datové registry, což poměrně zásadním způsobem ovlivnilo například způsob výpočtu efektivních adres – jedná se o (nechvalně) známý způsob adresování přes dvojici šestnáctibitových registrů segment:offset.

pc7701

Obrázek 4: Mikroprocesor Motorola M68000.

3. Základní vlastnosti mikroprocesoru Motorola 68000

Konstruktéři mikroprocesoru Motorola 68000 se – na rozdíl od svých kolegů z firmy Intel – rozhodli, že se namísto snahy o zachování zpětné kompatibility se svým osmibitovým mikroprocesorem Motorola 6800 či paralelně navrhovaným procesorem Motorola 6809 (taktéž osmibitovým, ovšem v mnoha ohledech vylepšeným), vzdají pokusu o zpětnou kompatibilitu a namísto toho navrhnou mikroprocesor umožňující „dopřednou“ kompatibilitu – jinými slovy, že vytvoří takovou architekturu, kterou bude možné v budoucnu dále snadno vylepšovat, urychlovat a rozšiřovat. Výsledkem jejich snahy byl plně 32bitový mikroprocesor s do značné míry ortogonální instrukční sadou a s relativně velkým množstvím datových registrů D0D7 i adresových registrů A0A7, z nichž každý měl šířku plných 32bitů, což byl velmi podstatný rozdíl oproti omezeným možnostem použitým u mikroprocesorů Intel řady x86, kde se sada registrů i způsob adresování musel několikrát změnit (přesněji řečeno rozšiřovat, a to s použitím prefixů u instrukcí, režimů činnosti procesoru i dalších adresovacích režimů).

pc7703

Obrázek 5: Osobní mikropočítač Atari 520 ST postavený na mikroprocesorech řady M68000.

Rozdělení sady všech šestnácti registrů na adresové a datové umožnilo konstruktérům dosáhnout paralelního zpracování jednotlivých kroků v instrukci, tj. současně bylo možné provádět nějaký výpočet či přenos dat a navíc se již mohl měnit obsah adresového registru (operace provádějící mj. i post-inkrementaci či pre-dekrementaci adresového registru jsou asi nejlepším příkladem). To, že každý adresový registr měl šířku 32 bitů taktéž znamenalo, že každý z těchto registrů mohl sloužit pro zápis či čtení obsahu libovolné paměťové buňky v rozsahu 4 GB, i když fyzicky bylo možné k původnímu mikroprocesoru Motorola 68000 připojit „pouze“ 16 MB RAM (jedná se o jeden z důsledků již zmíněné dopředné kompatibility – dobře napsané programy nebylo nutné při přechodu na modernější typ procesoru měnit). I přes některé nedostatky tohoto mikroprocesoru (pravděpodobně nejzávažnějším byla u původního typu absence jednotky pro ochranu paměti – chráněný režim) byl procesor Motorola 68000 použit i u pracovní stanice Sun-1, kterou si popíšeme v navazujících kapitolách.

pc7702

Obrázek 6: Mikroprocesor M68030 na základní desce desce osobního počítače Macintosh Color Classic.

4. Pracovní stanice Sun-1

Jednou z prvních komerčně nabízených a prodávaných pracovních stanic podporujících plnohodnotný grafický výstup na monitoru, byl počítač nazvaný Sun-1 z roku 1982. Jednalo se o počítač určený pro práci v UNIXu, který se v obvyklé (základní) konfiguraci skládal z takzvané procesorové desky (Sun Processor Board). Byla to karta propojená s ostatními částmi počítače přes sběrnici; tato karta obsahovala operační paměť s kapacitou 256 kB, mikroprocesor Motorola 68000 nebo Motorola 68010 taktovaný na 10 MHz a obvody zajišťujícími ochranu operační paměti. Kapacitu operační paměti bylo možné zvýšit přidáním dalších rozšiřujících karet na 512 kB nebo dokonce na celý jeden megabajt. Druhou částí počítače byl grafický subsystém implementovaný na zvláštní kartě a třetí částí síťové rozhraní Ethernet implementované taktéž na zvláštní kartě (síťové rozhraní a jeho plnohodnotná podpora operačním systémem ostatně představovalo jeden z velmi důležitých prvků, který odlišoval pracovní stanice od osobních počítačů).

Obrázek 7: Pracovní stanice Sun-1.

Pro pracovní stanice Sun-1 byla vyvinuta vlastní varianta Unixu. V roce 1982, tj. v době, kdy začal být tento počítač prodáván, se k němu dodával Sun UNIX 0.7 odvozený od UniSoft UNIXu verze 7. Ovšem po poměrně krátkém čase se přešlo na SunOS 1.0 založený na BSD 4.1. SunOS byl zpočátku nabízen právě pod tímto jménem, teprve později se přešlo, především z marketingových důvodů, k pojmenování Solaris (původní jméno však na některých místech systému zůstalo zachováno). Hlavním důvodem, proč se vůbec popisem pracovní stanice Sun-1 v tomto seriálu zabýváme, je grafické uživatelské rozhraní. Zpočátku se jednalo o systémy SunTools (SunView) a NeWS, který se však i přes některé své technické přednosti nakonec neujal. Význačné a zajímavé vlastnosti systému NeWS (z nichž některé byly nakonec přejaty do konkurenčního systému X Window System) si popíšeme v následující části tohoto seriálu.

Obrázek 8: Moduly pracovní stanice Sun-1.
Zdroj: The SUN Workstation Architecture, Technical Report No. 229

5. Pomocný modul pro řízení přístupu do paměti

Již ve třetí kapitole jsme si řekli, že původní mikroprocesor Motorola 68000 neobsahoval modul pro ochranu (řízení přístupu do) operační paměti ani pro podporu paměti virtuální, což je ovšem důležitá součást systémů, na nichž má být současně provozován větší počet úloh (k Sun-1 bylo dokonce možné připojit terminály pomocí sériového portu, samotný operační systém umožňoval současnou práci několika uživatelů současně). Z tohoto důvodu firma Sun Microsystems vytvořila vlastní řídicí modul, který tuto činnost zajišťoval. Sice je pravda, že existoval podobný obvod nesoucí číselné označení 68451 z dílny Motoroly, ten však nebyl příliš oblíbený, protože v některých případech zpomaloval přístup do paměti. Modul firmy Sun zajišťoval jak stránkování paměti, tak i její ochranu před neoprávněným přepsáním. Všechny adresy, které generoval procesor, byly tímto modulem pomocí dvojice mapovacích tabulek nazvaných Segment Map a Page Map převáděny na adresy fyzické.

Obrázek 9: Procesorová deska počítače Sun-1.

Celý rozsah operační paměti byl zmíněným řídicím modulem rozdělen na stránky o velikosti 2 kB a na vyšší úrovni na segmenty, z nichž každý měl velikost 32 kB. U každého segmentu se pomocí čtyř bitů nastavoval režim přístupu do paměti – povolení čtení, povolení zápisu, superuživatelský režim atd. Maximální počet stránek byl roven 1024, což odpovídá dvěma adresovatelným megabajtům (1024×2048 bajtů), ale díky stránkování bylo možné adresovat až 8 MB (23 bitů adresy). Důležitým prvkem celého systému byl čtyřbitový context registr, který, poněkud zjednodušeně řečeno, obsahoval identifikátor aktuálně běžícího procesu. Tento registr bylo možné měnit jen jádrem operačního systému. Pokud se každému procesu přidělila stejná paměť (to je samozřejmě možné, jak na úrovni mapy segmentů, tak i mapy stránek), bylo možné zajistit komunikaci procesů pomocí sdílené paměti. Princip mapování logické adresy na adresu fyzickou je zobrazen na následujícím obrázku:

Obrázek 10: Princip mapování logické adresy na adresu fyzickou pomocí modulu pro řízení přístupu do paměti počítače Sun-1. Povšimněte si, že obě mapovací tabulky obsahují v každém řádku několik řídicích bitů, které jsou mj. použitelné při ochraně některých stránek paměti před přepsáním. Zkratka RFU znamená „Reserve for Future Use“, tj. jedná se o součást adresy, která pro Sun-1 byla nastavovaná na samé nuly.
Zdroj: The SUN Workstation Architecture, Technical Report No. 229

6. Grafický subsystém počítače Sun-1

Nedílnou součástí pracovní stanice Sun-1 byl grafický subsystém umístěný na samostatné desce plošných spojů, jehož ústředním prvkem byl framebuffer (grafická paměť) umožňující uložení bitmapy s rozlišením 1024×1024 pixelů a taktéž modul nazvaný RasterOp, který dokázal provádět některé základní operace nad rastrovým obrazem, včetně blokového přenosu dat (podobnost s minule popsanou operací BitBLT není náhodná). Vraťme se však k framebufferu. Ten byl poněkud zvláštní kvůli dvěma vlastnostem. První vlastností bylo to, že z uložené bitmapy o rozlišení 1024×1024 pixelů se na monitoru ve skutečnosti zobrazovala pouze oblast o velikosti 1024×800 pixelů, popř. 800×1024 pixelů, podle aktuálně nastavené orientace monitoru (již v předchozích dvou dílech tohoto seriálu jsme se dozvěděli, že monitor postavený na výšku v žádném případě není žádný moderní vynález, ale věc používaná takřka od vynálezu GUI).

Obrázek 11: Deska obsahující grafický subsystém počítače Sun-1. Na pravé straně jsou patrné konektory pro přivedení všech důležitých signálů do monitoru.

Zbylý obdélník o velikosti 1024×224 popř. 224×1024 pixelů se využíval pro uložení bitových map znaků, kurzorů, ikon i dalších grafických symbolů, ale i pro meziuložení obdélníkových částí oken při jejich posuvu na obrazovce. Druhou zvláštností framebufferu je to, že byl implementován pomocí dvoubránové (dvouportové) paměti, přičemž první brána byla použita pro přístup mikroprocesoru k framebufferu (včetně obnovy obsahu DRAM) a brána druhá pro výstup grafické informace. Použití dvoubránových pamětí je sice dražší řešení (zejména v současnosti), ovšem technologicky mnohem jednodušší a rychlejší než řešení, kdy se musí mikroprocesor, obvod obnovující obsah DRAM a generátor video signálu dělit o jedinou adresovou a datovou sběrnici framebufferu.

Obrázek 12: Rozdělení framebufferu na viditelnou a neviditelnou oblast.
Zdroj: The SUN Workstation Architecture, Technical Report No. 229

7. Hardwarová podpora pro provádění rastrových operací

Součástí grafického subsystému počítače Sun-1 byl i obvod podporující provádění blokových přenosů dat a taktéž operací prováděných nad obdélníkovými obrázky. Funkce tohoto obvodu odpovídá minule popsané operaci BitBLT, ovšem s tou zvláštností, že byly podporovány operace s jedním až třemi operandy – zdrojovou bitmapou, cílovou bitmapou a maskou představovanou šestnáctibitovým vzorkem. Celkem bylo možné si vybrat jednu z 256 různých booleovských funkcí, z nichž ovšem jen některé měly skutečný význam – například smazání obdélníku (černou barvou), vyplnění obdélníku bílou barvou, vyplnění obdélníku vzorkem, inverze, kopie, kopie inverzní bitmapy atd. Rychlost provádění rastrových operací dosahovala šestnácti pixelů za mikrosekundu, což při přepočtu znamená, že celou obrazovku bylo možné vymazat/vyplnit za cca 50 milisekund a přenést (například při scrollování) za 100 milisekund, což jsou s ohledem na dobu vzniku tohoto počítače velmi příznivé hodnoty.

Obrázek 13: Lokální počítačová sít s pracovními stanicemi Sun-1 a souborovým serverem.
Zdroj: The SUN Workstation Architecture, Technical Report No. 229

8. Obsah následující části seriálu

V následující části tohoto seriálu si nejdříve popíšeme již výše zmíněný systém NeWS používaný na pracovních stanicích firmy Sun. Dále se budeme věnovat těm systémům s grafickým uživatelským rozhraním, které byly v osmdesátých letech minulého století používány na osobních počítačích. Zaměříme se především na systém GEM (Graphical Environment Manager) používaný jak na počítačích Atari ST (jako součást operačního systému TOS a později MiNT), tak i na počítačích kompatibilních s IBM PC. Nakonec si řekneme základní informace o AmigaOSWorkbenchem a nezapomeneme ani na historická Windows 1.0, Windows 2.0 a Windows 2.1 a samozřejmě ani na GEOS, později prodávaný pod názvem GeoWorks Ensemble (mimochodem, celý GEOS byl naprogramovaný v assembleru a i díky tomu byl rychlejší než v té době používané Microsoft Windows).

Obrázek 14: GEM na počítačích Atari ST.

root_podpora

Kromě osobních počítačů se taktéž vyvíjely i systémy s Unixem, což posléze vedlo ke vzniku systému X Window (používaného ve verzi 11 dodnes), který byl založen na původním a dnes již pozapomenutém systému W Window běžícím na operačním systému s poněkud podivným názvem V. Ostatně písmeno „X“ v názvu X Window vzniklo na základě toho, že v abecedě leží za znakem „W“ (dokonce existuje i prozatím nedokončený systém Y Window, ovšem tím se zabývat nebudeme).

Obrázek 15: Grafické uživatelské rozhraní systému GEOS.

9. Odkazy na Internetu

  1. Dobová dokumentace ke stanici Sun-1
    http://www.bit­savers.org/pdf/sun/su­n1/
  2. Obrázky Sun-1, manuálů a základních desek
    http://www.so­livant.com/sun100/
  3. SUN display (computer museum)
    http://infolab­.stanford.edu/pub/vo­y/museum/pictu­res/display/SUN­.htm
  4. Sun-1
    http://en.wiki­pedia.org/wiki/Sun-1
  5. Online Sun Information ArcHive – Sun-1
    http://www.sun­stuff.org/har­dware/systems/sun1/Sun-1/
  6. Birth of a Standard: The Intel 8086 Microprocessor
    http://www.pcwor­ld.com/article/146957/b­irth_of_a_stan­dard_the_intel_8086_mi­croprocessor.html
  7. A Brief History of Computing
    http://trilli­an.randomstuf­f.org.uk/~step­hen/history/8086­.html
  8. For Old Parts, NASA Boldly Goes . . . on eBay
    http://www.ny­times.com/2002/05­/12/technology/e­business/12NA­SA.html?pagewan­ted=2
  9. Intel 8086
    http://en.wiki­pedia.org/wiki/In­tel_8086
  10. Motorola 68000
    http://en.wiki­pedia.org/wiki/68000
  11. Ivan Sutherland's Sket­chpad
    http://www.you­tube.com/watch?v=mOZ­qRJzE8×g
  12. Sketchpad (in Vision and Reality of Hypertext and Graphical User Interfaces)
    http://www.mpro­ve.de/diplom/tex­t/3.1.2_sketchpad­.html
  13. Sketchpad
    http://en.wiki­pedia.org/wiki/Sket­chpad
  14. The Early History of Smalltalk
    http://gagne.ho­medns.org/~tgag­ne/contrib/Ear­lyHistoryST.html
  15. History of special effects
    http://www.pbs­.org/wgbh/nova/spe­cialfx2/1960.html
  16. WIMP (computing)
    http://en.wiki­pedia.org/wiki/WIM­P_(computing)
  17. Xerox Star
    http://en.wiki­pedia.org/wiki/Xe­rox_Star
  18. The Xerox Star 8010 „Dandelion“
    http://www.di­gibarn.com/co­llections/sys­tems/xerox-8010/index.html
  19. Graphical user interface (Wikipedia)
    http://en.wiki­pedia.org/wiki/Grap­hical_user_in­terface
  20. The Real History of the GUI
    http://articles­.sitepoint.com/ar­ticle/real-history-gui
  21. PARC company (Wikipedia)
    http://en.wiki­pedia.org/wiki/PAR­C_(company)
  22. Computer-History: Xerox Alto
    http://www.mr-gadget.de/apple/2004–01–15/computer-history-xerox-alto
  23. bitsavers.org
    http://www.bit­savers.org/
  24. Dokumenty k počítači Xerox Alto na bitsavers.org
    http://www.bit­savers.org/pdf/xe­rox/alto/
  25. The ALTO Computer
    http://www.ma­niacworld.com/al­to-computer-video.html
  26. Xerox Alto Operating System and Alto Applications
    http://www.di­gibarn.com/co­llections/sof­tware/alto/in­dex.html
  27. Xerox Alto (Wikipedia)
    http://en.wiki­pedia.org/wiki/Xe­rox_Alto
  28. BitBLT routines (1975)
    http://www.bit­savers.org/pdf/xe­rox/alto/BitBLT_Nov1975­.pdf
  29. Alto Computer Screenshots
    http://www.bit­savers.org/pdf/xe­rox/alto/AltoS­creenshots.pdf
  30. BitBlt in Squeak
    http://wiki.squ­eak.org/squeak/189
  31. Bitmaps, Device Contexts and BitBlt
    http://www.win­prog.org/tuto­rial/bitmaps.html
  32. BitBlt Game Programming Tutorial
    http://www.fre­evbcode.com/Show­Code.asp?ID=3677
  33. Bit blit (Wikipedia)
    http://en.wiki­pedia.org/wiki/Bit­BLT
  34. IDirectDrawSur­face5::Blt
    http://msdn.mi­crosoft.com/en-us/library/ms929681­.aspx
  35. The Xerox Alto
    http://toasty­tech.com/guis/al­to3.html
  36. History of the graphical user interface
    http://en.wiki­pedia.org/wiki/His­tory_of_the_gr­aphical_user_in­terface

Byl pro vás článek přínosný?